方法一:使用 systemd 服务文件
下载源码
[root@localhost ~]# wget https://archive.apache.org/dist/httpd/httpd-2.4.46.tar.gz
解压源码
[root@localhost ~]#tar -xzf httpd-2.4.46.tar.gz#先安装tar
[root@localhost ~]#sudo yum install tar[root@localhost ~]#cd httpd-2.4.46
编译安装
[root@localhost httpd-2.4.46]# ./configure --prefix=/usr/local/apache --enable-so --enable-ssl[root@localhost httpd-2.4.46]# make
Making all in srclib
make[1]: Entering directory '/root/httpd-2.4.46/srclib'
make [1]: Leaving directory '/root/httpd-2.4.46/srclib'
Making all in os
make[1]: Entering directory '/root/httpd-2.4.46/os'
Making all in unix
make[2]: Entering directory '/root/httpd-2.4.46/os/unix'
make [3]: Entering directory '/root/httpd-2.4.46/os/unix'[root@localhost httpd-2.4.46]# make install
Installing configuration files
[PRESERVING EXISTING HTDOCS SUBDIR: /usr/local/apache/htdocs]
[PRESERVING EXISTING ERROR SUBDIR: /usr/local/apache/error]
[PRESERVING EXISTING ICONS SUBDIR: /usr/local/apache/icons]
[PRESERVING EXISTING CGI SUBDIR: /usr/local/apache/cgi-bin]
Installing header files
Installing build system files
Installing man pages and online manual
make[1]: Leaving directory '/root/httpd-2.4.46'
创建system服务文件
[root@localhost httpd-2.4.46]# vim /etc/systemd/system/httpd.service[Unit]
Description=The Apache HTTP Server
After=network.target[Service]
Type=forking
PIDFile=/usr/local/apache/logs/httpd.pid
ExecStart=/usr/local/apache/bin/httpd -k start
ExecReload=/usr/local/apache/bin/httpd -k restart
ExecStop=/usr/local/apache/bin/httpd -k stop
PrivateTmp=true[Install]
WantedBy=multi-user.target
启动服务
[root@localhost httpd-2.4.46]# systemctl daemon-reload
[root@localhost httpd-2.4.46]# systemctl start httpd
[root@localhost httpd-2.4.46]# systemctl enable httpd
测试
方法二:使用init.d脚本
前几步同上
创建init.d脚本
[root@localhost httpd-2.4.46]# sudo nano /etc/init.d/httpd#!/bin/sh
### BEGIN INIT INFO
# Provides: httpd
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Apache HTTP Server
# Description: Apache HTTP Server
### END INIT INFOcase "$1" instart)/usr/local/apache2/bin/apachectl start;;stop)/usr/local/apache2/bin/apachectl stop;;restart)/usr/local/apache2/bin/apachectl restart;;status)/usr/local/apache2/bin/apachectl status;;*)echo "Usage: $0 {start|stop|restart|status}"exit 1;;
esac
exit 0
赋予执行权限
[root@localhost httpd-2.4.46]# sudo chmod +x /etc/init.d/httpd
启用和测试服务
[root@localhost httpd-2.4.46]# sudo systemctl enable httpd[root@localhost httpd-2.4.46]# sudo service httpd start[root@localhost httpd-2.4.46]# sudo service httpd status[root@localhost httpd-2.4.46]# sudo tail -f /usr/local/apache2/logs/error_log
测试