一、安装httpd服务器

1.编辑安装
 在配置Apache Web服务器之前,需要正确安装好httpd服务器软件。
1). 获取软件包
2). 解压并释放源码包
3). 配置编译选项
        在配置前可以先执行“./configure –help”命令查看各种配置项的详细信息,以便实现更灵活,更丰富的功能定制配置。
 --prefix用于指定httpd服务程序将要安装到的系统目录,这里设置的是缺省目录“/usr/local/apache2”;
 --enable-so用于能够使httpd服务动态加载模块的功能;
 --enable-rewrite用于能够使httpd服务具有rewrite网页地址重写功能。
4).编译服务器程序
 需要执行“make”命令进行编译,将源代码转换为可执行的程序。

5).安装已编译完成的程序
 执行“make install”命令完成最后的安装过程,将已经编译完的httpd程序及相关目录、文件复制到预设的安装目录中。

二、httpd服务基础

1.web服务器基本构建
1).修改主配置文件httpd.conf
 用vi编辑器打开httpd.conf主配置文件,添加设置web服务器域名的配置行。需要用到的配置项为“ServerName”
 [root@www ~]# vi /usr/local/apache2/conf/httpd.conf
 ServerName www.qq.com
 使用ServerName设置主机域名,应在该域的授权DNS服务器中设置有对应的A记录,以便所有的主机都可以通过该域来访问这

台WEB服务器
2).检查httpd.ocnf文件的语法设置
 使用带“-t”选项的apachetl命令对配置内容进行语法检查(也可发使用“httpd –t”命令)。如果没有语法错误,将会

显示“syntax OK”的信息。
 [root@www conf]# /usr/local/apache2/bin/apachectl –t  
 Syntax OK 
3).启动、终止及重启httpd服务
 使用带“start”选项的apachectl命令可发启动htttpd服务。
 [root@www ~]# /usr/local/apache2/bin/apachectl start  
 [root@www ~]# netstat -anpt | grep :80    
 tcp        0      0 :::80        :::*         LISTEN      21669/httpd  
 若希望在服务器开机后自动运行httpd服务,可以将对应的启动命令写入到“/etc/rc.d/local”文件中。

2.httpd.conf配置文件
 Httpd.conf文件是httpd服务的主配置文件,其中包含的配置项直接决定着Web服务器的各项运行参数及服务器性能。
1). httpd.conf配置文件
 由注释行和设置行两部分组成,注释行以“#”开始,设置行不以“#”开始,是配置文件中真正有效的设置内容。
命令去除掉注释行。
 [root@www ~]# cd /usr/local/apache2/conf/                      
 [root@www conf]# cp httpd.conf httpd.conf.bak        
 [root@www conf]# grep -v '#' httpd.conf.bak | grep -v '^$' > httpd.conf 
2). httpd.conf中的全局配置、
  httpd.conf配置文件中包括有相当数量的全局配置项,这些配置项不包括在任何区域中,决定了Apache服务器的全局参数。

以下是httpd.conf文件中常用到的全局配置项内容及注解。
   ServerRoot "/usr/local/apache2"    //用于设置httpd服务器的根目录                     
  Listen 80                      //用于设置监听的端口号
  User daemon           //用于设置运行htttpd进程时的用户身份                                      
  Group daemon              //用于设置运行htttpd进程时的组身份  
  ServerAdmin web@qq.com     //用于设置管理员的E-mail地址
  ServerName www.qq.com            //用于设置FQDN                                            
  DocumentRoot "/usr/local/apache2/htdocs"    //用于设置网页文档根目录                 
  DirectoryIndex index.html index.php     //用于设置网站的默认首页
  ErrorLog "logs/error_log"    //用于设置错误日志文件的路径和文件名
  LogLevel warn       //用于设置记录的级别,默认为Warn(警告)
  CustomLog logs/access_log common      //用于设置访问日志文件的路径和格式类型
  PidFile logs/httpd.pid    //用于设置保存httpd服务器程序进和号(PID)文件
  Timeout 300    //用于设置服务器与浏览器之间网络连接的超时时间
  KeepAlive On           //用于设置是否使用保持连接功能
  MaxKeepAliveRequests 100    //用于设置客户端每次连接允许请求响应的最大文件数
  KeepAliveTimeout 15    //用于设置保持连接的超时秒数
  Include conf/extra/httpd-vhosts.conf     //用于包含另一个配置文件的内容              
  … …                                                     
3). httpd.conf中的区域设置
        除了全局设置项外,htttpd.conf文件中的在多数配置都是包括在区域中的,区域设置使用一对组合标记,限定了配置项的

作用范围,例如,配置文件中常用的目录区域的形式如下:
 <Directory />
     Options FollowSymLinks
     AllowOverride None    
     Order deny,allow     
     Deny from all     
 </Directory>       
 在以上的区域定义中,使用<Directory />定义区域的开始,使用</Directory>定义该区域的结束,其间的设置内容只作用

于区域内部,而不会在全局或其它区域中生效。目录区域设置主要用于为特定的目录,设置访问控制权限。除了目录区域外,经常会

设置如“<VirtualHost>… …</VirtualHost>”这样的虚拟主机等的区域。
4).httpd服务的日志
 httpd服务器包括访问日志和错误日志两个常用的日志文件,通过查看日志文件可以了解Apache服务器运行情况,也可以排


 查看日志文件
 [root@www ~]#tail -2 /usr/local/apache2/logs/access_log


