hopeless-dream

导航

Linux(centos发行版)Apache编译安装

需要安装的依赖软件包

1、apr            Apache可移植运行库,下载地址:http://mirror.bit.edu.cn/apache/apr

2、apr-util      下载地址:http://mirror.bit.edu.cn/apache/apr

3、pcre         支持正则,下载地址:https://ftp.pcre.org/pub/pcre/

4、openssl    下载地址:https://www.openssl.org/source/old/1.1.1/

5、zlib            下载地址:http://www.zlib.net/fossils/

参考Apache官方文档安装指南:http://httpd.apache.org/docs/2.4/install.html

解压

下载apache软件包,下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/

# mkdir /opt/packages
# mkdir /opt/softwares
# mkdir /opt/softwares/src

# tar xfz httpd
-2.4.48.tar.gz -C /opt/softwares/src # tar xfz pcre-8.44.tar.gz -C /opt/softwares/src
# tar xfz apr-1.7.0.tar.gz -C /opt/softwares/src/
# tar xfz apr-util-1.6.1.tar.gz -C /opt/softwares/src/

安装过程

1、安装pcre

# cd /opt/softwares/src/pcre-8.44/

# ./configure --prefix=/opt/softwares/pcre-8.44

# make && make install

2、安装zlib

# cd /opt/softwares/src/zlib-1.2.11/

# ./configure --prefix=/opt/softwares/zlib

# make && make install

3、安装openssl

# cd /opt/softwares/src/openssl-1.1.1j/

# ./config -fPIC --prefix=/opt/softwares/openssl enable-shared

# make && make install

安装后备份之前版本的openssl,调整动态库路径

# which openssl
/usr/bin/openssl

### 备份

# mv  /usr/bin/openssl{,.old}
# mv /etc/ssl{,.bak} #删除配置文件

修改openssl的库文件路径

# echo "/opt/softwares/openssl/lib" >> /etc/ld.so.conf

# ldconfig -v              # 使配置生效

设置openssl命令的软链接,并验证

# ln -s /opt/softwares/openssl/bin/openssl /usr/local/bin/openssl

# openssl version -a
OpenSSL 1.1.1j  16 Feb 2021

4、安装httpd

将apr-和apr 移动到下,并去掉版本号

# cd /opt/softwares/src/httpd-2.4.48/

# ./configure --prefix=/opt/softwares/http-2.4.48 --enable-so --enable-so --enable-ssl --with-ssl=/opt/softwares/openssl --enable-cgi --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --with-pcre=/opt/softwares/pcre-8.44 --with-zlib=/opt/softwares/zlib --with-apr=/opt/softwares/apr --with-apr-util=/opt/softwares/apr-util --enable-expires --enable-deflate


--prefix=/opt/softwares/http-2.4.48       //指定apache的安装路径
--enable-so                    //这个是支持动态共享模块
--enable-rewrite                //支持URL重写
--enable-ssl                   //支持ssl
--with-ssl=/opt/softwares/openssl      //这个是指定openssl的安装位置
--enable-cgi                   //启用cgi
--enable-modules=most             // 指明要静态编译到httpd二进制文件的模块 all或者most,all代表包含所有的模块 most代表大部分的模块
--enable-mods-shared=most           // 指明要以DSO方式编译的模块,all代表全部,most代表大部分
--enable-mpms-shared=all            // 启用MPM所有支持的模式,这样event,worker,prefork就会以模块化的方式安装,要用哪个就在httpd.conf里面配置就好了
--with-mpm=event                 // 指定启用mpm模式,默认使用enevt模式,在apache的早期版本2.0默认prefork,2.2版本是worker 2.4版本是event.
--with-pcre=/opt/softwares/pcre       // 支持 pcre
--with-z=/opt/softwares/zlib          // 使用 zlib 压缩库
--with-apr=/opt/softwares/apr          // 指定 apr 的安装路径
--with-apr-util=/opt/softwares/apr-util   // 指定 apr-util 的安装路径
--enable-expires                  // 激活彧通过配置文件控制 HTTP 的“Expires:”和“Cache-Control:”头内容,即对网站图片、js、css 等内容,提供客户端浏览器缓存设置
--enable-deflate                 // 提供对内容的压缩传输编码支持,一般是 html、js、css 等内容的站点。使用此参数会打打提高传输速度,提升访问者访问的体验。在生产环境中,这是 apache 调优的一个重要选项之一

