配置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>
ServerAdmin [email]webmaster1@abc.com[/email]
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com:80
</VirtualHost>
<VirtualHost 192.168.1.57:80>
ServerAdmin [email]webmaster1@abc.com[/email]
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>
Server Admin [email]netmask@abc.com[/email]
DocumentRoot /var/www/html
DirectoryIndex index.html
ServerName 192.168.1.57
</VirtualHost>
<VirtualHost 192.168.1.77:80>
Server Admin [email]netmask@abc.com[/email]
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>
ServerAdmin [email]webmaster@abc.com[/email]
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName rhl9.abc.com:8080
</VirtualHost>
<VirtualHost 192.168.1.57:6666>
ServerAdmin [email]webmaster@abc.com[/email]
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>
ServerAdmin [email]webmaster@abc.com[/email]
DocumentRoot /var/www/www1
DirectoryIndex index.html
ServerName www1.abc.com
</VirtualHost>
<VirtualHost 192.168.1.57:80>
ServerAdmin [email]webmaster@abc.com[/email]
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