Apache Httpd服务器之基础教程

Httpd服务器是Apache产品线下的一款web服务器,常与PHP或Python等CGI脚本一起配合使用,为用户提供动态Web服务。httpd,从名字就可以看出,它提供的主要是基于http协议的Web服务。本篇为介绍Httpd服务器的第一篇,主要介绍下Httpd服务器的安装,运行模式,容器配置,以及CGI的配置,目的是使大家能通过阅读此篇文章来从零建立起一个可运行的Web服务器。

Httpd从哪下载?请访问,这里就有最新的httpd服务器的源码。如果想把你的服务器部署在生产环境,又或者不想在使用过程中出现一些意想不到的问题的话,还是下载Stable Release版比较好。目前的稳定版本为2.4.10。

如果我们的操作系统是Linux,下载好httpd-2.4.10.tar.gz后,我们就可以通过tar zxvf httpd-2.4.10.tar.gz命令释出所有的源代码。但此时不见得能够成功的对源代码进行编译安装,因为要安装httpd服务器,首先得安装好几个其它的软件,他们分别是APR,APR-Util,PCRE,ZLIB。请确保APR,APR-Util,PCRE以及ZLIB都是最新的版本,尽量不要用yum库里的版本,因为如果你的操作系统不是最新的版本,比如你的操作系统为CentOS 5,那么当你使用yum安装APR时,就会安装到老版本的APR,从而导致2.4.10的httpd服务器编译失败(当然还是推荐使用新版本的操作系统,否则可能会出其它问题,如C编译器版本,autoconf版本问题等,会带来一些麻烦)。所以为了不区分与平台,我们还是麻烦下,通过官方发布的最新版本的源代码来编译安装这些前置软件。APR及APR-Util的下载地址在上,在这里你可以下载到APR 1.5.1及APR-Util 1.5.4。PCRE下载地址在。在这里下载PCRE 8.36。ZLIB下载地址在,下载后,我们有apr-1.5.1.tar.gz,apr-util-1.5.4.tar.gz,pcre-8.36.tar.gz,zlib-1.2.8.tar.gz这三个文件。我以人格担保,它们与httpd 2.4.10是100%匹配的。

在安装httpd之前,我们应先安装好apr,apr-util,pcre及zlib。下面就给出安装它们的具体过程,值得注意的是apr应在apr-util之前安装好,因为apr-util依赖于apr。下面假如你所有的文件都在/usr/local下。

apr安装过程:

cd /usr/local/apr-1.5.1
        ./configure —prefix=/usr/local/apr
        make && make install

apr-util安装过程:

cd /usr/local/apr-util-1.5.4
        ./configure —prefix=/usr/local/apr-util —with-apr=/usr/local/apr

pcre安装过程:

cd /usr/local/pcre-8.36
        ./configure —prefix=/usr/local/pcre
        make && make install

zlib安装过程:

cd /usr/local/zlib-1.2.8
        ./configure —prefix=/usr/local/zlib
        make && make install

安装完以上三个前置软件,就可以安装apache httpd服务器了。
    httpd安装过程:

cd /usr/local/httpd-2.4.10
        ./configure —prefix=/usr/local/httpd \
        —with-apr=/usr/local/apr \
        —with-apr-util=/usr/local/apr-util \ 
        —with-pcre=/usr/local/pcre \ 
        —with-z=/usr/local/zlib —with-mpm=worker \
        —enable-modules=all —enable-so
        make && make install

其中 —with-mpm为多路处理模块的设置,如设置为worker,则系统将以多进程多线程模型运行,这种设置适合于配合php-fpm管理php cgi进程,但不适合通过libphp.so模块进行php内容的解析。—enable-modules代表启动httpd内所有模块.—enable-so代表启动动态库加载功能(这个是默认就开启的)。前面的—with-xxx是所需要的前置软件的安装路径。
    这样,我们就完成了httpd的安装工作。在启动httpd前,我们应对httpd进行必要的配置。httpd的配置文件名为httpd.conf,位置在/usr/local/httpd/conf/httpd.conf。下面就简单的介绍下我们的httpd配置文件。
    httpd的配置文件分为全局和容器两个部分,在容器外的配置指令即为全局指令,在整个配置文件范围内均有效,而容器内的指令,则只在容器范围内有效。那么什么是容器呢?简单点说,大部分以尖括号<xxx>开头,以</xxx>结尾的就是容器。比如<Directory></Directory>,又比如<Location></Location>等。首先讨论下常用的全局指令,基础的常用的全局指令有ServerRoot,Listen,LoadModule,User,Group,ServerName,DocumentRoot等。因为此篇是基础,所以也就只简单介绍下比较基础的^_^。
    ServerRoot,为服务器所在根目录,一般为服务器的安装目录,配置文件里的相对路径一般以它作为参照。
    Listen,服务器的监听端口,可以以IP:端口的形式设置,也可以只设置端口。如果设置了IP,则服务器只会监听此IP对应的网络接口。
    LoadModule,加载动态库,比如你要开启代理功能,那么应该利用LoadModule加载proxy.so模块。
        User,服务器运行时使用的用户名,此用户为Linux系统用户。
    Group,服务器运行时使用的用户组,此用户组为Linux系统用户组。
    ServerName,服务器名可用你申请的域名或IP表示,不设置这个在启动时会有一个警告,但也不会报错。设不设置无所谓啦。
    DocumentRoot,服务器检索内容的根目录,比如用户在浏览器输入url为,那么这个index.html在哪呢?就在DocumentRoot设置的值下。
    这些指令,一般默认的配置文件已经帮你设置好了,除非你的80端口被某项进程所占,否则服务器应该能正常启动。可以通过linux命令netstat -ant查看tcp端口的情况。如果在Local Address这一列没看到80端口被占用的话,恭喜你,启动服务器吧。否则,请更改Listen的值。
    如果你不需要建立虚拟主机,也许<Directory>容器会是你主要的设置点。Directory按字面意义就是设置目录,设置服务器检索内容的目录。如果你的DocumentRoot的值为/usr/local/httpd/htdocs。那么当用户的uri为index.html时,服务器将在/usr/local/httpd/htdocs下寻找index.html文件,当uri为test/index.php时,服务器将在/usr/local/httpd/htdocs/test下寻找index.php文件。那么如果我想在/usr/local/httpd/htdocs自定义一些设置,比如想显示目录下的文件列表,就应该利用<Directory>容器。下面是一段目录设置代码:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b71e578a01925d47961a251d72e598a3.html