四. Web 站点的典型应用
1. 测试 httpd 服务器的性能( httpd 服务自带了一个压力测试工具 ab, 用于检测 web 站点的性能表现)
命令格式:
ab  [-q]  –c 并发请求数  –n   总的请求数  
[http://] 域名 [: 端口 ]/ 路径
[] 中的为可选的,使用 -q 选项时,将不显示测试进度信息;当测试的目标是 web 站点的根路径时,最后的“ / ”不能少
使用 ulimit 命令修改最大文件数限制
RHEL5 中,默认允许打开的最大文件数为 1024 。由于使用 AB 测试工具时可能需要同时打开更多的文件,因此需要使用 ulimit 命令突破这个限制。 ulimit 是一个 bash 内部命令,可以对 Shell 进程使用的系统资源进行限制。
[root@localhost ~]# ulimit -a |grep "open fils"
[root@localhost ~]#
[root@localhost ~]# ulimit -a |grep "open files"
open files                      (-n) 1024
[root@localhost ~]# ulimit -n 10000
[root@localhost ~]# ulimit -a |grep "open files"
open files                      (-n) 10000
执行 ab 命令进行压力测试(通过命令输出的结果判断 web 服务器的响应情况及性能表现,如查看 cpu 、内存等信息)
/usr/local/apache2/bin/ab -q -c 2000 -n 4000 www.haha.com/
总结:
httpd 服务的目录结构 (在 httpd 软件的安装目录“ /usr/local/apache2 ”中,包括了运行 web 服务器所需要的执行程序、配置文件、日志文件,帮助手册等所有内容,该目录被称为 Apache 服务器的根目录)
 [root@localhost ~]# ls /usr/local/apache2/
bin    cgi-bin  error   icons    lib   man     modules
build  conf     htdocs  include  logs  manual
*     conf 目录:保存了 Apache 服务器的配置文件,其中 httpd.conf 是它的主配置文件。
*     bin 目录:包括了运行和管理 web 服务所需要的执行程序
   其中:
Ø      httpd 是服务器的执行程序
Ø      apachectl 是服务程序的启动脚本
*     htdocs 目录:是 Apache 服务器的网页文档的根目录
u    manual 目录:保存了 Apache 服务器的完整配置指南文             档,以 HTML 文件格式提供。
u    lib 目录 : 保存了运行 Apache 服务器所需的库文件
u    man 目录 : 保存了 httpd apachectl 等程序的 man 帮助文       
u    modules 目录:保存了提供给 Apache 服务器动态加载的   模块文件
u    logs 目录:保存 Apache 服务器的日志文件
通过熟悉这些目录的结构和功能,有助于对 web 服务器进行有效的管理。
在对 httpd.conf 文件进行修改后,建立使用 apachectl 命令 ( 加“ -t ”选项 ) 对内容进行语法检查,也可以使用“ httpd -t ”命令。如果没有错误,将会显示“ Syntax OK ”。
Ø      /usr/local/apache2/bin/apachectl  -t
Ø      /usr/local/apache2/bin/httpd  -t
启动 httpd 服务时出现的故障
无法确定 web 服务主机名
例:当 httpd 服务识别的主机名和服务器实际的主机名不一致时,可能导致启动 httpd 服务的时候反应非常缓慢,并且出现以下提示信息。
Httpd:apa_sockaddr_info_get() failed for www.server.com
Httpd:Could not reliably detemine the server’s fully qualified domain name,using 127.0.0.1 for ServerName
解决办法:
ü      httpd.conf 文件中,添加配置行“ ServerName www.server.com , 指定完整的主机名。若没有“ ServerName ”配置行, httpd 服务可能将“ 127.0.0.1 ”作为主机名。
ü      编辑“ /etc/sysconfig/network ”文件,修改主机名,如
HOSTNAME=www.server.com ”。
ü      编辑“ /etc/hosts ”文件,添加服务器的主机名、 IP 地址映射记录,如“ 172.16.100.5  www.haha.com  www ”。
TCP80 端口已被占用
例:从下面可以看出, 80 端口已被其它进程占用,只需要找到占用 80 端口的进程并关闭即可。一般是系统原有 RPM 方式安装的 httpd 服务进程造成的,只要停用原来的 httpd 服务,并将自启动状态设置为关闭即可。
[root@localhost ~]# /usr/local/apache2/bin/apachectl start
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
解决办法:
[root@localhost ~]# netstat -anpt|grep :80
tcp        0      0 :::80                       :::*                        LIST  EN      5001/httpd
[root@localhost ~]# killall -9 httpd
[root@localhost ~]# chkconfig --level 35 httpd off
[root@localhost ~]# /usr/local/apache2/bin/apachectl start
httpd.conf 配置文件
常用的全局配置项(这些全局配置项不包括在任何区域中,决定了 Apache 服务器的全局参数)
ServerRoot  “/usr/local/apache2”    //httpd 服务的根目录
Listen 80   // 设置 Apache 服务器监听的端口号,默认为 80
User daemon         // 设置运行 httpd 进程时的用户身份
Group daemon       // 设置运行 httpd 进程时的组身份
ServerAdmin [email protected]
// 设置 Apache 管理员的 E-mail 地址,可以在出现故障时通过此 E-mail 地址及时联系 Apache 服务器管理员
ServerName  www.example.com
// 设置 Apache 服务器的完整主机名( FQDN 名)
DocumentRoot "/usr/local/apache2/htdocs"
// 设置网页文档的根目录在系统中的实际路径
DirectoryIndex index.html index.php
// 设置网站的首页(索引页),可以设置多个文件,以空格分开,默认的首页文件为 index.html
ErrorLog "logs/error_log"
// 设置错误日志文件的路径和文件名,默认“ logs/error_log
LogLevel warn 
// 设置记录日志的级别,默认为 Warn (警告)
CustomLog "logs/access_log" common
// 设置 Apache 服务器中访问日志文件的路径和格式类型
PidFile  logs/httpd.pid
// 设置保存 httpd 服务器程序进程号( PID )的文件,默认为“ logs/httpd.pid
Timeout 300
// 设置 web 服务器与浏览器之间网络连接的超时秒数
KeepAlive On
// 设置是否使用保持连接功能
Ø      On 时,客户机与服务器建立一次连接后可以请求传输多个文件,将提高服务器传输文件的效率
Ø      Off 时,表示不使用,客户机的每次连接只能从服务器请求返回一个文件,传输效率很低
MaxKeepAliveRequests 100
// 设置客户端每次连接允许请求相应的做大文件数,默认为 100 个。当 KeepAlive 设置为 On 时才生效
KeepAliveTimeout 15
// 设置保持连接的超时秒数,当客户机的两次相邻请求超过该设置值时需要重新进行连接请求,默认为 15
Include conf/extra/httpd-vhosts.conf
//Include :用于包含另一个配置文件的内容,可以将实现一些特殊功能的配置单独放到一个文件里,再使用 Include 配置项包含到 httpd.conf 主配置文件中来,便于独立维护
区域设置(其设置内容只作用于区域内部,而不会在全局或其他区域中生效)
²     目录区域(主要用于为特定的目录设置访问控制权限)
如:对系统跟目录“ / ”的设置
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
²     虚拟主机区域
如:
        ServerName www.haha.com
        DocumentRoot /home/haha/public_html/