三、Web站点的典型应用

1.测试httpd服务器的性能
 Httpd服务自带了一个压力测试工具AB,用于检测Web站点的性能表现,AB命令工具位于安装目录中的“bin/”文件夹下
 Ab [-q] –c 并发请求数 –n 总的请求数 [http://] 域名 [:端口]/路径
 使用-q选项时,将不显示测试进度信息,当测试的目标是Web站点的根路径时,注意最后的“/”符号不能省略。指定的并发

请求数不能大于总的请求数。
1).使用ulimit命令修改最大文件数限制
 Ulimt是一个Bash内部的命令,可以用于对Shell进程使用的系统资源进行限制。
 修改最大文件数为100000
  [root@www ~]#ulimit -a | grep "open files"
  open files
  [root@www ~]#ulimit -n 100000
  [root@www ~]#ulimit -a | grep "open files"
  open files  (-n) 100000
2).使用AB命令进行压力测试
 执行AB测试命令后,通过命令输出的结果判断Web服务器的响应情况及性能表现
 [root@www ~]# /usr/local/apache2/bin/ab -q -c 2000 -n 4000 http://www.qq.com/
 ....

二.构建虚拟WEB主机
 虚拟Web主机指的是在同一台服务器中运行多个Web站点的应用,其中的每一个站点并不独立占用一台真正的计算机。
 三种虚拟主机类型:
  基于域名的虚拟主机:为每个虚拟主机使用不同的域名,但是其对应的IP地址也不相同
  基于IP地址的虚拟主机:使用不同的域名,对应不同的IP
  基于端口的虚拟主机:不适用域名、IP地址来区分,而是用不同的TCP端口号

1. 构建基于域名的虚拟主机
 1).确定服务器的主机名、IP地址等参数。
 2).分别准备两个虚拟站点的网页文件
 3).修改httpd.conf文件,添加虚拟主机配置
        编辑httpd.conf文件,使用“Name VirtualHost”配置项指定运行虚拟主机的服务器IP地址,并为每一个虚拟站点增加一

段“<VirtualHost虚拟主机IP地址>… …</VirtualHost>”区域设置,其中至少包括虚拟主机的域名、网页文档根目录的配置行,其

他的设置内容可发参考httpd.conf文件中的全局配置。如果虚拟主机数较多,建议为每一个虚拟主机使用独立的访问日志和错误日志

文件。
 4).重新启动httpd服务
 5)在客户机浏览器中访问虚拟Web站点
        首先要确保客户机能够正确解析这两个虚拟主机的域名,并能够连接到该服务器,如果在实验中没有搭建可用的DNS服务器,

也可通过修该客户机的hosts文件来完成域名解析——如果是Linux客户机,则修改“/etc/hosts”文件;如果是windows客户机,则

修改“C:\WINDOWS\system32\drivers\hosts”文件,添加相应域名到IP地址的映射记录即可。
        在客户端浏览器中分别访问两个虚拟主机站点www.zou.comwww.pan.com,将会看到不同的网页内容
浏览网站www.zou.com所看到的效果:

2. 构建基于IP地址的虚拟主机
        构建基于IP地址的虚拟主机服务器时,与构建基于域名虚拟主机的过程基本类似。只不过中httpd.conf文件中的配置稍微有

些区别:不再需要指明“NameVirtualHost”配置行,每个虚拟主机的“<VirtualHost虚拟主机IP地址>… …</VirtualHost>”区域

设置中,也要改为各自域名对应的IP地址。

3. 构建基于端口的虚拟主机
        构建基于端口的虚拟主机服务器时,httpd服务监听的IP地址、端口号需要与各虚拟主机使用的IP地址、端口号相对应,一

般也无需指定“NameVirtualHost”配置行。
       
三. 建立系统用户的个人主页
        Httpd服务自带的个为主页功能,为Linux系统用户提供Web站点服务。
1. 修改httpd文件,启用个人主页功能
 添加“UserDir public_html”配置行,并添加“<Directory“/home/*/public_html”>… …</Directory>”目录区域

设置,以便允许客户机访问系统用户的个人网页目录。
2. 建立个人主页测试文件
 切换为目标用户,在宿主目录中建立public_html文件夹,并添加测试网页文件。
3. 重启httpd服务
4. 在客户机浏览器中访问个人主页

四、httpd服务的访问控制

1.基于用户的访问控制
 基于用户的访问控制包含认证和授权两个过程。
  认证:指识别用户身份的过程
  授权:是允许特定用户访问特定区域信息的过程
 Apache使用基本认证和摘要认证两种方式
  使用摘要认证需要编辑httpd的过程中预先配置"--enable-auth-digest"项
  基本认证是apache的基本功能,不需要预先配置特别的选项
1).编辑httpd.conf配置文件,查找关于awstats的目录区域设置,添加认证授权设置
 AuthName :定义受保护的领域名称
 AuthType :设置认证类型
 AuthUserFile:设置用于保存账号、密码的认证文件路径
 require valid-user :授权给认证文件中的所有有效用户
2).创建存储认证用户账号及口令的文件
3).重启服务
4).在浏览器中访问awstats页面进行验证

2.基于客户端地址的访问控制
 基于客户端地址访问控制主要应用于目录区域“<directory>```<directory>”
 配置项:
  Order allow,deny : 先允许后拒绝,默认拒绝所有没有被明确允许的客户端地址
  Order deny,allow : 先拒绝后允许,默认允许所有没有被明确拒绝的客户端地址