开发手记(六)——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

 

posted @ 2026-03-18 10:31  学术大垃圾  阅读(14)  评论(0)    收藏  举报