Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)
                            编译安装Apache服务器&httpd服务的基本配置
        LAMP架构是目前最为成熟的一种企业网站应用模式,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开民环境。LAMP这个词是一个缩写,具体包括:Linux操作系统,作为LAMP架构运行的基础;Apache网站服务器作为LAMP架构的前端;MySQL数据库服务器作为LAMP架构的后端;PHP(或Perl、Python)编写语言,作为三种开发动态网页的编程语言。LAMP平台具有成本低廉、可定制、易于开发、方便使用、安全和稳定等优势。
        从本次开始我将会和大家共同探讨Red Hat5平台下的LAMP网站服务搭建,其中包括编译安装Apache服务器、httpd服务的基本配置、使用awstats分析Web日志、httpd服务的访问控制、MySQL数据库的安装和管理、构建PHP环境、常见论坛搭建等。因为涉及的内容较多,所以大家可能也看到标题上多了序号和子标题。
第一部分:安装httpd服务器
        在配置Apache Web服务器之前,需要正确安装好httpd服务器软件。在RHEL5系统中, 可以选择两种方式行安装,第一种方式是通过RHEL5系统光盘自带的RPM包安装,第二种方式就是下载最新版本的httpd源代码,释放后进行编译安装。前者简单、快速,但在功能上存在局限性,实际的生产环境中,编译安装的方式应用要更加广泛。本次我们主要介绍源码编译安装。
1. 获取软件包
获取软件包可发通过Apache服务软件的下载页面:http://httpd.apache.org/download.cgi下载到各个版本的httpd软件包,或者使用wget工具下载httpd-2.2.9.tar.gz源码包文件
wget http://archive.apache.org/dist/httpd/httpd-2.2.9.tar.gz
2. 解压并释放源码包
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_平台
说明:将httpd源码包解压并释放到/usr/src/目录中,执行cd命令切换到展开的源码目录。
3. 配置编译选项
        在配置前可以先执行“./configure –help”命令查看各种配置项的详细信息,以便实现更灵活,更丰富的功能定制配置。
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_LAMP_02
说明:--prefix用于指定httpd服务程序将要安装到的系统目录,这里设置的是缺省目录“/usr/local/apache2”;--enable-so用于能够使httpd服务动态加载模块的功能;--enable-rewrite用于能够使httpd服务具有rewrite网页地址重写功能。
4.编译服务器程序
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_平台_03
说明:完成配置以后,需要执行“make”命令进行编译,将源代码转换为可执行的程序。
5.安装已编译完成的程序
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_平台_04
说明:执行“make install”命令完成最后的安装过程,将已经编译完的httpd程序及相关目录、文件复制到预设的安装目录中。
第二部分:httpd.conf配置文件解析
        Httpd.conf文件是httpd服务的主配置文件,其中包含的配置项直接决定着Web服务器的各项运行参数及服务器性能。要做姨LAMP,我们必须了解httpd.conf中的常用配置项的功能及作用。
1. httpd.conf配置文件的结构
        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@zpp.com     //用于设置管理员的E-mail地址                                             
ServerName www.zpp.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>”这样的虚拟主机等的区域。
第三部分:web站点的故障排错与性能测试
1.检查httpd.ocnf文件的语法设置

在对httpd.conf文件进行修改后,建议使用带“-t”选项的apachetl命令对配置内容进行语法检查(也可发使用“httpd –t”命令)。如果没有语法错误,将会显示“syntax OK”的信息。否则,需要根据错误信息中的提示,将语法错误修正后再重新检查。用法如下图:
 
[root@www conf]# /usr/local/apache2/bin/apachectl –t  
Syntax OK 
[root@www conf]# /usr/local/apache2/bin/httpd –t     
Syntax OK    
[root@www conf]#     
2.启动、终止及重启httpd服务
使用带“start”选项的apachectl命令可发启动htttpd服务。
例如:使用apachectl脚本程序启动httpd服务,并观察httpd服务的监听状态。
 
[root@www ~]# /usr/local/apache2/bin/apachectl start  
[root@www ~]# netstat -anpt | grep :80    
tcp        0      0 :::80                       :::*                        LISTEN      21669/httpd     
[root@www ~]#       
说明:将上述apachectl脚本命令的“start”选项替换为“stop”、“restart”时,可分别用于终止、重启httpd服务。若希望在服务器开机后自动运行httpd服务,可以将对应的启动命令写入到“/etc/rc.d/local”文件中。
3.排除httpd服务的个别启动状态
1>.无法确定Web服务器主机名的故障
当httpd服务识别的主机名与服务器实际的主机名不一致时,可能导致启动httpd服务的时侯反应非常缓慢,且出现如下命令提示信息。
 
