docker编译安装httpd

[root@Soap ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
busybox      latest    beae173ccac6   7 months ago    1.24MB
httpd        latest    dabbfbe0c57b   7 months ago    144MB
centos       latest    5d0da3dc9764   10 months ago   231MB
用centos生成一个容器进去
[root@Soap ~]# docker run -d -it --name httpd -p 80:80 -v /data:/data 5d0da3dc9764 /bin/bash
6eb48872f0da2bbc39f099645ef9127c8f9d42fc06f4d20c5e765d4be584fa28
[root@Soap ~]# docker ps
CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS          PORTS                               NAMES
6eb48872f0da   5d0da3dc9764   "/bin/bash"          17 seconds ago   Up 15 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   httpd
b9be2d1f1e95   httpd          "httpd-foreground"   26 hours ago     Up 26 hours     80/tcp                              lucid_blackwell
在容器中阿里云的yum源和epel源,下载apache的包,并复制到容器中
[root@Soap ~]# cd /data/
[root@Soap data]# dnf -y install wget
[root@Soap data]# wget https://mirrors.aliyun.com/apache/apr/apr-1.6.5.tar.gz
--2022-08-08 22:17:06--  https://mirrors.aliyun.com/apache/apr/apr-1.6.5.tar.gz
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 58.49.248.226, 180.101.197.238, 180.101.199.242, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|58.49.248.226|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1073556 (1.0M) [application/octet-stream]
Saving to: ‘apr-1.6.5.tar.gz’

apr-1.6.5.tar.gz      100%[=========================>]   1.02M  --.-KB/s    in 0.07s   

2022-08-08 22:17:06 (13.9 MB/s) - ‘apr-1.6.5.tar.gz’ saved [1073556/1073556]

[root@Soap data]# wget https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz
--2022-08-08 22:21:32--  https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 180.101.199.240, 180.101.197.240, 58.42.55.241, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|180.101.199.240|: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  --.-KB/s    in 0.1s    

2022-08-08 22:21:32 (4.67 MB/s) - ‘apr-util-1.6.1.tar.gz’ saved [554301/554301]

[root@Soap data]#  wget https://mirrors.aliyun.com/apache/httpd/httpd-2.4.54.tar.bz2
--2022-08-08 22:22:12--  https://mirrors.aliyun.com/apache/httpd/httpd-2.4.54.tar.bz2
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 180.101.199.240, 180.101.197.240, 58.42.55.241, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|180.101.199.240|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7434530 (7.1M) [application/octet-stream]
Saving to: ‘httpd-2.4.54.tar.bz2’

httpd-2.4.54.tar.bz2  100%[=========================>]   7.09M  9.61MB/s    in 0.7s    

2022-08-08 22:22:12 (9.61 MB/s) - ‘httpd-2.4.54.tar.bz2’ saved [7434530/7434530]

[root@Soap data]# ls
apr-1.6.5.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.bz2
[root@Soap data]# docker exec -it httpd /bin/bash
[root@6eb48872f0da /]# cd data/
[root@6eb48872f0da data]# ls
apr-1.6.5.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.54.tar.bz2
在容器中阿里云的yum源和epel源
[root@6eb48872f0da data]# cd /etc/yum.repos.d/
[root@6eb48872f0da yum.repos.d]# ls
CentOS-Linux-AppStream.repo	     CentOS-Linux-FastTrack.repo
CentOS-Linux-BaseOS.repo	     CentOS-Linux-HighAvailability.repo
CentOS-Linux-ContinuousRelease.repo  CentOS-Linux-Media.repo
CentOS-Linux-Debuginfo.repo	     CentOS-Linux-Plus.repo
CentOS-Linux-Devel.repo		     CentOS-Linux-PowerTools.repo
CentOS-Linux-Extras.repo	     CentOS-Linux-Sources.repo
[root@6eb48872f0da yum.repos.d]# rm -rf *
[root@6eb48872f0da yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2495  100  2495    0     0  13633      0 --:--:-- --:--:-- --:--:-- 13633
[root@6eb48872f0da yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@6eb48872f0da yum.repos.d]# cd
[root@6eb48872f0da ~]# dnf -y  groups mark install "Development Tools"
Failed to set locale, defaulting to C.UTF-8
CentOS-8.5.2111 - Base - mirrors.aliyun.com             9.7 MB/s | 4.6 MB     00:00    
CentOS-8.5.2111 - Extras - mirrors.aliyun.com            67 kB/s |  10 kB     00:00    
CentOS-8.5.2111 - AppStream - mirrors.aliyun.com        9.4 MB/s | 8.4 MB     00:00    
Dependencies resolved.
========================================================================================
 Package             Architecture       Version               Repository           Size
========================================================================================
Installing Groups:
 Development Tools                                                                     

Transaction Summary
========================================================================================

Complete!
[root@6eb48872f0da ~]# dnf -y install openssl-devel pcre-devel expat-devel libtool libxml2-devel
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 0:00:18 ago on Mon Aug  8 14:27:03 2022.
Dependencies resolved.
========================================================================================
 Package                Arch   Version                                  Repo       Size
========================================================================================
Installing:
 expat-devel            x86_64 2.2.5-4.el8                              base       55 k
 libtool                x86_64 2.4.6-25.el8                             AppStream 709 k
 libxml2-devel          x86_64 2.9.7-9.el8_4.2                          AppStream 1.0 M
 openssl-devel          x86_64 1:1.1.1k-5.el8_5                         base      2.3 M
 pcre-devel             x86_64 8.42-6.el8                               base      551 k
 ......
   pkgconf-m4-1.4.2-1.el8.noarch                                                         
  pkgconf-pkg-config-1.4.2-1.el8.x86_64                                                 
  xz-devel-5.2.4-3.el8.x86_64                                                           
  zlib-devel-1.2.11-17.el8.x86_64                                                       

Complete!
解压并编译安装httpd,apr,apr-util
[root@6eb48872f0da ~]# useradd -Mrs /bin/nologin apache
[root@6eb48872f0da ~]# id apache
uid=998(apache) gid=996(apache) groups=996(apache)
[root@6eb48872f0da ~]# tar -xf /data/apr-1.6.5.tar.gz -C /usr/local/src/
[root@6eb48872f0da ~]# tar -xf /data/apr-util-1.6.1.tar.gz -C /usr/local/src/
[root@6eb48872f0da ~]# tar -xf /data/httpd-2.4.54.tar.bz2 -C /usr/local/src/
[root@6eb48872f0da ~]# cd /usr/local/src/apr-1.6.5/
[root@6eb48872f0da apr-1.6.5]# vi configure

# $RM "$cfgfile"
[root@6eb48872f0da apr-1.6.5]#  ./configure --prefix=/usr/local/apr
......
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
config.status: executing default commands
[root@6eb48872f0da apr-1.6.5]#  make && make install
......
/usr/bin/install -c -m 755 /usr/local/src/apr-1.6.5/build/mkdir.sh /usr/local/apr/build-1
for f in make_exports.awk make_var_export.awk; do \
    /usr/bin/install -c -m 644 /usr/local/src/apr-1.6.5/build/${f} /usr/local/apr/build-1; \
done
/usr/bin/install -c -m 644 build/apr_rules.out /usr/local/apr/build-1/apr_rules.mk
/usr/bin/install -c -m 644 /usr/local/src/apr-1.6.5/build/apr_common.m4 /usr/local/apr/build-1
/usr/bin/install -c -m 644 /usr/local/src/apr-1.6.5/build/find_apr.m4 /usr/local/apr/build-1
/usr/bin/install -c -m 755 apr-config.out /usr/local/apr/bin/apr-1-config
[root@6eb48872f0da apr-1.6.5]# cd /usr/local/src/apr-util-1.6.1/
[root@6eb48872f0da apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
......
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@6eb48872f0da apr-util-1.6.1]#  make && 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/apr-util/lib
/usr/bin/install -c -m 755 apu-config.out /usr/local/apr-util/bin/apu-1-config
[root@6eb48872f0da apr-util-1.6.1]# cd /usr/local/src/httpd-2.4.54/
[root@6eb48872f0da httpd-2.4.54]# ./configure --prefix=/usr/local/apache --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr -with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
......
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/apache
    C compiler:     gcc
    CFLAGS:          -g -O2 -pthread  
    CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE  
    LDFLAGS:           
    LIBS:             
    C preprocessor: gcc -E

[root@6eb48872f0da httpd-2.4.54]# 
make && make install
......
Installing build system files
mkdir /usr/local/apache/build
Installing man pages and online manual
mkdir /usr/local/apache/man
mkdir /usr/local/apache/man/man1
mkdir /usr/local/apache/man/man8
mkdir /usr/local/apache/manual
make[1]: Leaving directory '/usr/local/src/httpd-2.4.54'
[root@6eb48872f0da httpd-2.4.54]# cd /usr/local/apache/
[root@6eb48872f0da apache]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs	man  manual  modules
配置环境变量和创建头文件
[root@6eb48872f0da apache]# echo 'export PATH=$PATH:/usr/local/apache/bin/' >> /etc/profile.d/apache.sh
[root@6eb48872f0da apache]# source /etc/profile.d/apache.sh
[root@6eb48872f0da apache]# apachectl start
[root@6eb48872f0da apache]# ss -antl
State     Recv-Q    Send-Q       Local Address:Port       Peer Address:Port   Process   
LISTEN    0         128                0.0.0.0:80              0.0.0.0:*                
[root@6eb48872f0da apache]# 

posted @ 2022-08-09 09:57  姜翎  阅读(107)  评论(0)    收藏  举报