apache编译安装

  • apache编译安装已关闭评论
  • 163 次浏览
  • A+
所属分类:linux技术
摘要

镜像下载、域名解析、时间同步请点击 阿里云开源镜像站下面通过编译安装httpd来深入理解源码包安装(httpd-2.4.54)

镜像下载、域名解析、时间同步请点击 阿里云开源镜像站

源码包编译实例

下面通过编译安装httpd来深入理解源码包安装(httpd-2.4.54)

下载编译工具,httpd以及其两个依赖包的源码包

//源码包建议到官方网站下载

[root@lnh ~]# mkdir xbz [root@lnh ~]# cd xbz/ [root@lnh xbz]# dnf -y install gcc gcc-c++ make wget [root@lnh xbz]# wget https://mirrors.aliyun.com/apache/httpd/httpd-2.4.54.tar.gz [root@lnh xbz]# wget https://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz [root@lnh xbz]# wget https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz [root@lnh xbz]# ls apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz 

安装apr

[root@lnh xbz]# ls apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz [root@lnh xbz]# tar -xf apr-1.7.0.tar.gz  [root@lnh xbz]# ls  apr-1.7.0  apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz //将apr解压到当前目录 [root@lnh xbz]# cd apr-1.7.0/ [root@lnh apr-1.7.0]# ls apr-config.in  build-outputs.mk  helpers       misc           strings apr.dep        CHANGES           include       mmap           support apr.dsp        CMakeLists.txt    libapr.dep    network_io     tables apr.dsw        config.layout     libapr.dsp    NOTICE         test apr.mak        configure         libapr.mak    NWGNUmakefile  threadproc apr.pc.in      configure.in      libapr.rc     passwd         time apr.spec       docs              LICENSE       poll           tools atomic         dso               locks         random         user build          emacs-mode        Makefile.in   README build.conf     encoding          Makefile.win  README.cmake buildconf      file_io           memory        shmem //进入这个源码包可以看见里面被解压出来的东西 [root@lnh apr-1.7.0]# ./configure --prefix=/usr/local/src/apr ... configure: creating ./config.status config.status: creating Makefile config.status: creating include/apr.h config.status: creating build/apr_rules.mk config.status: creating build/pkg/pkginfo config.status: creating apr-1-config config.status: creating apr.pc config.status: creating test/Makefile config.status: creating test/internal/Makefile config.status: creating include/arch/unix/apr_private.h config.status: executing libtool commands rm: cannot remove 'libtoolT': No such file or directory config.status: executing default commands //生成Makefile 一般常用的有 --prefix=PREFIX 这个选项的意思是定义软件包安装到哪里 建议,源码包都是安装在/opt/目录下或者/usr/local/src目录下面 [root@lnh apr-1.7.0]# make ... gcc -E -DHAVE_CONFIG_H  -DLINUX -D_REENTRANT -D_GNU_SOURCE   -I./include -I/root/xbz/apr-1.7.0/include/arch/unix -I./include/arch/unix -I/root/xbz/apr-1.7.0/include/arch/unix -I/root/xbz/apr-1.7.0/include -I/root/xbz/apr-1.7.0/include/private -I/root/xbz/apr-1.7.0/include/private  export_vars.c | sed -e 's/^#[^!]*//' | sed -e '/^$/d' >> apr.exp sed 's,^(location=).*$,1installed,' < apr-1-config > apr-config.out sed -e 's,^(apr_build.*=).*$,1/usr/local/src/apr/build-1,' -e 's,^(top_build.*=).*$,1/usr/local/src/apr/build-1,' < build/apr_rules.mk > build/apr_rules.out make[1]: Leaving directory '/root/xbz/apr-1.7.0' //编译生成Makefile,此处虽然出现了make[1]: Leaving directory '/root/xbz/apr-1.7.0',但是没关系可以继续进行下一步安装 [root@lnh apr-1.7.0]# make install ... /usr/bin/install -c -m 755 /root/xbz/apr-1.7.0/build/mkdir.sh /usr/local/src/apr/build-1 for f in make_exports.awk make_var_export.awk; do      /usr/bin/install -c -m 644 /root/xbz/apr-1.7.0/build/${f} /usr/local/src/apr/build-1;  done /usr/bin/install -c -m 644 build/apr_rules.out /usr/local/src/apr/build-1/apr_rules.mk /usr/bin/install -c -m 755 apr-config.out /usr/local/src/apr/bin/apr-1-config //进行安装 [root@lnh apr-1.7.0]# cd /usr/local/src/apr/ [root@lnh apr]# ls bin  build-1  include  lib //进入apr的路径进行查看,默认情况下,系统搜索库文件的路径只有/lib,/usr/lib,我们需要进行修改在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中。此时库文件增添的搜索路径重启后有效,若要使用增添的路径立即生效则要使用ldconfig命令 [root@lnh apr]# cd /etc/ld.so.conf.d/ [root@lnh ld.so.conf.d]# echo /usr/local/src/apr/lib/ >apr.conf [root@lnh ld.so.conf.d]# cd - /usr/local/src/apr //切换到前一个工作目录 [root@lnh apr]# ldconfig  //使命令生效 [root@lnh apr]# ln -s /usr/local/src/apr/include/ /usr/include/apr [root@lnh apr]# ll /usr/include/apr                        lrwxrwxrwx. 1 root root 27 Jul 12 20:31 /usr/include/apr -> /usr/local/src/apr/include/ //将头文件软链接到/usr/include目录下 

