Apache服务器配置技术文档

1.基础知识 

 1.1rpm包安装目录结构

   /etc/httpd/ 工作目录

   /etc/httpd/conf/httpd.conf  主配置文件

   /etc/httpd/conf.d/ 额外配置文件目录

   /var/www/html/ 默认的网页存放位置

   /var/www/cgi-bin/ 可执行的CGI程序目录
   
   /var/log/httpd/ 默认的日志目录
  
   /usr/sbin/apachect1 检测工具
 
   /usr/sbin/httpd  进程启动脚本

   /usr/bin/htpasswd 密码认证工具
 

 1.2 源代码包安装目录结构
    通常建议将下载的源代码包解压到/usr/local/src/目录下,而安装到/usr/local/apacheX路径下(X    可以理解成该源代码包的版本号,可随便定义 但自己一定记得是干什么用的)

  /usr/local/src中,该目录常用于保存需要编译的程序源代码(目录)。


   #tar -zxf httpd-2.0.59.tar.gz -C /usr/local/src  解压到指定路径

   #cd /usr/local/src/httpd-2.0.59/   进入到解压后的路径下

   #.configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite 配置
 
       [--enable-so] 设置Apache服务器可以使用动态加载模块功能
       [--enable-rewirte]设置Apache服务器具有rewrite功能

       (Apache服务器的rewrite功能可以实现对动态网页地址的重写,从而使网页访问这可以通过更加        简单和容易记忆的网页地址访问动态网页系统中的页面)
   #make  编译

   #make install 安装到/usr/local/apache2目录中

 ------------------------------------------------------------------------------------------
    此时工作目录就是上面步骤中的 /usr/local/apache2
    几乎所有的相关配置文档,以及相关的目录都在这个路径下

    该目录下的目录和文件的介绍:

   bin/ 包括服务器运行和管理所需的执行程序,httpd使服务器的执行程序,
         apache1使服务程序的启动脚本。。。。。
  
   lib/ 保存了服务器运行所需的库文件

   conf 配置目录 httpd.conf使主配置文件

   htdocs 默认网页存放路径 ,该目录作为web服务器的根目录
 
   cgi-bin 可执行的CGI程序目录
 
   manual 目录中保存了服务器的帮助手册文件使网页格式的
 
   logs 日志存放目录 access_log访问日志文件 error_log错误日志文件
-------------------------------------------------------------------------------------------
    Apache服务的启动命令为:
                           #/usr/local/apache2/bin/apachectl start
                            没问题的话 启动是没有任何的提示信息的
    在实际的应用系统中,Apache服务器所需要设置在linux系统启动时自动运行,因此需要将apachect1  本的启动命令写入到rc.local文件

 #vi /etc/rc.local
 //在文件末尾添加以下命令
 /usr/local/apache2/bin/apachectl start

   在httpd.conf配置文件中使用ServerName为Apache服务器设置的主机域名,应该在域的授权dns服务     器中进行A记录的设置。

  重新启动httpd服务程序

  #/usr/local/apache2/bin/apachectl restart

  测试httpd.conf的语法

  #bin/apachect1 -t
  Syntax OK


------------------------------------------------------------------------------------------
  Apache配置文件解析

  httpd.conf文件的注释行的信息太多,获得完整的有效的配置清单需下列命令

  #grep -v "#" conf/httpd.conf | head -5

  截取文件httpd.conf文件中非#字符开头的字段中的前五行

----------------------
httpd.conf中的全局配置 :这些配置项不包括在任何区域中,决定了Apache服务器的全局设置

以下是httpd.conf文件中比较常用的全局配置内容:

-----------------------------------------------------------------
ServerRoot "/usr/local/apache2"           -------------1

pidFile logs/httpd.pid                    ------------2

Timeout 300                              -------------3

KeepAlive On                             -------------4

MaxKeepAliveRequests 100                 -------------5

KeepAliveTimeout 15                      -------------6

Listen 80                                -------------7

ServerAdmin you@example.com              -------------8

ServerName www.ltest.com:80              --------------9

DocumentRoot "/usr/local/apache2/htdocs" --------------10

ErrorLog logs/error_log                  ---------------11

Customlog logs/access_log common         ---------------12
 
--------------------------------------------------------------------
1.设置Apache服务器的跟目录,该目录包括了服务器运行必要的目录和文件
  在httpd.conf中,如果设置的目录或文件不使用绝对路径,都将被理解为是在服务器根目录下

2.设置保存httpd服务器程序进程号(PID)的文件 默认logs/httpd.pid 该"logs"目录位于Apache根目录下