[root@www ~]# /usr/local/apache2/bin/apachectl –t 
httpd: apr_sockaddr_info_get() failed for www.zpp.com    
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK   
[root@www ~]#    
参考下列步骤可发解决这个问题。
编辑httpd.conf主配置文件,添加配置行“ServerName www.zpp.com”,指定完整的主机名。若缺少“ServerName”配置行,httpd服务器可能会将“127.0.0.1”作为主机名。
编辑“/etc/sysconfig/network”文件,修改主机名,例如“HOSTNAME=www.zpp.com”。
编辑“/etc/hosts”文件,添加服务器的主机名、IP地址记录,如“192.168.1.1 www.zpp.com ”。
2>.TCP80端口已被占用的故障
        当启动httpd服务的时侯出现“… …could not bind to adderss [::]:80”的提示信息时,则表示使用的端口(默认为80)已经被其它进程占用。这时只需要执行“netstat –anpt | grep :80”命令,找出占用80端口的进程并关闭掉即可。很多时侯是系统原有RPM方式安装的httpd服务进程造成的,只要停用原有的httpd服务,并将自启动状态设置为关闭即可。
如下图所示是此类故障的效果及解决办法。
 
[root@www ~]# /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@www ~]# netstat -anpt | grep :80
tcp        0      0 :::80                       :::*                        LISTEN      21669/httpd    
[root@www ~]# killall -9 httpd 
[root@www ~]# chkconfig --level 35 httpd off  
[root@www ~]# /usr/local/apache2/bin/apachectl start    
4.测试httpd服务器的性能
        Httpd服务自带了一个压力测试工具AB(Apache Benchmark,Apache基准测试工具),用于检测Web站点的性能表现,如并发平均响应时间、速度以及并发连接处理能力等。AB命令工具位于安装目录中的“bin/”文件夹下,使用该命令的简单格式如下:
 
