开发手记(六)——Linux设置开机自启动服务
一般来说,web服务的前后端都会部署到Linux服务器上,相比于在Windows服务器上运行更加广泛。
古法启动项目:1. 运行项目-退出Linux服务器;2. 杀死进程-重启项目;这个过程肯定是不可接受的,所以必须设置开机自启动服务管理我们的项目。
大部分Linux系统都是使用 systemd 的发行版,Ubuntu、CentOS、Debian。我们就用systemd service创建服务。
1. 新建service文件
Linux有几个新建文件的方法,vi、vim、nano、tee,这里便于修改文件以及规避某些离线服务器缺少编辑器的情况,选取vi命令。
service文件都保存于 /etc/systemd/system,我们新建的文件也放在这里。
vi /etc/systemd/system/your-service.service
键盘输入 i+回车,进入编辑模式。最简洁的文件内容如下
[Unit] Description=Minimal Service [Service] ExecStart=/absolute/path/to/your/command Type=simple [Install] WantedBy=multi-user.target
输入完毕,键盘键入 :wq+回车,保存文件。
2. service文件必填内容
service文件有多个段落,[Unit]、[Service]、[Install]。systemd的详细文档可以参照系统与服务管理器,但基本上没必要,只需掌握以下的基础内容。
[Unit]一般有两个选项,Description和After。
Description用于服务描述,可以不填,但是强烈建议填写。
After用于启动时机限制,如果要在网络就绪后启动,填写
After=network.target
如果要在另一个服务就绪后启动,填写
After=theOther.service
不同的服务之间用半角逗号隔开。
[Service]最重要的必填项是ExecStart,常常还包括WorkingDirectory。它们以两种格式组成完整命令路径。
ExecStart=/absolute/path/to/your/command /absolute/path/to/your/program
# 例如
# ExecStart=/usr/bin/python3 /app/main.py
或者另一种格式
WorkingDirectory=/absolute/path/to/your/project ExecStart=/absolute/path/to/your/command /relative/path/to/your/program # 例如 # WorkingDirectory=/app # ExecStart=/usr/bin/python3 main.py
[Install]填一行WantedBy=multi-user.target即可,表示服务是文本模式。用于非常少见的图形模式时,改为graphical.target
3. 启动服务&查看日志
# 重新加载配置 sudo systemctl daemon-reload # 设置开机自启 sudo systemctl enable your-service.service # 启动服务 sudo systemctl start your-service.service # 查看服务状态 sudo systemctl status your-service.service # 停止服务 sudo systemctl stop your-service.service # 重启服务 sudo systemctl restart your-service.service # 实时日志查看 sudo journalctl -u your-service.service -f

浙公网安备 33010602011771号