3.用于设置Web服务器与浏览器之间网络连接的超时秒数,默认设置为300s

4.当设置为Off时服务器不使用保持连接功能,客户机的每次请求连接只能从服务器返回一个文件,传输效率比较低;当KeepAlive设置为On时,客户机与服务器建立一次连接后可以请求传输多个文件,提高了服务器传输文件的效率,建议保持连接。

5.当使用KeepAlive设置保持连接有效时,需要使用MaxKeepAliveRequests设置客户端每次连接允许请求相应的最大文件数,默认100个。

6.设置保持连接的超时秒数,当客户机的两次相邻请求超过该设置值时需要重新进行连接请求,默认为15s

7.Apache服务器监听的网络端口,默认80


8.设置Apache服务器管理员的E-mail地址,当服务器出现问题时 同过此地址联系管理员

9.ServerName 用于设置Apache服务器的主机名

10.用于设置Apache服务器网页(文档)根目录在Linux系统中的实际目录。Apache服务器中的服务器根目录(ServerRoot)和文档根目录(DocumentRoot)比较容易混淆,应格外注意。

11.错误日志的路径及文件名,默认logs/error_log

12.设置Apache服务器中访问日志文件的路径和格式类型.


-----------------------------------------------------------------------------------------------------------------------
建立系统用户的个人主页

在httpd.conf配置文件中已经默认使用UserDir设置项设置了用户的个人主页目录为public_html,即所有系统用户的宿主目录下如果有名为public_html的子目录,该目录将作为用户在Apache服务器中个人主页的文档根目录。

--------------------------------------------------
#grep UserDir /usr/local/apache2/conf/httpd.conf
--------------------------------------------------

下面以qq建立个人主页为例说明Apache服务器中个人主页的管理与应用

使用su命令将用户的身份由root转变为普通用户qq,当前目录变为宿主目录

-------------------
#su - qq
$pwd
/home/qq
-------------------

由于权限的严格访问 因此需要为其他用户增加进入宿主目录的权限

--------------------------------------
$chmod o+x .
--------------------------------------
public_html子目录默认并不存在,需要用户使用mkdir命令建立,目录建立后向里面建立index.html的文件,该文件为用户个人主页的首页

------------------------------------------------
$mkdir public_html
$vi pbulic_html/index.html
//输入文件的内容
------------------------------------------------

在地址栏中输入http://server.ip/~qq/

------------------------------------------------

如果能看到index.html文件的内容说明用户的个人主页建立成功。

==========================================================================================================================

域名虚拟主机的配置

下面将通过为"www.yahoo.com"和"www.baidu.com"在Apache服务器中配置虚拟主机为例,

     1.找到httpd.conf文件 配置主配置文件,#vi /etc/httpd/conf/httpd.conf


     2.在文件中的最后几行查到
 
     Name VirtualHost *:80     将其前面的#号去掉 ;

     3.再将下面几行例子复制到这行的下面 把每句的前面的#号都去掉 ;
 
 将其编辑成如下内容
              Name VirtualHost *:80
              <VirtualHost *:80>
               DocumentRoot /www/yahoo.com/html
               ServerName www.yahoo.com
               Errorlog /www/yahoo.com/logs/error_log
               CustomLog /www/yahoo.com/logs/access_log common
               </VirtualHost>
             <VirtualHost *:80>
               DocumentRoot /www/baidu.com/html
               ServerName www.baidu.com
               Errorlog /www/baidu.com/logs/error_log
               CustomLog /www/baidu.com/logs/access_log common
             </VirtualHost>

其各个目录的含义同上面的相同 这里就不做多余的累赘了!!!!!!!!

然后创建主配置文件中的相应的目录

#mkdir -p /www/yahoo.com/html
#mkdir -p /www/yahoo.com/logs
#mkdir -p /www/baidu.com/html
#mkdir -p /www/baidu.com/logs

再向目录中存放个网页文件 以用于测试

#echo "www.baidu.com" >/www/baidu.com/html/index.html
#echo "www.yahoo.com" >/www/yahoo.com/html/index.html

因为修改了主配置文件 因此要重启apache服务

#/usr/local/apache2/bin/apachectl stop
#
/usr/local/apache2/bin/apachectl start

查看端口 netstat -ant

然后在客户机上访问测验 如果没有做DNS服务器 可以找到hosts文件写入域名和IP的对应关系,以便能正确的访问到网站, 在地址栏分别输入 www.yahoo.com www.baidu.com 来测试 是否成功

-----------------------------------------------------------------------------------------