安装apr-util

[root@lnh xbz]# dnf -y install expat-devel libxml2-devel pcre-devel //需要先安装这个依赖 [root@lnh xbz]# ls apr-1.7.0  apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz [root@lnh xbz]# tar -xf apr-util-1.6.1.tar.gz  [root@lnh xbz]# ls apr-1.7.0         apr-util-1.6.1         httpd-2.4.54.tar.gz apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz //解压到当前目录 [root@lnh xbz]# cd apr-util-1.6.1/ [root@lnh apr-util-1.6.1]# ls aprutil.dep       CHANGES            include         NWGNUmakefile aprutil.dsp       CMakeLists.txt     ldap            README aprutil.dsw       config.layout      libaprutil.dep  README.cmake aprutil.mak       configure          libaprutil.dsp  README.FREETDS apr-util.pc.in    configure.in       libaprutil.mak  redis apr-util.spec     crypto             libaprutil.rc   renames_pending apu-config.in     dbd                LICENSE         strmatch buckets           dbm                Makefile.in     test build             docs               Makefile.win    uri build.conf        encoding           memcache        xlate buildconf         export_vars.sh.in  misc            xml build-outputs.mk  hooks              NOTICE //进入源码包查看被解压出来的东西 [root@lnh apr-util-1.6.1]# ./configure --prefix=/usr/local/src/apr-util --with-apr=/usr/local/src/apr ... configure: creating ./config.status config.status: creating Makefile config.status: creating export_vars.sh config.status: creating build/pkg/pkginfo config.status: creating apr-util.pc config.status: creating apu-1-config config.status: creating include/private/apu_select_dbm.h config.status: creating include/apr_ldap.h config.status: creating include/apu.h config.status: creating include/apu_want.h config.status: creating test/Makefile config.status: creating include/private/apu_config.h config.status: executing default commands //生成Makefile文件,需要伴随着上一个指定的依赖 [root@lnh apr-util-1.6.1]# make ... gcc -E -DHAVE_CONFIG_H  -DLINUX -D_REENTRANT -D_GNU_SOURCE   -I/root/xbz/apr-util-1.6.1/include -I/root/xbz/apr-util-1.6.1/include/private  -I/usr/local/src/apr/include/apr-1    exports.c | grep "ap_hack_" | sed -e 's/^.*[)](.*);$/1/' >> aprutil.exp gcc -E -DHAVE_CONFIG_H  -DLINUX -D_REENTRANT -D_GNU_SOURCE   -I/root/xbz/apr-util-1.6.1/include -I/root/xbz/apr-util-1.6.1/include/private  -I/usr/local/src/apr/include/apr-1    export_vars.c | sed -e 's/^#[^!]*//' | sed -e '/^$/d' >> aprutil.exp sed 's,^(location=).*$,1installed,' < apu-1-config > apu-config.out make[1]: Leaving directory '/root/xbz/apr-util-1.6.1' //编译生成的Makefile文件,出现make[1]: Leaving directory '/root/xbz/apr-util-1.6.1'这个没有关系可以继续进行下一步安装 [root@lnh apr-util-1.6.1]# make install ... See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- /usr/bin/install -c -m 644 aprutil.exp /usr/local/src/apr-util/lib /usr/bin/install -c -m 755 apu-config.out /usr/local/src/apr-util/bin/apu-1-config //进行安装 [root@lnh apr-util-1.6.1]# cd /usr/local/src/apr-util/ [root@lnh apr-util]# ls bin  include  lib //切换到apr-util安装目录进行查看,默认情况下,系统搜索库文件的路径只有/lib,/usr/lib,我们需要进行修改在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中。此时库文件增添的搜索路径重启后有效,若要使用增添的路径立即生效则要使用ldconfig命令 [root@lnh apr-util]# cd /etc/ld.so.conf.d/ [root@lnh ld.so.conf.d]# echo /usr/local/src/apr-util/ >apr-util.conf  [root@lnh ld.so.conf.d]# cd - /usr/local/src/apr-util //切换到上一个工作目录 [root@lnh apr-util]# ldconfig   //使其生效 [root@lnh apr-util]# ln -s /usr/local/src/apr-util/include/ /usr/include/apr-util [root@lnh apr-util]# ll /usr/include/apr-util lrwxrwxrwx. 1 root root 32 Jul 12 21:10 /usr/include/apr-util -> /usr/local/src/apr-util/include    //将头文件软链接到/usr/include目录下 