Ab [-q] –c 并发请求数 –n 总的请求数 [http://] 域名 [:端口]/路径  
说明:使用-q选项时,将不显示测试进度信息,当测试的目标是Web站点的根路径时,注意最后的“/”符号不能省略。指定的并发请求数不能大于总的请求数。下面我们来举例说明ab命令的使用方法。
1>.使用ulimit命令修改最大文件数限制
        在RHEL5系统中,默认允许打开的最大文件数为1024.由于使用AB测试工具时可能需要同时打开更多的文件,因此需要使用ulimit命令突破这个限制。Ulimt是一个Bash内部的命令,可以用于对Shell进程使用的系统资源进行限制。
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_平台_05
说明:使用ulimit命令将允许打开的最大文件数修改为10000
注意:如果不更改最大文件数限制,在使用AB工具时可能会出现“socket:Too many open files(24)”的错误提示信息,导致测试无法进行。
2>.使用AB命令进行压力测试
执行AB测试命令后,通过命令输出的结果判断Web服务器的响应情况及性能表现
 
[root@www ~]# /usr/local/apache2/bin/ab -q -c 2000 -n 4000 http://www.zpp.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>    
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/  
Licensed to The Apache Software Foundation, http://www.apache.org/ 
 
Benchmarking www.zpp.com (be patient).....done 
  
Server Software:        Apache/2.2.9 
Server Hostname:        www.zpp.com  
Server Port:            80   
 
Document Path:          /    
Document Length:        44 bytes   
    
Concurrency Level:      2000                    //用于并发连接测试的请求数       
Time taken for tests:   3.309 seconds           //测试过程消耗的时间  
Complete requests:      4000                    //测试过程中总共完成的请求数    
Failed requests:        0                       //失败的请求数量  
Write errors:           0   
Total transferred:      1190484 bytes           //测试过程中的网络传输量 
HTML transferred:       179388 bytes            //测试过程中的HTML内容传输量      
Requests per second:    1208.97 [#/sec] (mean)  //服务器平均每秒响应的请求数      
Time per request:       1654.301 [ms] (mean)    //服务器平均每请求的响应时间      
Time per request:       0.827 [ms] (mean, across all concurrent requests)          
Transfer rate:          351.38 [Kbytes/sec] received  
 
Connection Times (ms)                           //连接时间统计信息  
              min  mean[+/-sd] median   max      
Connect:        0  212 690.9     39    3131     
Processing:     1  158  33.3    163     292      
Waiting:        0   88  38.8    101     205 
Total:         84  370 685.6    204    3200     
 
Percentage of the requests served within a certain time (ms) 
  50%    204
  66%    211  
  75%    230 
  80%    244
  90%    292   
  95%   3152   
  98%   3180   
  99%   3188     
 100%   3200 (longest request)    
第四部分:Web站点的典型应用
一. 构建虚拟Web主机
        虚拟Web主机指的是在同一台服务器中运行多个Web站点的应用,其中的每一个站点并不独立占用一台真正的计算机。例如,当用户访问两个不同的网站www.zou.comwww.pan.com时,所看到的网页内容也不相同,而如果这两个网站实际上是在同一台服务器中运行的,那么就可以称为是“虚拟的”Web主机,一般简称“虚拟主机”。
1. 构建基于域名的虚拟主机
        本实验以实现两个虚拟Web主机www.zou.comwww.pan.com为例,其对应的服务器IP地址为192.168.1.1。构建过程参考如下:
1>.确定服务器的主机名、IP地址等参数。
向域名注册机构申请Web站点的域名,使得所有的用户在访问域名www.zou.comwww.accp.com时,指向的IP地址对应为192.168.1.1.
2>.分别准备两个虚拟站点的网页文件
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_Red_06
 
说明:此处我们为了稍后的测试分别建立了“/usr/local/apache2/htdocs/zoucom/index.html”和“/usr/local/apache2/htdocs/pancom/index.html”两个虚拟站点的默认首页
3>.修改httpd.conf文件,添加虚拟主机配置
        编辑httpd.conf文件,使用“Name VirtualHost”配置项指定运行虚拟主机的服务器IP地址,并为每一个虚拟站点增加一段“<VirtualHost虚拟主机IP地址>… …</VirtualHost>”区域设置,其中至少包括虚拟主机的域名、网页文档根目录的配置行,其他的设置内容可发参考httpd.conf文件中的全局配置。如果虚拟主机数较多,建议为每一个虚拟主机使用独立的访问日志和错误日志文件。
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_平台_07
4>.重新启动httpd服务
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_Red_08
5>在客户机浏览器中访问虚拟Web站点
        首先要确保客户机能够正确解析这两个虚拟主机的域名,并能够连接到该服务器,如果在实验中没有搭建可用的DNS服务器,也可通过修该客户机的hosts文件来完成域名解析——如果是Linux客户机,则修改“/etc/hosts”文件;如果是windows客户机,则修改“C:\WINDOWS\system32\drivers\hosts”文件,添加相应域名到IP地址的映射记录即可。
        在客户端浏览器中分别访问两个虚拟主机站点www.zou.comwww.pan.com,将会看到不同的网页内容
浏览网站www.zou.com所看到的效果:
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_Red_09
浏览网站www.pan.com所看到的效果:
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_平台_10
2. 构建基于IP地址的虚拟主机
        构建基于IP地址的虚拟主机服务器时,与构建基于域名虚拟主机的过程基本类似。只不过中httpd.conf文件中的配置稍微有些区别:不再需要指明“NameVirtualHost”配置行,每个虚拟主机的“<VirtualHost虚拟主机IP地址>… …</VirtualHost>”区域设置中,也要改为各自域名对应的IP地址。
下面以域名www.zou.com对应的IP地址为1.1.1.1,www.pan.com对应的IP地址为2.2.2.2为例,在httpd.conf文件中的设置形式如下图:
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_Red_11
3. 构建基于端口的虚拟主机
        构建基于端口的虚拟主机服务器时,httpd服务监听的IP地址、端口号需要与各虚拟主机使用的IP地址、端口号相对应,一般也无需指定“NameVirtualHost”配置行。
        下面以访问80端口时对应站点www.zou.com,访问8080端口时对应站点www.pan.com为例,在httpd.conf文件中的设置形式如下:
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_平台_12
二. 建立系统用户的个人主页
        Httpd服务自带的个为主页功能,可以非常方便地为Linux系统用户提供Web站点服务。服务器吕启用该功能参后,每个系统用户只需在宿主目录中的相应位置(默认为public_html子目录)建立网页文件,就可以在浏览器中访问自己的个人主页了。
        下面我们以为Linux系统用户zpp建立个人主页为例,讲解在httpd服务器中实现个人主页服务的过程
1. 修改httpd文件,启用个人主页功能
添加“UserDir public_html”配置行,并添加“<Directory“/home/*/public_html”>… …</Directory>”目录区域设置,以便允许客户机访问系统用户的个人网页目录。
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_服务_13
2. 建立个人主页测试文件
切换为目标用户zpp,在宿主目录中建立public_html文件夹,并添加测试网页文件。
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_服务_14
        由于Linux系统对用户宿主目录默认设置了较严格的访问权限,因此还需要为其他用户增加执行权限,以便运行Web服务的程序用户有权限访问用户宿主目录中的public_html子目录。
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_服务_15
3. 重启httpd服务
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_Linux_16
4. 在客户机浏览器中访问个人主页
Linux系列-Red Hat5平台下的LAMP网站服务搭建(一)_Red_17
        OK!通过本次对编译安装Apache服务器和httpd服务的基本配置,我们已经对这个神秘的东西有所了解,但这还远远不够,我们的目的是让整个LAMP网站服务平台,健康稳定的运行下去,接下来更精彩!拭目以待吧!
本文出自 “zpp” 博客,请务必保留此出处http://zpp2009.blog.51cto.com/730423/270044