程序部署方案
2025年3月25日大约 2 分钟约 684 字
程序部署方案
为了标准化程序部署,便于后续维护,每个待部署的程序需要准备以下几个文件
- systemd 服务配置文件
- firewalld 防火墙服务配置文件
Systemd 配置
创建 Systemd 服务
通常情况下,systemd 服务保存在/usr/lib/systemd/system/
路径下。
创建并编辑文件/usr/lib/systemd/system/<服务名>.service
:
sudo nano /usr/lib/systemd/system/<服务名>.service
编写以下内容:
[Unit]
Description=服务描述
# 断言路径存在,不存在则启动失败
AssertPathExists=/path/to/file
[Service]
# 运行服务时使用的账户
User=user
# 运行服务的方式
# simple 主进程启动就算启动完成
# notify 启动后能与 systemd 建立联系就算启动完成
Type=simple
# 服务运行时使用的命令
ExecStart=/path/to/executable
# 服务运行时的工作目录
WorkingDirectory=/path/to/
[Install]
WantedBy=multi-user.target
在服务创建完成后,需要通过以下命令重载配置文件:
systemctl daemon-reload
启动服务
在服务创建完成后,我们需要启动服务。
服务需要通过以下命令启动:
systemctl start <服务名>
注
如果服务无法启动,且在 systemctl status <服务名>
中存在以下信息:
Unable to locate executable '/path/to/executable': Permission denied
则可以尝试临时关闭 SELinux:
setenforce 0
如果恢复正常,则问题出自 SELinux,可以尝试恢复 SELinux 安全上下文:
restorecon -v /path/to/executable
可以设置服务为开机启动:
systemctl enable <服务名>
Firewalld 配置
创建 Firewalld 服务
通常情况下,firewalld 服务保存在/etc/firewalld/services/
路径下。
创建并编辑文件/etc/firewalld/services/<服务名>.xml
:
重要
服务名中不能包含.
等不合法的符号。
sudo nano /etc/firewalld/services/<服务名>.xml
编写以下内容:
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>服务名</short>
<description>服务描述</description>
<!-- 开放的端口 -->
<port protocol="tcp" port="8080"/>
</service>
重新加载防火墙配置:
firewall-cmd --complete-reload
可以通过以下命令查看服务是否配置成功:
firewall-cmd --get-services | grep <服务名>
提示
如果发现就连原有的自定义服务都消失了的话,可能是配置存在错误。
若要验证配置是否正确,可以使用此命令:
firewall-offline-cmd --check-config
配置防火墙规则
在配置完服务后,需要在激活的区域配置中启用服务。
查看当前活动的区域配置的方法是:
firewall-cmd --get-active-zones
可能返回以下内容
public (default)
interfaces: eth0
此时,这里的public
就是活动区域。
在确认了活动区域后,通过以下命令来激活配置:
firewall-cmd --zone=<活动区域> --add-service=<服务名> --permanent
重新加载防火墙配置:
firewall-cmd --complete-reload
贡献者
舰队的偶像-岛风酱!