CentOS下web服务安装配置,centosweb安装配置写在前面:操作系统:
CentOS下web服务安装配置,centosweb安装配置写在前面:操作系统:
本文主要是以 CentOS 6系列为操作系统,来安装配置web服务,并实现虚拟用户,https,和基本的用户认证等相关内容。
写在前面:
操作系统: CentOS 6.5
服务器的IP: 172.16.10.9
httpd的版本:httpd-2.2.15 系列
SElINUX状态:disabled
下面开始安装配置旅程:
一、web的安装配置
1、安装:yuminstallhttpd mod_ssl -y
mod_ssl 是实现 https 协议时所依赖的包
2、配置文件的相关说明:
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
服务脚本:
/etc/rc.d/init.d/httpd
脚本配置文件:/etc/sysconfig/httpd,这里可以定义MPM的类型
模块目录:
/usr/lib64/httpd/modules
/etc/httpd/modules
/etc/httpd/modules是/usr/lib64/httpd/modules的链接文件
主程序:
/usr/sbin/httpd:prefork模式
/usr/sbin/httpd.event:event模式
/usr/sbin/httpd.worker:worker模式
日志文件:
/var/log/httpd/access_log:访问日志
/var/log/httpd/error_log:错误日志
站点文档的根目录:
/var/www/html
二、httpd的配置文件说明
#grep"Section"httpd.conf
###Section1:GlobalEnvironment
###Section2:'Main'serverconfiguration
###Section3:VirtualHosts
主要分为三部分:全局配置,主服务器配置,虚拟主机的配置。主服务器和虚拟主机一般不同时使用;默认仅启用了主服务器。在每个部分中有许多指令参数,这些指令参数不区分字符大小写,但其值有可能会区分大小写。
三、配置文件选项详细说明
1、持久连接
通常的参数有:
KeepAlive{On|Off}是否开启持久连接功能。默认是Off。
以下这2个指令参数只有在KeepAliveOn时才有效
KeepAliveRequests100允许的一次持久连接的最大请求数。
KeepAliveTimeout2次持久连接时间的间隔
验证效果:
2、MPM参数
ServerStart 参数的验证,共有9个相关的进程,其中一个是其他 8 个的父进程:
3、监听的端口
指定格式:Listen[IP:]port默认的端口号是80
这个端口可以自己指定,一般使用大家熟知的端口,常用的有 80 和 8080。
4、DSO动态共享对象
在这里可以实现动态库的装载,可以使用httpd-DMODULES或者httpd-M来查看已加载的模块名。
示例:
使用mod_deflate模块压缩页面来优化传输速度。
未使用mod_deflate模块,访问http;//192.168.1.66/messages文件时相应的字节数大小是:316080字节。
加载mod_deflate模块,并进行配置vim/etc/httpd/conf/httpd.conf。
加载后的验证,加载mod_deflate模块后的大小是41902字节,压缩比还是相当可观的。
5、指定站点的根目录
DocumentRoot“/var/www/html”这是rpm安装方式的默认的根站点目录。当然这个可以根据自己的需求来设定。
6、基于目录和文件的访问控制
使用directory指令基于本地文件系统来实现对目录的访问控制。
常见的控制指令有:
Options:
Indexes:Indexes:当访问的路径下无默认的主页面,将所有资源以列表形式呈现给用户。
FollowSymlinks:跳跃符号链接
AloowOverride:支持在每个页面目录下创建.htaccess用于实现对此目录中资源访问时的访问控制功能。
AuthCofig:用于实现用户认证的目的。
Order结合denyfrom、allowfrom一起使用,来基于IP地址设定访问控制
例如:
这是设置访问白名单的设置,只允许172.16网段的客户端来访问对应的目录。当然from后面的地址是比较灵活的,像:172.16,172.16.0.0,172.16.0.0/16,172.16.0.0/255.255.0.0这种形式的都是允许的。
Orderallow,deny
Allowfrom172.16.0.0/16
当然,上面对目录的控制,也可以使用Locaton指令基于URL来实现。
DocumentRoot“/var/www/html”
<Directory"/var/www/html/admin">
访问控制参数
</Directory>
等价于:
<Location"/admin">
访问控制参数
</Location>
对于OptionIndexex参数示例,一般此选项作为文件服务器,提供下载使用时使用到此选项,其他情况应慎重使用。
7、指定默认访问的主页面
默认的使用格式如下:这里也可以自己定义主页面
DirectoryIndexindex.htmlindex.html.var
8、配置日志功能
ErrorLog"/path/to/error_log"指明错误日志的路径,可以适应相对地址。相对于ServerRoot指令所定义的目录
LogLevel{debug|info|notice|warn|error|crit|alert|emerg}指定日志的级别
LogFormat指定日志文件的格式
CustomLog"/path/to/access_log"LogFormat_Name指定access_log的路径个和使用的格式
%h:客户端地址
%l:远程登录名,通常为-
%u:认证时输入用户名,没有认证时为-
%t:服务器收到用户请求时的时间
%>s:响应状态码
%b:响应报文的长度,单位是字节
%{HEADER_NAME}i:记录指定首部对应的值
9、路径别名
使用指令参数:Alias 实现URL路径映射时,访问的路径不在依赖于站点的根目录。
10、基于用户访问控制
基于用户的认证的方式有基本认证(Basic)和摘要认证(digest)。这里是基于虚拟用户来实现的。实现的方式有:文本文件、数据库、ldap、数据库引擎来提供API接口。
以基于文件的形式实现用户访问的控制来示例:
1、vim/etc/httpd/conf/httpd.conf
<Directory"/var/www/html/admin">
Optionsnone#optons选项控制
AllowOverrideAuthConfig#实现用户认证
AuthTypeBasic#认证方式是Basic
AuthName"AdminArea."#提示信息
#AuthBasicProviderfile#认证方式的提供者
AuthUserFile/etc/httpd/conf/.htpasswd#认证文件的路径
Requirevalid-user#登陆用户控制requireuserUSER_NAME
</Directory>
2、提供认证文件
由htpasswd命令得到。常用选项:
-c:如果此文件事先不存在,则创建;注意,只能在创建第一个用户时使用
-m:以md5的格式编码存储用户的密码信息
-D:删除指定用户
例如:
htpasswd -c -m /etc/hhtpd/.htpasswd tom
3、组认证
<Directory"/var/www/html/admin">
Optionsnone
AllowOverrideAuthConfig
AuthTypeBasic
AuthName"AdminArea."
#AuthBasicProviderfile
AuthUserFile/etc/httpd/conf/.htpasswd
AuthGroupFile/etc/httpd/conf/.htgroup#组文件的路径,自己手动建立
RequiregroupGROUP_NAME
</Directory>
组文件格式:
组名:user1user2user3
11、虚拟主机
虚拟主机:使用不同访问路径
基于端口:通过不同的端口来提供不同的访问站点
基于IP:基于不同的ip地址来访问不同的站点
基于主机名:相同的IP地址通过不同的主机名来实现访问不同的站点
(1)使用虚拟的前提:取消主服务器
注释主服务器的站点根路径指定:DocumentRoot
(2)定义虚拟主机
NameVirtualHostIP:PORT#指定监听的地址和端口
<VirtualHostIP:PORT>
ServerName#主机名
ServerAlias # 定义多个主机名,此时 ServerName 的名称应该是 UR
DocumentRoot#根站定目录
ServerAlias#主机别名
ErrorLog#错误日志的定义
CustomLog#访问日志的定义
</VirtualHost>
配置文件语法检查:
httpd-t
servicehttpdconfigtest
配置完成虚拟主机后,可使用 httpd-S显示配置的虚拟主机
测试:crul URL
12、https协议
由于http协议在传输过程中使用的是明文传输。所以就出现了https协议来实现加密的https协议。ssl会话基于IP地址创建,所以,每一个IP仅创建一个SSL会话。https协议:是基于SSL二进制编码, 监听于443/tcp。
ssl握手要完成的工作:
交换协议版本号
选择双方都支持的加密方式
客户端对服务器端实现身份验正
密钥交换
客户端验正服务器端证书:
有效性检测:证书是否仍然在有效期内
CA的可信度检测
证书的完整性检测
持有者的身份检测
配置httpd工作于https:
(1)安装mod_ssl模块
#yuminstallmod_ssl
(2)为服务端生成私钥,并为其提供证书;
在服务端(172.16.10.9):
#(umask 077;openssl genrsa -out /etc/pki/CA/private/cacert.key 2048)
#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 1000
#touch index.txt
#echo "01" > serial
在客户端:
#(umask 077;openssl genrsa -out /etc/httpd/httpd.key 2048)
#openssl req -new -key /etc/httpd/httpd.key -out /etc/httpd/httpd.csr
将 httpd.csr 传到服务端签名:
在服务端:
#openssl ca -in /root/httpd.csr -out /root/httpd.crt -days 1000
将签好的证书,httpd.crt 传回到客户端,放到 /etc/httpd/ 目录下
(3)配置使用https的虚拟主机
<VirtualHostIP:443>
SSLCertificateFile # 证书路径
SSLCertificateKeyFile # 证书私钥文件
DocumentRoot # 虚拟主机的根站点
ServerName# 虚拟主机的主机名
</VirtualHost>
(4)重新装载配置
httpd reload
(5)测试
#openssls_client-connectIP:PORT-CAfile/path/to/ca_certificate
13、status页面
httpd内嵌有handler,其中有一个handler用于输出当前httpd服务相关状态信息handler:server-status
启用handler要使用SetHandler指令
handler:当文件被调用时,apache内部表示形式;一般每种文件类型都有其隐式处理器
示例:基于 10、11、12、13
1
2
3
4
5
6
建立httpd服务器(基于编译的方式进行),要求:
提供两个基于名称的虚拟主机:
awww1.stu10.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access;
(b)www2.stu10.com,页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2.err,访问日志为/var/log/httpd/www2.access;
(c)为两个虚拟主机建立各自的主页文件index.html,内容分别为其对应的主机名;
(d)通过www1.stu10.com/server-status输出httpd工作状态相关信息,且只允许提供帐号密码才能访问(status:status);
1、配置文件的的编辑,vim /etc/httpd/httd.conf
还的注释主配置下的 DocumentRoot "/var/www/html"
2、创建对应的站点和提供密码文件
1
2
3
4
5
6
7
8
9
10
#创建对应的站点目录并提供默认的页面
mkdir/web/vhosts/www1/-p
mkdir/web/vhosts/www2/-p
echo"<h1>welcomwww1.guotig.com<h1>">/web/vhosts/www1/index.html
echo"<h1>welcomwww2.guotig.com<h1>">/web/vhosts/www2/index.html
#提供用户认证文件
htpasswd-cm/etc/httpd/conf/.htpasswdstatus
mkdir/web/hosts/www1/server-status
chowmapache.apache/web/hosts/www1/server-status
3、提供主机名解析文件 在/etc/hosts中添加:(在测试客户端)
1
172.16.10.9www1.stu10.comwww2.stu10.com
4、测试结果如下:
用户认证测试:
1
2
3
为上面的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
(1)要求使用证书认证,证书中要求使用的国家(CN)、州(Henan)、城市(Zhengzhou)和组织(MageEdu)
(2)设置部门为Ops,主机名为web.magedu.com,邮件为web@magedu.com
1、编辑 vim /etc/httpd/conf.d/ssl.conf 添加以下内容
当然在/etc/httpd/conf/httpd.conf,要加载 mod_ssl 模块
使用 httpd -S 来查看已经配置好的虚拟机
2、提供证书
1
2
3
4
5
6
mkdir/etc/httpd/ssl&&cd/etc/httpd/ssl
(umask077;opensslgenrsa-outhttpd.key1024)
opensslreq-new-keyhttpd.key-outhttpd.csr
去服务端签署证书:
opensslca-inhttpd.csr-out/httpd.crt-days300
签署后的证书存放到:/etc/httpd/ssl/httpd.crt
3、验证结果
首次访问时会出现导入证书的问题,导入证书就可访问。
导入证书就可以访问了。
14、httpd程序包自带的工具介绍
httpd:apache服务器程序
-t:测试配置文件
-l:列表静态模块
-DDUMP_MODULES:列出DSO模块
-M:等价于 -t -D DUMP_MODULES
-DDUMP_VHOSTS:列出所有虚拟主机
htpasswd: 为基于文件的basic认证创建和更新用户认证文件
apachectl: 脚本,httpd服务控制工具,可启动,关闭,重新加载配置文件。
ab: (apachebenchmark)httpd的基准性能测试工具;
apxs: httpd得以扩展使用第三方模块的工具;
htcacheclean:磁盘缓存清理工具;
htdigest:为digest认证创建和更新用户认证文件
httxt2dbm:为rewritemap创建dbm格式的文件
rotatelogs:日志滚动,不关闭httpd而切换其使用日志文件的工具
suexec:当httpd进程需要以另外的用户的身份去访问某些资源时,可以以suexec作临时切换;
15、ab工具的初步使用
同类工具:http_load,webbench,seige
Usage:ab[options][http[s]://]hostname[:port]/path
常用的参数:
-c#:模拟的并发数;
-n#:总的请求数,-n的值一定要大于等于-c的值;
使用 ab -c 100 -n 5000http://www.stu10.com/index.html测试的结果如下:
但是当我们把并发量提高到2000的时候,就会出现以下的错误。
这是由于资源限定的问题,一般情况下,Linux默认打开的文件数是1024。
16、资源限定
软限定:可临时超出一定时长的上限
硬限定:绝对不可超出的上限
管理员可使用ulimit命令临时性地修改各种资源的软限制;
ulimit-n#:能同时打开的文件数
-u#:能同时启动的进程数
配置文件:
/etc/security/limits.conf,里面限定了资源的各种属性,包括核心文件的大小,最大文件数,最大进程数等信息。如果想针对某个用户最限制,在domain字段使用@USER_NAME,如果针对全局的话,使用*就可以实现。/etc/security/limits.d/*.conf 也可以定义各种资源限定。
在 15 中使用ab 测试时,会出现打开过多文件的错误。使用以下设定就可以解决。
关于httpd的基本搭建介绍到这里。其他的搭建在后续博文中介绍,像实现负载均衡。
评论暂时关闭