编程语言
首页 > 编程语言> > Apache源码安装

Apache源码安装

作者:互联网

目录

1. 下载编译工具和源码包及其依赖包

下载编译工具
[root@mr ~]# dnf -y install gcc gcc-c++ make wget
CentOS Stream 8 - AppStream                                     18 kB/s |  24 MB     22:02    
CentOS Stream 8 - BaseOS                                        22 kB/s |  23 MB     17:49    
CentOS Stream 8 - Extras                                       330  B/s |  18 kB     00:55    
Last metadata expiration check: 0:00:01 ago on Fri 15 Jul 2022 09:33:24 AM CST.
Dependencies resolved.
......
Installed:
  binutils-2.30-117.el8.x86_64                   cpp-8.5.0-13.el8.x86_64                       
  gcc-8.5.0-13.el8.x86_64                        gcc-c++-8.5.0-13.el8.x86_64                   
  glibc-devel-2.28-206.el8.x86_64                glibc-gconv-extra-2.28-206.el8.x86_64         
  glibc-headers-2.28-206.el8.x86_64              isl-0.16.1-6.el8.x86_64                       
  kernel-headers-4.18.0-394.el8.x86_64           libmpc-1.1.0-9.1.el8.x86_64                   
  libpkgconf-1.4.2-1.el8.x86_64                  libstdc++-devel-8.5.0-13.el8.x86_64           
  libxcrypt-devel-4.1.1-6.el8.x86_64             make-1:4.2.1-11.el8.x86_64                    
  pkgconf-1.4.2-1.el8.x86_64                     pkgconf-m4-1.4.2-1.el8.noarch                 
  pkgconf-pkg-config-1.4.2-1.el8.x86_64          wget-1.19.5-10.el8.x86_64                     

Complete!
[root@mr ~]# 
下载源码包httpd-2.4.54.tar.gz,apr-1.7.0.tar.gz,apr-util-1.6.1.tar.gz
[root@mr ~]# wget https://mirrors.aliyun.com/apache/httpd/httpd-2.4.54.tar.gz
--2022-07-15 10:09:16--  https://mirrors.aliyun.com/apache/httpd/httpd-2.4.54.tar.gz
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 43.224.184.227, 45.253.17.212, 43.224.184.229, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|43.224.184.227|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9743277 (9.3M) [application/octet-stream]
Saving to: ‘httpd-2.4.54.tar.gz’

httpd-2.4.54.tar.gz     100%[==============================>]   9.29M   173KB/s    in 74s     

2022-07-15 10:10:35 (128 KB/s) - ‘httpd-2.4.54.tar.gz’ saved [9743277/9743277]

[root@mr ~]# wget https://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz
--2022-07-15 10:10:46--  https://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 43.224.184.228, 45.253.17.217, 45.253.17.215, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|43.224.184.228|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1093896 (1.0M) [application/octet-stream]
Saving to: ‘apr-1.7.0.tar.gz’

apr-1.7.0.tar.gz        100%[==============================>]   1.04M   167KB/s    in 6.4s    

2022-07-15 10:10:52 (167 KB/s) - ‘apr-1.7.0.tar.gz’ saved [1093896/1093896]

[root@mr ~]# wget https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz
--2022-07-15 10:11:01--  https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 45.253.17.212, 45.253.17.214, 43.224.184.225, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|45.253.17.212|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 554301 (541K) [application/octet-stream]
Saving to: ‘apr-util-1.6.1.tar.gz’

apr-util-1.6.1.tar.gz   100%[==============================>] 541.31K   175KB/s    in 3.1s    

2022-07-15 10:11:04 (175 KB/s) - ‘apr-util-1.6.1.tar.gz’ saved [554301/554301]
[root@mr ~]# ls
anaconda-ks.cfg  apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.gz
[root@mr ~]# 

2. 安装apr

