阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下编译安装Apache httpd 2.4

197次阅读
没有评论

共计 5085 个字符,预计需要花费 13 分钟才能阅读完成。

Apache 是世界使用排名第一的 Web 服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。当前 Apache 版本为 2.4,本文主要描述基于 CentOS 6.5 以源码方式安装 Apache httpd。

一、编译安装的优势

源码的编译安装一般由 3 个步骤组成:配置(configure),通常依赖 gcc 编译器,binutils,glibc。配置软件特性,检查编译环境,生成 Makefile 文件
    编译(make)
    安装(make install)

优势
    自定义软件功能
    优化编译参数,提高性能
    解决不必要的软件间依赖
    方便清理与卸载

configure 是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –-help 输出详细的选项列表。常用的选项
--prefix
    该选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在 /usr /local/bin,库文件默认放在 /usr/local/lib,配置文件默认放在 /usr/local/etc,其它的资源文件放在 /usr /local/share

    如果配置 --prefix,如:./configure --prefix=/usr/local/test
    则可以把所有资源文件放在 /usr/local/test 的路径中,不会杂乱。用了—prefix 选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。当然要卸载程序,也可以在原来的 make 目录下用一次 make uninstall,但前提是 make 文件指定过 uninstall。

二、httpd 的版本

版本:httpd-1.3
    httpd-2.0
    httpd-2.2
    httpd-2.4

三、httpd 2.4 的新特性

1) MPM 支持运行时装载
    --enable-mpms-shared=all --with-mpm=prefork|worker|event
2) 支持 event MPM
3) 异步读写支持
4) 支持每模块及每目录分别使用不同的日志级别
5) 支持 per-request(即支持 <If>, <ElseIf>, and <Else> 条件判断)
6) 增强版的表达式分析器;7) 支持毫秒级 keepalive timeout;
8) 基于 FQDN(域名)的虚拟主机不再需要 NameVirtualHost;9) 支持用户使用自定义变量;新增一些模块:mod_proxy_fcgi,mod_ratelimit, mod_request, mod_remoteip

修改了一些配置机制:不再支持使用 order, allow, deny 来实现基于 IP 的访问控制;

四、编译安装 httpd 2.4

1、依赖关系  
    httpd 依赖于 apr, apr-util
    apr 全称为 apache portable runtime,能实现 httpd 跨平台运行

    httpd-2.4 依賴于 1.4+及以上版本的 apr

        apr-1.5.0.tar.bz2
        apr-util-1.5.3.tar.bz2
        httpd-2.4.9.tar.bz2

        pcre-devel 包
        openssl-devel

2、编译安装      
    # yum install gcc
    # yum install pcre-devel

    # tar xf apr-1.5.0.tar.bz2
    # cd apr-1.5.0
    # ./configure --prefix=/usr/local/apr   (--prefix 指定 apr 安装的目录)
    # make
    # make  install

    # tar xf apr-util-1.5.3.tar.bz2
    # cd apr-util-1.5.3
    # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr


    # tar xf httpd-2.4.9.tar.bz2
        以下为几个主要的配置项
        --sysconfdir=/etc/httpd24  指定配置文件路径
        --enable-so  启动模块动态装卸载
        --enable-ssl 编译 ssl 模块
        --enable-cgi 支持 cgi 机制(能够让静态 web 服务器能够解析动态请求的一个协议)        --enable-rewrite  支持 url 重写     --Author : Leshami
        --with-zlib  支持数据包压缩       --Blog   : http://blog.csdn.net/leshami
        --with-pcre  支持正则表达式
        --with-apr=/usr/local/apr  指明依赖的 apr 所在目录
        --with-apr-util=/usr/local/apr-util/  指明依赖的 apr-util 所在的目录
        --enable-modules=most      启用的模块
        --enable-mpms-shared=all   以共享方式编译的模块
        --with-mpm=prefork         指明 httpd 的工作方式为 prefork

    # cd httpd-2.4.9
    # ./configure                           \
        --with-apr=/usr/local/apr           \
        --with-apr-util=/usr/local/apr-util \
        --prefix=/usr/local/apache \
        --sysconfdir=/etc/httpd24  \
        --enable-so                \
        --enable-ssl               \
        --enable-cgi               \
        --enable-rewrite           \
        --with-zlib                \
        --with-pcre                \
        --with-mpm=prefork         \
        --enable-modules=most      \
        --enable-mpms-shared=all   

    # make 
    # make install

五、配置 http2.4 启动及停止

