|
WEB服务器涉及软件有:Apache/nginx/Tomcat/websphere/lighthttpd
现在下面利用Apache进行部署WEB服务器
一:安装
#yum install httpd* -y
二:查看
#rpm -qa |grep httpd
httpd-manual-2.2.15-15.el6_2.1.noarch -------文档
httpd-tools-2.2.15-15.el6_2.1.x86_64 -------工具
httpd-devel-2.2.15-15.el6_2.1.x86_64 --------开发包
httpd-2.2.15-15.el6_2.1.x86_64 --------主程序包
三:配置
#vim /etc/httpd/conf/httpd.conf
以下是主要配置项
(1)ServerTokens OS --向客户端提供一些服务器和信息
-----可以通过curl命令进行认证
# curl -I http://10.1.1.35
HTTP/1.1 200 OK
Date: Tue, 06 Mar 2012 02:03:38 GMT
Server: Apache/2.2.3 (Red Hat)
Content-Type: text/html;charset=ISO-8859-1
(2)serverRoot "/etc/httpd" --存放配置文件一主目录
(3)PidFile run/httpd.pid --pid文件
(4)Timeout 120 --连接超时时间
(5)KeepAlive Off --值为Off时,客户端每次刷新一次在服务器上就产生一个链接,当值为ON时客户端不管如何刷新都只会产生一个链接
(6)MaxKeepAliveRequests 100 ---最大链接数为100
(7)KeepAliveTimeout 15 ----每个链接保持15秒就会自动断开
(8)运行模式
--预派生模式 ,lamp一般用这种
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256 --最大并发数
MaxRequestsPerChild 4000 --最大请求数
(9)Listen 80 --监听端口
(10)下面的都属于叫DSO dynamic shared object 动态共享模块
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
..................................
(11)Include conf.d/*.conf --表示conf.d/下的*.conf配置文件生效
(12)运行身份
User apache
Group apache --以什么身份运行
(13)ServerAdmin root@localhost --管理邮箱
(14)DocumentRoot "/var/www/html" --网站家目录
(15)DirectoryIndex index.html index.html.var --定义主页文件
(16)AccessFileName .htaccess --网页加密
(17)ErrorLog logs/error_log --错误日志
(18)LogLevel warn --日志等级
(19)下面为日志的格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
四:实例
(1)修改网站家目录
#vim /etc/httpd/conf/httpd.conf
DocumentRoot "/www" --修改网站根目录为/www
--把这个也对应的容器修改为/www
创建/www
#mkdir /www
#/etc/init.d/httpd reload --重装启apache服务
#echo 'new main page' > /www/index.html
#elinks 127.0.0.1 --看到新网站根目录下的new main page信息
------注意,不要开启selinux,否则换新的家目录的话,会造成报目录不存在的错误-----------
(2)容器控制
1、directory (目录)
--对/www目录进行的控制
Options Indexes FollowSymLinks --允许列表,符号链接
AllowOverride None --不使用.htaccess控制
Order allow,deny
Allow from all --针对/www目录的访问权限的控制,这两句代表允许所有访问
--容器结束
--------
indexes --指当找不到默认的主页文件时,就把此目录下的文件或者目录以列表形式显示出来
FollowSymlinks --允许符号链接,扩展了网站根目录,允许链接到网站根目录以外
allowoverride none --可以把none改为all来允许.htaccess控制
order allow,deny --指定的是先允许,后拒绝
allow from all --指定允许所有
例一:将网站的内网按照目录进行列表出来
条件1.
Options Indexes FollowSymLinks --相应目录要有indexes参数
条件2.
没有主页文件
条件3.
符合上面两个条件,就会访问到redhat的欢迎页面
#vim /etc/httpd/conf.d/welcome.conf --注释掉里面的全部内容,或者是删除这个文件
#/etc/init.d/httpd reload
#elinks 127.0.0.1 --可以看到是以列表形式显示了
例二:访问控制
Order allow,deny
Allow from all ---- --允许所有
Order allow,deny
deny from all -------拒绝所有
Order allow,deny
allow from all
deny from 2.2.2.35 ----允许所有,但拒绝35
Order allow,deny
allow from all
deny from all --拒绝所有
Order allow,deny
deny from all
allow from all -- --还是拒绝所有,读取的顺序由order决定
Order deny,allow
deny from all
allow from 2.2.2.35 ---只允许35,其它都拒绝
1、在/www目录下新建一个bbs目录,也就是/www/bbs,再在/www/bbs里建立一个index.html文件,使用directory目录容器控制拒绝35访问,别的都允许。
--不能嵌套,需要将这些代码直接添加到新的地方,所以这里写绝对路径
order allow,deny
allow from all
deny from 10.10.10.35 --可以把10.1.1.35换成域名,这个表示这个域下的所有主机名都不能访问(需要hosts文件和DNS来支持)
-------全新添加代码,不要嵌套在/www的目录容器里------
2、file(文件) ------针对文件的控制
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
--表示35这个客户端不能访问/www/1,而且如果要控制/www/bbs/1这个文件,不能在这里写成,需要在/www/bbs这个目录的directory容器里再嵌套files标签来控制
order allow,deny
allow from all
deny from 10.10.10.35
-----下面这段是apache的默认的一个files容器的配置示例----------
--以.ht开头的文件不被客户端用户看到
Order allow,deny
Deny from all
1、例网站下所有目录(包括子目录)以ule开头的文件都不能被访问
Order allow,deny
Deny from all
2、网站下所有目录(包括子目录)以.txt结尾的文件都不能被访问
Order allow,deny
Deny from all
3、网站下所有.gif .jpeg .png的图片都被拒绝
Order allow,deny
Deny from all
3、location(位置,url)
order allow,deny
deny from all
-----这是对http://IP/bbs 这种URL(uniform resource location)来进行权限控制----
五:虚拟主机
#mkdir /www/aaa
#mkdir /www/bbb
#mkdir /www/ccc
#echo "aaa main page" > /www/aaa/index.html
#echo "bbb main page" > /www/bbb/index.html
#echo "ccc main page" > /www/ccc/index.html
1、基于IP的虚拟主机
在配置文件中添加如下代码
#vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
DocumentRoot /www/aaa
ServerName 10.10.10.36
ErrorLog logs/36-error_log
CustomLog logs/36-access_log common
DocumentRoot /www/bbb
ServerName 10.10.10.37
ErrorLog logs/37-error_log
CustomLog logs/37-access_log common
DocumentRoot /www/ccc
ServerName 10.10.10.38
ErrorLog logs/38-error_log
CustomLog logs/38-access_log common
虚拟两个IP ,本服务器IP是10.10.10.36
# ifconfig eth0:0 10.10.10.37 netmask 255.255.255.0
# ifconfig eth0:1 10.10.10.38 netmask 255.255.255.0
# /etc/init.d/httpd restart
验证:
http://10.10.10.36/
http://10.10.10.37/
http://10.10.10.38/ --实际情况每个IP使用DNS对应自己的域名
总结:此基于IP进行配置存在浪费IP地址资源
2、基于端口的虚拟主机
在配置文件中添加如下代码
#vim /etc/httpd/conf/httpd.conf
Listen 80 --这一句默认就有,不用再加
Listen 8000
Listen 8080
DocumentRoot /www/aaa
ServerName 10.10.10.36
ErrorLog logs/36-error_log
CustomLog logs/36-access_log common
DocumentRoot /www/bbb
ServerName 10.10.10.36
ErrorLog logs/37-error_log
CustomLog logs/37-access_log common
DocumentRoot /www/ccc
ServerName 10.10.10.36
ErrorLog logs/38-error_log
CustomLog logs/38-access_log common
#/etc/init.d/httpd restart
验证:
http://10.10.10.36/
http://10.10.10.36:8000/
http://10.10.10.36:8080/
总结
缺点:客户端访问时输入端口不方便,对客户端来说不够透明:还有就是开放端口多了,安全性降低。
3、基于域名的虚拟主机
--需要DNS的cname记录的支持,或者A记录
aaa.web.com
bbb.web.com
ccc.web.com
--以下架构是DNS服务器和apache服务器的IP在同一台机器10.10.10.36上,也可以考虑分成两台服务器来做
# yum install bind* -y
# vim /var/named/chroot/etc/named.conf
options {
directory "/var/named";
};
zone "web.com" IN {
type master;
file "data/master.web.com.zone";
};
# vim /var/named/chroot/var/named/data/master.web.com.zone
$TTL 86400
@ IN SOA rootbug. rootbug. (
20131009
120
240
360
86400 )
IN NS www.web.com.
aaa IN A 10.10.10.36 --这里为apache服务器的IP
bbb IN CNAME aaa
ccc IN CNAME aaa
# /etc/init.d/named restart
# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
DocumentRoot /www/aaa
ServerName aaa.web.com
ErrorLog logs/aaa-error_log
CustomLog logs/aaa-access_log common
DocumentRoot /www/bbb
ServerName bbb.web.com
ErrorLog logs/bbb-error_log
CustomLog logs/bbb-access_log common
DocumentRoot /www/ccc
ServerName ccc.web.com
ErrorLog logs/ccc-error_log
CustomLog logs/ccc-access_log common
# /etc/init.d/httpd restart
--以下是客户端的验证
# vim /etc/resolv.conf
nameserver 10.10.10.36 --DNS指向DNS服务器的IP
http://aaa.web.com/
http://bbb.web.com/
http://ccc.web.com/
六:Apache限速
(1)添加模块支持:
mod-cband-0.9.7.2.tgz
(2)编译模块
#tar xvf mod-cband-0.9.7.2.tgz -C /usr/src/
#cd /usr/src/mod-cband-0.9.7.2/
#./configure ;make ;make install
(3)查看模块是否成功加载
#/etc/httpd/conf/httpd.conf -------里是否自动加载了下面这句话
LoadModule cband_module /usr/lib/httpd/modules/mod_cband.so
(4)针对虚拟主机abc.rootbug.com进行限速
NameVirtualHost *:80
DocumentRoot /www/aaa
ServerName abc.rootbug.com -----配置限速的主机
ErrorLog logs/aaa.com-error_log
CustomLog logs/aaa.com-access_log common
cbandlimit 100M --指网站允许的总的下载流量
cbandperiod 1W --清空时间
cbandspeed 1024 10 30 --当前总带宽,每秒可以同时连接10个,最大的总连接数,1024在这里除以8就是kb每秒的单位
cbandremotespeed 10kb/s 3 3 --针对单一客户端下载速度为10kb/s,每秒可以同时3个连接,最多一个IP生成3个连接
sethandler cband-status --使用http://IP/cband-status访问控制状态
sethandler cband-status-me ----使用http://IP/cband-status-me访问控制状态
#/etc/init.d/httpd restart
#dd if=/dev/zero of=/www/aaa/123 bs=1M count=1000 --创建一个大点的文件,做下载测试
#wget http://news.cluster.com/123 可以看到具体的速度是否限速。
|
|