• 源码编译httpd2.4.46 Alex


    APR

    APR 下载网址:

    http://apr.apache.org/download.cgi

    #下载bz2 的因为这个包相对来说小一点

    Apache 下载网址:

    http://httpd.apache.org/download.cgi#apache24

    总共下了这三个包

    apr-util-1.6.1.tar.bz

    apr-1.7.0.tar.bz2

    httpd-2.4.46.tar.bz2

    useradd -s /sbin/nologin -r apache
    先创建个Apache nologin的系统用户吧,不然后面启动的时候会卡主的

    一、解压缩到当前目录下(gz后缀的就用gz的解压命令)

    1 tar xf apr-1.7.0.tar.bz2 ;tar xf apr-util-1.6.1.tar.bz2 ;tar xf httpd-2.4.46.tar.bz2 

    如果提示报错,可以确认是否安装了bz2的包:yum -y install bzip2

    二、将解压缩完的apr包,合并到httpd的包的srclib里面,分别更改名字为apr和apr-util(此处也可以用mv 移动)

    1 cp -r apr-1.7.0 httpd-2.4.46/srclib/apr
    2 cp -r apr-util-1.6.1 httpd-2.4.46/srclib/apr-util

    三、安装编译需要的依赖包

    yum install gcc pcre-devel openssl-devel expat-devel -y

    四、进入刚刚解压缩的httpd目录里

    cd httpd-2.4.46

    五、生成Makefile 文件,安装路径 app/httpd24,现在是不存在的,等会会自动创建

    ./configure \
    --prefix=/app/httpd24 \
    --enable-so \
    --enable-ssl \
    --enable-cgi \
    --enable-rewrite \
    --with-zlib \
    --with-pcre \
    --with-included-apr \
    --enable-modules=most \
    --enable-mpms-shared=all \
    --with-mpm=prefork

    六、编译

    1 make && make install

    或者,表示多核一起编译(下面的数字8取决于CPU核数)

    make -j 8 && make install 

    七、进入刚刚存放路径的位置

    cd /app/httpd24/

    八、修改PATH变量,

    echo 'PATH=/app/httpd24/bin:$PATH' > /etc/profile.d/httpd24.sh

    PATH变量修改错了,点击此处补救 (#不要问我为什么,因为我刚经历过)

    这里用单引号而不是用双引号是因为双引号生成会重复,如下

    单引号:

    PATH=/app/httpd24/bin:$PATH

    双引号

    PATH=/app/httpd24/bin:/app/httpd24/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

    九、让刚刚生成的PATH变量生效

    . /etc/profile.d/httpd24.sh

    十、启动服务

    1 apachectl start
    2 #按步骤启动后的提示暂时问题不大,可以不管,只是个提示
    3 apachect stop 
    4 #关闭服务
    5 apachect restart 
    6 #重启服务
    7 #编译或者非编译安装的都可以用这个管理,当然这个管理了。systemctl status httpd 也看不到现在的状态,systemctl 只能查看到通过这个命令开启关闭的信息
    建议将用户和组修改为apache
    1 vim /app/httpd24/conf/httpd.conf 
    2 #通过/User 可以快速定位到用户这行,
    3 User apache
    4 Group apache
    5 #将默认的用户修改为apache

    十一、这里存放的路径不在/var/www/html/下 ,自己编译的存放网页的默认路径是/app/httpd24/htdocs/

    十二、编译的配置文件在/app/httpd24/conf/httpd.conf

    十三、开机自启动httpd

    vim /etc/rc.local
    
    /app/httpd24/bin/apachectl start
    #这个文件没有执行权限,而且是个软连接,需要对他原本的文件添加执行权限
    chmod +x  rc.d/rc.local

    重启系统之后,确认是否开机自启动,因为不是通过systemctl管理的,所以不能通过systemctl status 查看状态,不过可以通过ss -ntl |grep 80 查看80端口是否打开,打开则表示可以正常访问

    到此就完成了编译安装httpd2.4

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

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

    如果需要systemctl 管理httpd的话,需要做如下操作

    /etc/sysconfig/httpd ,必须要这个文件,yum安装的有这个,自己编译的没有这个

    cat /etc/sysconfig/httpd 
    #
    # This file can be used to set additional environment variables for
    # the httpd process, or pass additional options to the httpd
    # executable.
    #
    # Note: With previous versions of httpd, the MPM could be changed by
    # editing an "HTTPD" variable here.  With the current version, that
    # variable is now ignored.  The MPM is a loadable module, and the
    # choice of MPM can be changed by editing the configuration file
    # /etc/httpd/conf.modules.d/00-mpm.conf.
    # 
    
    #
    # To pass additional options (for instance, -D definitions) to the
    # httpd binary at startup, set OPTIONS here.
    #
    #OPTIONS=
    
    #
    # This setting ensures the httpd process is started in the "C" locale
    # by default.  (Some modules will not behave correctly if
    # case-sensitive string comparisons are performed in a different
    # locale.)
    #
    LANG=C

    2、

    cat /usr/lib/systemd/system/httpd24.service 
    [Unit]
    Description=The Apache HTTP Server
    After=network.target remote-fs.target nss-lookup.target
    Documentation=man:httpd(8)
    Documentation=man:apachectl(8)
    
    [Service]
    Type=forking
    EnvironmentFile=/etc/sysconfig/httpd
    ExecStart=/app/httpd24/bin/httpd  $OPTIONS -k start
    ExecReload=/app/httpd24/bin/httpd   $OPTIONS -k graceful
    ExecStop=/bin/kill -WINCH ${MAINPID}
    # We want systemd to give httpd some time to finish gracefully, but still want
    # it to kill httpd after TimeoutStopSec if something went wrong during the
    # graceful stop. Normally, Systemd sends SIGTERM signal right after the
    # ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
    # httpd time to finish.
    KillSignal=SIGCONT
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target

    将这两个配置文件添加到对应的路径,cat 后面是绝对路径,

    十四、将刚刚修改的生效

    systemctl daemon-reload

    此时通过systemctl start httpd24 就可以开启和关闭了

  • 相关阅读:
    snaker数据库表说明
    Oracle 导入、导出DMP(备份)文件
    eclipse debug无法启动
    java----事务
    java----单例模式
    java----spring框架
    mybatis----批量增加与批量删除
    web应用程序状态管理
    JavaWeb----servlet
    HTML / CSS----元素分类
  • 原文地址:https://www.cnblogs.com/alexlv/p/14592758.html
Copyright © 2020-2023  润新知