安装httpd

[root@lnh xbz]# tar -xf httpd-2.4.54.tar.gz  [root@lnh xbz]# ls apr-1.7.0         apr-util-1.6.1         httpd-2.4.54 apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz //解压到当前目录 [root@lnh xbz]# cd httpd-2.4.54/ [root@lnh httpd-2.4.54]# ls ABOUT_APACHE     CMakeLists.txt  InstallBin.dsp  README acinclude.m4     config.layout   LAYOUT          README.CHANGES Apache-apr2.dsw  configure       libhttpd.dep    README.cmake Apache.dsw       configure.in    libhttpd.dsp    README.platforms apache_probes.d  docs            libhttpd.mak    ROADMAP ap.d             emacs-style     LICENSE         server build            httpd.dep       Makefile.in     srclib BuildAll.dsp     httpd.dsp       Makefile.win    support BuildBin.dsp     httpd.mak       modules         test buildconf        httpd.spec      NOTICE          VERSIONING CHANGES          include         NWGNUmakefile changes-entries  INSTALL         os //查看被解压出来的东西 [root@lnh httpd-2.4.54]# ./configure --prefix=/usr/local/src/httpd --with-apr=/usr/local/src/apr --with-apr-util=/usr/local/src/apr-util ... config.status: creating build/config_vars.sh config.status: creating include/ap_config_auto.h config.status: executing default commands configure: summary of build options:      Server Version: 2.4.54     Install prefix: /usr/local/src/httpd     C compiler:     gcc     CFLAGS:          -g -O2 -pthread       CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE       LDFLAGS:                LIBS:                  C preprocessor: gcc -E  //生成Makefile文件 [root@lnh httpd-2.4.54]# make ... /usr/local/src/apr/build-1/libtool --silent --mode=link gcc  -g -O2 -pthread           -o mod_rewrite.la -rpath /usr/local/src/httpd/modules -module -avoid-version  mod_rewrite.lo  make[4]: Leaving directory '/root/xbz/httpd-2.4.54/modules/mappers' make[3]: Leaving directory '/root/xbz/httpd-2.4.54/modules/mappers' make[2]: Leaving directory '/root/xbz/httpd-2.4.54/modules' make[2]: Entering directory '/root/xbz/httpd-2.4.54/support' make[2]: Leaving directory '/root/xbz/httpd-2.4.54/support'  make[1]: Leaving directory '/root/xbz/httpd-2.4.54' //编译生成Makefile文件,出现的一些没有读取到的问题没有关系,继续进行下一步 [root@lnh httpd-2.4.54]# make install ... Installing man pages and online manual mkdir /usr/local/src/httpd/man mkdir /usr/local/src/httpd/man/man1 mkdir /usr/local/src/httpd/man/man8 mkdir /usr/local/src/httpd/manual make[1]: Leaving directory '/root/xbz/httpd-2.4.54' //进行安装 [root@lnh httpd-2.4.54]# cd /usr/local/src/httpd/ [root@lnh httpd]# ls bin    cgi-bin  error   icons    logs  manual build  conf     htdocs  include  man   modules //切换到httpd的安装目录进行查看,默认情况下,系统搜索库文件的路径只有/lib,/usr/lib [root@lnh httpd]# ln -s /usr/local/src/httpd/include/ /usr/include/httpd [root@lnh httpd]# ll  /usr/include/httpd lrwxrwxrwx. 1 root root 29 Jul 12 21:23 /usr/include/httpd -> /usr/local/src/httpd/include/ //将头文件软链接到/usr/include目录下 [root@lnh httpd]# echo "export PATH=$PATH:/usr/local/src/httpd/bin" > /etc/profile.d/httpd.sh [root@lnh httpd]# source /etc/profile.d/httpd.sh  //配置httpd的全局环境变量,并生成效果 [root@lnh httpd]# which httpd  /usr/local/src/httpd/bin/httpd [root@lnh httpd]# vim /etc/man_db.conf MANDATORY_MANPATH                 /usr/man MANDATORY_MANPATH                 /usr/share/man MANDATORY_MANPATH                 /usr/local/share/man MANDATORY_MANPATH                 /usr/local/src/httpd/man //添加后面这一行 [root@lnh ~]# httpd AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe57:f6f5%ens33. Set the 'ServerName' directive globally to suppress this message httpd (pid 35719) already running //启动服务 [root@lnh ~]#  netstat -antp | grep httpd tcp6       0      0 :::80                   :::*                    LISTEN      35719/httpd   [root@lnh ~]# ss -antl State   Recv-Q  Send-Q   Local Address:Port     Peer Address:Port  Process   LISTEN  0       128            0.0.0.0:22            0.0.0.0:*               LISTEN  0       128                  *:80                  *:*               LISTEN  0       128               [::]:22               [::]:* //查看端口               [root@lnh ~]# systemctl stop firewalld.service //关闭防火墙 