[root@mr ~]# tar -xf apr-1.7.0.tar.gz (解压apr-1.7.0.tar.gz)
[root@mr ~]# cd apr-1.7.0
[root@mr apr-1.7.0]#  ./configure --prefix=/usr/local/src/apr    (生成Makefile
一般常用的有 --prefix=PREFIX 这个选项的意思是定义软件包安装到哪里
建议,源码包都是安装在/opt/目录下或者/usr/local/src目录下面)
......
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
[root@mr apr-1.7.0]# make(编译生成Makefile)
......
ude/arch/unix -I./include/arch/unix -I/root/apr-1.7.0/include/arch/unix -I/root/apr-1.7.0/include -I/root/apr-1.7.0/include/private -I/root/apr-1.7.0/include/private  exports.c | grep "ap_hack_" | sed -e 's/^.*[)]\(.*\);$/\1/' >> apr.exp
gcc -E -DHAVE_CONFIG_H  -DLINUX -D_REENTRANT -D_GNU_SOURCE   -I./include -I/root/apr-1.7.0/include/arch/unix -I./include/arch/unix -I/root/apr-1.7.0/include/arch/unix -I/root/apr-1.7.0/include -I/root/apr-1.7.0/include/private -I/root/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/apr-1.7.0'
[root@mr apr-1.7.0]# make install(进行安装)
make[1]: Entering directory '/root/apr-1.7.0'
make[1]: Nothing to be done for 'local-all'.
make[1]: Leaving directory '/root/apr-1.7.0'
/root/apr-1.7.0/build/mkdir.sh /usr/local/src/apr/lib /usr/local/src/apr/bin /usr/local/src/apr/build-1 \
	     /usr/local/src/apr/lib/pkgconfig /usr/local/src/apr/include/apr-1
......
    /usr/bin/install -c -m 644 /root/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@mr apr-1.7.0]# cd /usr/local/src/apr/(进入apr路径查看)
[root@mr apr]# ls
bin  build-1  include  lib
[root@mr apr]# cd /etc/ld.so.conf.d/
[root@mr ld.so.conf.d]# echo /usr/local/src/apr/lib/ >apr.conf
[root@mr ld.so.conf.d]# cd - (切换到前一个工作目录)
/usr/local/src/apr
[root@mr apr]# ldconfig (使命令生效)
[root@mr apr]# ln -s /usr/local/s
sbin/  share/ src/   
[root@mr apr]# ln -s /usr/local/src/apr/include/ /usr/include/apr(将头文件软链接到/usr/include目录下)
[root@mr apr]# ll /usr/include/apr
lrwxrwxrwx. 1 root root 27 Jul 15 10:27 /usr/include/apr -> /usr/local/src/apr/include/
[root@mr apr]# 

3. 安装apr-util

[root@mr ~]# dnf -y install expat-devel libxml2-devel pcre-devel(安装依赖包)
......
Upgraded:
  expat-2.2.5-9.el8.x86_64              libxml2-2.9.7-14.el8.x86_64   pcre-8.42-6.el8.x86_64  
  python3-libxml2-2.9.7-14.el8.x86_64  

Installed:
  cmake-filesystem-3.20.2-4.el8.x86_64              expat-devel-2.2.5-9.el8.x86_64             
  libxml2-devel-2.9.7-14.el8.x86_64                 pcre-cpp-8.42-6.el8.x86_64                 
  pcre-devel-8.42-6.el8.x86_64                      pcre-utf16-8.42-6.el8.x86_64               
  pcre-utf32-8.42-6.el8.x86_64                      xz-devel-5.2.4-3.el8.x86_64                
  zlib-devel-1.2.11-17.el8.x86_64                  

Complete!
[root@mr ~]# tar -xf apr-util-1.6.1.tar.gz (解压apr-util-1.6.1.tar.gz)
[root@mr ~]# cd apr-util-1.6.1
[root@mr apr-util-1.6.1]# ./configure --prefix=/usr/local/src/apr-util --with-apr=/usr/local/src/apr(生成Makefile文件,需要伴随着上一个指定的依赖)
......
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
[root@mr apr-util-1.6.1]# make(编译生成的Makefile文件)
......
include/private/apr_crypto_internal.h /root/apr-util-1.6.1/include/private/apr_dbd_internal.h /root/apr-util-1.6.1/include/private/apr_dbd_odbc_v2.h /root/apr-util-1.6.1/include/private/apr_dbm_private.h /root/apr-util-1.6.1/include/private/apu_internal.h > export_vars.c
gcc -E -DHAVE_CONFIG_H  -DLINUX -D_REENTRANT -D_GNU_SOURCE   -I/root/apr-util-1.6.1/include -I/root/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/apr-util-1.6.1/include -I/root/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/apr-util-1.6.1'
[root@mr apr-util-1.6.1]# make install(进行安装)
......
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the 'LD_RUN_PATH' environment variable
     during linking
   - use the '-Wl,-rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to '/etc/ld.so.conf'

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@mr apr-util-1.6.1]# cd /usr/local/src/apr-util/(切换到apr-util安装目录进行查看,默认情况下,系统搜索库文件的路径只有/lib,/usr/lib,我们需要进行修改在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中。此时库文件增添的搜索路径重启后有效,若要使用增添的路径立即生效则要使用ldconfig命令)
[root@mr apr-util]# ls
bin  include  lib
[root@mr apr-util]# cd /etc/ld.so.conf.d/ 
[root@mr ld.so.conf.d]# echo /usr/local/src/apr-util/ >apr-util.conf 
[root@mr ld.so.conf.d]# cd -
/usr/local/src/apr-util 
[root@mr apr-util]# ldconfig(使其生效)
[root@mr apr-util]# ln -s /usr/local/src/apr-util/include/ /usr/include/apr-util(将头文件软链接到/usr/include目录下)
[root@mr apr-util]# ll /usr/include/apr-util/
total 4
drwxr-xr-x. 2 root root 4096 Jul 15 10:39 apr-1
lrwxrwxrwx. 1 root root   32 Jul 15 10:45 include -> /usr/local/src/apr-util/include/
[root@mr apr-util]# 