make报错

collect2: error: ld returned 1 exit status
make[2]: *** [htpasswd] Error 1
make[2]: Leaving directory `/opt/softwares/src/httpd-2.4.48/support'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/softwares/src/httpd-2.4.48/support'
make: *** [all-recursive] Error 

解决办法

将解压出来的 apr-1.7.0 和 apr-util-1.6.1 拷贝到 /opt/softwares/src/httpd-2.4.48/srclib/ 目录下,并且去掉版本号。并且在编译参数后加上  --with-included-apr

不去掉版本号会报错:configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.

# mv /opt/softwares/src/httpd-2.4.48/srclib/apr-1.7.0 /opt/softwares/src/httpd-2.4.48/srclib/apr

# mv /opt/softwares/src/httpd-2.4.48/srclib/apr-util-1.6.1 /opt/softwares/src/httpd-2.4.48/srclib/apr-util

再次编译安装

# ./configure --prefix=/opt/softwares/http-2.4.48 --enable-so --enable-so --enable-ssl \
--with-ssl=/opt/softwares/openssl --enable-cgi --enable-modules=most --enable-mods-shared=most \
--enable-mpms-shared=all --with-mpm=event --with-pcre=/opt/softwares/pcre-8.44 \
--with-zlib=/opt/softwares/zlib --enable-expires --enable-deflate -with-included-apr
# make && make install

 

至此安装完成!

apache操作

使用systemctl管理apache

# vim /usr/lib/systemd/system/httpd.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=simple
ExecStart=/opt/softwares/http-2.4.48/bin/httpd -DFOREGROUND
ExecReload=/opt/softwares/http-2.4.48/bin/httpd -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}
KillSignal=SIGCONT
PrivateTmp=true
LimitNOFILE=infinity
KillMode=mixed
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

添加权限

# chmod +x /usr/lib/systemd/system/chronyd.service

创建软链接

 ln -s /usr/lib/systemd/system/httpd.service /etc/systemd/system/multi-user.target.wants/

启动apache

# systemctl start httpd

[root@localhost ~]# ss -lntp
State      Recv-Q Send-Q                                 Local Address:Port                                                Peer Address:Port              
LISTEN     0      128                                                *:22                                                             *:*                   users:(("sshd",pid=867,fd=3))
LISTEN     0      100                                        127.0.0.1:25                                                             *:*                   users:(("master",pid=1034,fd=13))
LISTEN     0      128                                               :::80                                                            :::*                   users:(("httpd",pid=1462,fd=4),("httpd",pid=1461,fd=4),("httpd",pid=1460,fd=4),("httpd",pid=1459,fd=4))
LISTEN     0      128                                               :::22                                                            :::*                   users:(("sshd",pid=867,fd=4))
LISTEN     0      100                                              ::1:25                                                            :::*        

查看apache的工作模式

# httpd -V
Server version: Apache/2.4.48 (Unix)
Server built:   May 31 2021 04:50:25
Server's Module Magic Number: 20120211:105
Server loaded:  APR 1.7.0, APR-UTIL 1.6.1
Compiled using: APR 1.7.0, APR-UTIL 1.6.1
Architecture:   64-bit
Server MPM:     event
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE

查看apache加载的模块

# apachectl -M

或者

# apachectl -l

或者
# apachectl -D DUMP_MODULES

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2021-05-31 16:55  hopeless-dream  阅读(186)  评论(0编辑  收藏  举报