服务80端口

apache编译安装

将httpd服务加入systemd

[root@lnh ~]# cd /usr/lib/systemd/system [root@lnh system]# cp sshd.service httpd.service [root@lnh system]# vim httpd.service  [Unit] Description=httpd server daemon   //服务 After=network.target sshd-keygen.target  [Service] Type=forking ExecStart=/usr/local/src/httpd/bin/httpd  //服务安装的地方 开启 ExecStop=/usr/local/src/httpd/bin/httpd  -s stop  //停止 ExecReload=/bin/kill -HUP $MAINPID   //重新加载并发出信号(对pid对组程序的进程号)可留可删  [Install] WantedBy=multi-user.target [root@lnh system]# systemctl daemon-reload  //重新加载一下并生效 [root@lnh system]# systemctl status httpd.service  ● httpd.service - httpd server daemon    Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor >    Active: inactive (dead) //查看一下是否有这个服务 [root@lnh system]# ss -antl State   Recv-Q  Send-Q   Local Address:Port     Peer Address:Port  Process   LISTEN  0       128            0.0.0.0:22            0.0.0.0:*               LISTEN  0       128               [::]:22               [::]:*     //这里要确保之前的httpd这个80端口关了,此处没有就是关了 [root@lnh system]# systemctl enable --now httpd.service  Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. //表示设置开机自启的同时候把它立刻启动 [root@lnh system]# systemctl status httpd.service  ● httpd.service - httpd server daemon    Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor p>    Active: active (running) since Tue 2022-07-12 23:15:02 CST; 2min 11s ago   Process: 36389 ExecStart=/usr/local/src/httpd/bin/httpd (code=exited, sta>  Main PID: 36390 (httpd)     Tasks: 82 (limit: 11205)    Memory: 24.3M    CGroup: /system.slice/httpd.service            ├─36390 /usr/local/src/httpd/bin/httpd            ├─36391 /usr/local/src/httpd/bin/httpd            ├─36392 /usr/local/src/httpd/bin/httpd            └─36393 /usr/local/src/httpd/bin/httpd  Jul 12 23:15:02 lnh systemd[1]: Starting httpd server daemon... Jul 12 23:15:02 lnh httpd[36389]: AH00558: httpd: Could not reliably determ> Jul 12 23:15:02 lnh systemd[1]: Started httpd server daemon. //查看状态,发现启动了并且也设置了开机自启 [root@lnh system]# ss -antl State   Recv-Q  Send-Q   Local Address:Port     Peer Address:Port  Process   LISTEN  0       128            0.0.0.0:22            0.0.0.0:*               LISTEN  0       128                  *:80                  *:*               LISTEN  0       128               [::]:22               [::]:*     //查看80端口  [root@lnh system]# systemctl disable httpd.service  Removed /etc/systemd/system/multi-user.target.wants/httpd.service. //关闭开机自启          

apache编译安装

源码编译报错信息处理

checking for APR... no configure: error: APR not found.  Please read the documentation. //解决方案 [root@lnh xbz]# wget https://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz [root@lnh xbz]# wget https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz 提前把这两个依赖包安装好才可以进行生成Makefile文件  无法进行生成两个依赖包的Makefile文件 //解决方案 [root@lnh xbz]# dnf -y install gcc gcc-c++ make wget 提前下载编译工具  [root@lnh ~]#  netstat -antp | grep httpd -bash: netstat: command not found //解决方案 [root@lnh ~]# dnf provides netstat dnf -y install net-tools-2.0-0.52.20160912git.el8.x86_64 //寻找需要的包并进行下载 

本文转自:https://www.cnblogs.com/tushanbu/p/16473452.html