1、修改端口号
    修改端口号使得与 2.2 版本使用不同的端口,可以同时运行,修改后如下
        # cat /etc/httpd24/httpd.conf |grep Listen |grep -v ^#
        Listen 8080

2、启动与停止
    # /usr/local/apache/bin/apachectl start
    # netstat -nltp|grep 80
    tcp        0      0 :::8080    :::*     LISTEN      17365/httpd  

    # /usr/local/apache/bin/apachectl status
    Not Found
       The requested URL /server-status was not found on this server.

    通过修改 httpd.conf,增加如下配置
    # grep server-stat /etc/httpd24/httpd.conf -A5
        <Location /server-status>
            SetHandler server-status
        #    Order deny,allow
        #    Deny from all
            Allow from 192.168.21.157 192.168.21.10
        </Location>

    # /usr/local/apache/bin/apachectl restart
    # /usr/local/apache/bin/apachectl status
       Apache Server Status for localhost (via 127.0.0.1)
       Server Version: Apache/2.4.9 (Unix)
       Server MPM: prefork
           ..........

    # /usr/local/apache/bin/apachectl stop

3、配置自启动文件   
    可以通过复制 2.2 版本的启动文件,修改相关路径后将 2.4 版作为单独服务运行,如下
    注启动文件 pid 文件位置要配置成与 /usr/local/apache/bin/apachectl - V 看到的 pid 位置一致
        查看 pid 位置
        # /usr/local/apache/bin/apachectl -V|grep pid
         -D DEFAULT_PIDLOG="logs/httpd.pid"

        # cp /etc/init.d/httpd /etc/init.d/httpd24 
        # vi /etc/init.d/httpd24  
        # diff /etc/init.d/httpd /etc/init.d/httpd24 
            26,27c26,27
            < if [-f /etc/sysconfig/httpd]; then
            <         . /etc/sysconfig/httpd
            ---
            > if [-f /etc/httpd24]; then
            >         . /etc/httpd24
            42,46c42,46
            < apachectl=/usr/sbin/apachectl
            < httpd=${HTTPD-/usr/sbin/httpd}
            < prog=httpd
            < pidfile=${PIDFILE-/var/run/httpd/httpd.pid}
            < lockfile=${LOCKFILE-/var/lock/subsys/httpd}
            ---
            > apachectl=/usr/local/apache/bin/apachectl
            > httpd=${HTTPD-/usr/local/apache/bin/httpd}
            > prog=httpd24
            > pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid}
            > lockfile=${LOCKFILE-/var/lock/subsys/httpd24}

        # service httpd24 start
        Starting httpd24:                          [OK]
        # service httpd24 status
        httpd (pid  15641) is running...

        # netstat -nltp|grep 80
        tcp        0      0 :::80     :::*     LISTEN      15677/httpd   ###2.2 版 httpd       
        tcp        0      0 :::8080   :::*     LISTEN      15641/httpd   ###2.4 版 httpd

    可以通过复制 apachectl 文件生成服务脚本     
        # cp /usr/local/apache/bin/apachectl /etc/init.d/httpd249

        # service httpd249 start
        # service httpd249 status
        ELinks: Connection refused    ### 该方式无法查看到状态     

        [root@orasrv1 bin]# netstat -nltp|grep 80
        tcp        0      0 :::8080     :::*     LISTEN      15999/httpd   

    最后将配置文件添加到服务,以下为 http24 为例
        # chkconfig --add httpd24
        # chkconfig httpd24 on

六、配置 man 手册

    vi /etc/man.config
    MANPATH /usr/local/apache/man

七、验证

# echo "This is a apached 2.4.9 version">>/usr/local/apache/htdocs/index.html    
# curl http://192.168.21.10:8080 
<html><body><h1>It works!</h1></body></html> 
This is a apached 2.4.9 version

 

Ubuntu Server 14.04 安装 Web 服务器(Linux+Apache+MySQL+PHP)  http://www.linuxidc.com/Linux/2015-06/119061.htm

Linux 下安装配置 PHP 环境(Apache2)  http://www.linuxidc.com/Linux/2015-05/118062.htm

Ubuntu 13.04 安装 LAMP\Vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

CentOS 5.9 下编译安装 LAMP(Apache 2.2.44+MySQL 5.6.10+PHP 5.4.12) http://www.linuxidc.com/Linux/2013-03/80333p3.htm

RedHat 5.4 下 Web 服务器架构之源码构建 LAMP 环境及应用 PHPWind http://www.linuxidc.com/Linux/2012-10/72484p2.htm

Apache 的详细介绍:请点这里
Apache 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/130294.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5085字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中