一、通过 .service 文件管理
- 获取源码包
wget https://dlcdn.apache.org/httpd/httpd-2.4.62.tar.gz
- 解压
tar zxf httpd-2.4.62.tar.gz
- 解决依赖
cd httpd-2.4.62/
./configure --prefix=/usr/local/apache
# 期间需要安装一系列依赖
dnf install apr-devel.x86_64 apr-util-devel.x86_64 gcc-plugin-devel.x86_64 pcre-devel.x86_64 pcre2-devel.x86_64 -y
- 编译
dnf install make -y
# 扩展:有些可能使用cmake
make
- 正式安装
make install
# 期间有些error,无需在意
- 编写 .service 服务文件
下图是官方文件(通过模仿构建个性化服务文件)
注意:脚本内部涉及路径时,必须采用绝对路径!!!
cd /etc/systemd/system
vim httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target httpd-init.service
[Service]
# 若采用官方的notify,会导致服务无法启动成功
Type=forking
Environment=LANG=C
ExecStart=/usr/local/apache/bin/apachectl start
ExecReload=/usr/local/apache/bin/apachectl restart
Execstop=/usr/local/apache/bin/apachectl stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载服务单元文件
systemctl daemon-reload
- 测试
- 能否启动?
- 能否停止?
- 停止后能否再次启动?
- 启动后,是否均能正常使用?
- 能否重启成功?
常用服务命令 | 说明 |
---|---|
systemctl start httpd | 启动服务 |
systemctl status httpd | 查看服务状态 |
systemctl restart httpd | 重启服务 |
systemctl stop httpd | 停止服务 |
服务启动成功时状态,见下图
测试内容:
1.在Windows浏览器访问服务器IP
,即可看见默认页面或自定义页面
2.在服务器上使用curl http:/服务器IP
,即可看见默认页面或自定义页面
3.查看端口是否开放(netstat -lnupt | grep 80)
二、类 init.d 脚本
前五个步骤均与(一)相同,在此不过多赘述
- 编写 init.d 脚本
只需要在官方的脚本中添加上两行内容即可
cd /etc/init.d/
cp apachectl /etc/init.d/httpd
# 注意:检查脚本是否有执行权限
vim /etc/init.d/httpd
# 只需要添加两行内容,这是服务脚本必不可少的内容
......
18 # chkconfig: 2345 70 15
19 # description: Apache is an HTTP(s) server
......
常用服务命令 | 说明 |
---|---|
chkconfig --add httpd | 添加成系统服务脚本 |
chkconfig httpd on | 设置开机自启动 |
systemctl daemon-reload | 重新加载服务单元文件等 |
- 测试
测试方法与(一)相同,也有其他测试方法,请自行研究
三、遇到的问题
- 源码安装中的依赖问题
源码安装过程中,执行命令./configure --prefix=/usr/local/apache
时中断
原因是缺少部分依赖软件导致的
例如:
checking for APR… no
configure: error: APR not found. Please read the documentation.
# 在本地查找对应软件,注意安装的版本(一般选择带有devel的)
yum list | grep apr | grep devel
# 安装
dnf install apr-devel.x86_64 apr-util-devel.x86_64 -y
# 卸载
dnf remove apr-devel.x86_64 -y
# 另一种简单粗暴的方法(不推荐)
yum install apr*