配置web服务器
一
.Web
服务器简介
:
5.Apache
的性能
:web
服务器的功能和运行性能是最重要的因素
.Apache
的众多特性保证了它可以高效而且稳定的运行
DOS
,动态共享对象,允许运行时动态装载模块、采用预生成技术提高响应速度、运行在几乎所有的计算机平台、支持最新的
HTTP1.1
协议、简单而强有力的基于文件的配置、支持虚拟主机、支持
HTTP
认证、集成了代理服务器、且有可定制的服务器日志、支持安全
Socket
层
(SSL)
、用户会话过程的跟踪能力、支持通用网关接口
CGI
、集成
Perl
脚本编程语言、支持服务器端包含命令
(SSI)
、支持
FastCGI
、支持
PHP
、支持
Java Servlets
、支持第三方软件开发商提供的大量功能模块
6.Apache
的三种运行方式:
Multi-processing modules
预派生
(Profork):
首先启动一个父进程,然后创建并启动一定数量的子进程监听客户的请求,父进程始终监控子进程,启动时自动生成
8
个子进程,最小空闲进程
5
工作者
(Worker MPM):
此模块是混合使用进和线程的运行模型,首先启动一个父进程,然后创建并启动一定数量的子进程
,每个子进程都创建
并启动相同数量的线程,由线程监听客户的请求,父进程始终监控子进程,当没有足够的空闲线程为客户服务时,父进程就会创建并运行新的子进程
独立子进程
(Perchild):
混合使用进程和线程的运行模式,每个子进程都可以创建指定数量的线程,当服务器上负载增加后,
Apache
不会创建新的子进程,而是在当前的子进程之一上创建新的线程为客户提供服务,具有高扩展性,低可靠性
二
.Apache2.0
的模块
:
仍旧使用模块的方式运行,
Apache
由内核、标准模块和第三方提供的模块
3
个层次组成
三
.Apache
的安装和启动
:
1.Apache
的安装
2.
启动
Apache
#service httpd restart
#pstree|grep httpd
#apachect1 configtest|httpd -t
检测配置文件语法的正确性
#service httpd status
#ntsysv
#apachect configtest|httpd -t
检查配置文件语法的正确性
#apachectl -v
查看编译配置参数
#apachectl -l
查看已经被编译的模块
mod_so.c
表示当前的
Apache
支持
Dynamic Shared Objects(DSO),
即用户可以在不重新编译
Apache
的情况下使用
Apache eXenSion
编译的第三方模块
prefork.c
表示
Red Hat
发布的
Apache
是使用预派生
MPM
模式运行的
3.Apache
的基本配置
KeepAlive on
使用保连接的功能,即一次请求连接能响应多个文件
MaxClients 150
限制同一时间的连接数不能超过
150
ServerAdmin root@localhost
设置
Apache
服务器管理员的
E-mail
地址
ServerName [url]www.abc.com:80[/url]
当
Apache
服务器需要指向本身的连接时使用
DirectoryIndex index.html index.html.var
当访问服务器时依次查找页面
index.html
、
index.html.var
IndexOptions
可以在此指令后添加
FolderFirst
表示让目录列有前面
4.
分割配置任务
使用
Inclde
指令:例如可以将所与虚拟主机配置相关的配置单独存成一个配置文件,然后在主配置文件中将其包含进来
使用
.htaccess
文件:用于改变主配置文件中的配置,只能设置对目录的访问控制,它可以覆盖主配置文件中的配置,而
Include
只是简单的包含
(1).
何时使用
.htaccess
不重新启动服务器的情况下改变服务器配置
(2).
步骤
:
首先在主配置文件中启用并控制对
.htaccess
文件的使用
然后在需要盖主配置文件的目录下生成
.htaccess
文件
(3).
启用并控制使用
.htaccess
文件
设置文件名称
AcessFileName .htaccess
<Files ~".\.htaccess">
Order allow,deny
Deny from all
</files>
例
1 .htaccess
文件的访问控制
#cd /var/www/html #mkdir private #cd private #touch test
修改主配置文件
#vi /etc/httpd/conf/httpd.conf <Directory "/var/www/html/private">AllowOverride Options</Directory>
#service httpd restart
#vi /var/www/html/private/.htaccess
添加
Options -Indexes
例
2
配置每个用户的
Web
站点
配置每个用户的
Web
站点的意图是使在安装了
Apache
的本地计算机上,拥有用户帐号的每个用户都能够架设自己单独的
Web
站点
步骤
:
修改主配置文件启用每个用户的
Web
站点配置
修改主配置文件为每个用户的
Web
站点目录配置访问控制
vi /etc/httpd/conf/httpd.conf
<IFModule mod_userdir.c>
UserDir disable root
UserDir public_html
</IfModule>
<Directory /home/*/public_html>
AllowOverride FileInfo Authconfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
#su user1
#cd
#mkdir public_html
#chmod 711 /home/user1
创建
Index.html
的内容
访问自己的主页
[url]http://IP[/url]
地址或
FQDN/~
用户名
例
3
配置虚拟主机
在一台
WEB
服务器上,可以为多个单独域名提供
Web
服务,对于
ISP
的意义重大,因为使用独立的域名和根网址更为正式,易为众人接受
.
基于
IP
地址的虚拟主机:使用相同的
IP
地址,不同的端品号。不同的
IP
地址,相同的端口号
基于名字的虚拟主机:不同的主机头,一个
IP
地址映射多个域名。
配置不同
IP
地址的虚拟主机:
#vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
#vi /etc/sysconfig/network-scripts/ifcfg-eth0:1
#/etc/rc.d/init.d/network restart
#cd /etc/httpd
#vi vhost-conf.d/ip-vhost34.conf
<VirtualHost 192.168.1.57:80>
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com:80
</VirtualHost>
<VirtualHost 192.168.1.57:80>
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com:80
</VirtualHost>
创建默认文档
#echo "Include vhost-conf.d/*.conf">>conf/httpd.conf
#vi /etc/httpd/conf/httpd.conf
<Virtualhost 192.168.1.57:80>
DocumentRoot /var/www/html
DirectoryIndex index.html
ServerName 192.168.1.57
</VirtualHost>
<VirtualHost 192.168.1.77:80>
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName 192.168.1.77
</VirtualHost>
例
4:
配置基于端口的虚拟主机
,
即相同
IP
地址不同端口号的虚拟主机
#vi vhost-conf.d/ip-vhost12.conf
listen 8080
listen 6666
<Virtualhost 192.168.1.57:8080>
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName rhl9.abc.com:8080
</VirtualHost>
<VirtualHost 192.168.1.57:6666>
DocumentRoot /var/www/www2
DirectoryIndex index.html
ServerName rhl9.abc.com:6666
</VirtualHost>
创建默认文档
#echo "Include vhost-conf.d/*.conf">>conf/httpd.conf
例
5:
配置基于主机头的虚拟主机
配置
DNS,
编辑正向解析数据库文件
www 1 IN A 192.168.1.57
www 2 IN A 192.168.1.57
#vi vhost-conf.d/n-vhost.conf
NameVirtualHost 192.168.1.57
<Virtualhost 192.168.1.57:80>
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com
</VirtualHost>
<VirtualHost 192.168.1.57:80>
DocumentRoot /var/www/www2
DirectoryIndex index.html
ServerName www2.abc.com
</VirtualHost>
创建默认文档
#echo "Incaf.d/*.conf">>conf/httpd.conf
例
6:
访问控制
访问控制指令
Order
deny,allow
用于指定执行允许访问规则和执行拒绝访问的先后顺序
Deny all
表示所有客户
|abc.com
域名表示域内的所有客户
|IP
地址,可以指定完整的
IP
地址或部分
IP
地址
|192.168.1.0/255.255.255.0|192.168.1.0/24
定义拒绝访问列表
Allow
定义允许访问列表
<Directory /var/www/html/private>
Order deny,allow
deny from all
allow from 192.168.1.57
</Directory>
例
7:
认证和授权
.
两种认证类,基本认证
Basic
和摘要
Digest
认证,摘要认证比基本认证更加安全,认证指令既可以出现在主配置文件的
Directory
容器中,也可以出现在
./htaccess
文件中
授权
,
为指定用户或组进行授权,授权指令为
Require
#vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html/private">
AllowOverride None
不使用
.htaccess
文件
AuthType Basic
指定基本认证方式
AuthName "abc.com"
指定认证领域名称
AuthUserFile /var/www/passwd/abc.com
指定认证口令的存放位置
require valid-user
</Directory>
创建认证口令文件,并添加两个用户
#cd /var/www/passwd
#htpasswd -c jamond osmond
#chown apache.apache jamond
由于
Apache
的子进程以
apache
用户运行
#service httpd restart