4. 安装httpd

[root@mr ~]# tar -xf httpd-2.4.54.tar.gz (解压httpd-2.4.54.tar.gz)
[root@mr ~]# cd httpd-2.4.54
[root@mr httpd-2.4.54]# ./configure --prefix=/usr/local/src/httpd --with-apr=/usr/local/src/apr --with-apr-util=/usr/local/src/apr-util(生成makefile文件)
......
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

[root@mr httpd-2.4.54]# make(编译生成makefile文件)
......
/root/httpd-2.4.54/modules/generators -I/root/httpd-2.4.54/modules/mappers -prefer-pic -c mod_rewrite.c && touch mod_rewrite.slo
/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/httpd-2.4.54/modules/mappers'
make[3]: Leaving directory '/root/httpd-2.4.54/modules/mappers'
make[2]: Leaving directory '/root/httpd-2.4.54/modules'
make[2]: Entering directory '/root/httpd-2.4.54/support'
make[2]: Leaving directory '/root/httpd-2.4.54/support'

make[1]: Leaving directory '/root/httpd-2.4.54'
[root@mr httpd-2.4.54]# make install(进行安装)
......
mkdir /usr/local/src/httpd/include
Installing build system files
mkdir /usr/local/src/httpd/build
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/httpd-2.4.54'
[root@mr httpd-2.4.54]# cd /usr/local/src/httpd/(切换到httpd的安装目录进行查看,默认情况下,系统搜索库文件的路径只有/lib,/usr/lib)
[root@mr httpd]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules
[root@mr httpd]# ldconfig (使其生效)
[root@mr httpd]# ln -s /usr/local/src/httpd/include/ /usr/include/httpd(将头文件软链接到/usr/include目录下)
[root@mr httpd]# ll /usr/include/httpd
lrwxrwxrwx. 1 root root 29 Jul 15 10:56 /usr/include/httpd -> /usr/local/src/httpd/include/
[root@mr httpd]# 
配置httpd的全局环境变量,并生成效果
[root@mr httpd]# echo "export PATH=$PATH:/usr/local/src/httpd/bin" > /etc/profile.d/httpd.sh
[root@mr httpd]# source /etc/profile.d/httpd.sh 
[root@mr httpd]# which httpd
/usr/local/src/httpd/bin/httpd
[root@mr httpd]# vi /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@mr ~]#httpd
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::9d7b:f18b:2f8c:1ed1%ens33. Set the 'ServerName' directive globally to suppress this message
[root@mr ~]# dnf provides netstat
Last metadata expiration check: 1:22:13 ago on Fri 15 Jul 2022 09:54:51 AM CST.
net-tools-2.0-0.52.20160912git.el8.x86_64 : Basic networking tools
Repo        : baseos
Matched from:
Filename    : /usr/bin/netstat

[root@mr ~]# dnf -y install net-tools
Last metadata expiration check: 1:23:44 ago on Fri 15 Jul 2022 09:54:51 AM CST.
Dependencies resolved.
===============================================================================================
 Package            Architecture    Version                              Repository       Size
===============================================================================================
Installing:
 net-tools          x86_64          2.0-0.52.20160912git.el8             baseos          322 k

Transaction Summary
===============================================================================================
Install  1 Package
......
Running transaction
  Preparing        :                                                                       1/1 
  Installing       : net-tools-2.0-0.52.20160912git.el8.x86_64                             1/1 
  Running scriptlet: net-tools-2.0-0.52.20160912git.el8.x86_64                             1/1 
  Verifying        : net-tools-2.0-0.52.20160912git.el8.x86_64                             1/1 
Installed products updated.

Installed:
  net-tools-2.0-0.52.20160912git.el8.x86_64                                                    

Complete!
[root@mr ~]# netstat -antp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      41628/httpd         
[root@mr ~]#  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                   [::]:*                  
LISTEN    0          128                        *:80                      *:*                  
[root@mr ~]# systemctl stop firewalld.service(关闭防火墙)

5. 服务80端口

标签:httpd,apr,root,源码,usr,mr,Apache,include,安装
来源: https://www.cnblogs.com/marymary/p/16480695.html