创建一个 `systemd` 服务文件来管理 uWSGI 启动、停止和其他维护任务
编写 `systemd` 服务文件可以帮助你管理和自动化你的应用服务。在 CentOS 系统中,你可以创建一个 `systemd` 服务文件来管理 uWSGI 启动、停止和其他维护任务。下面是详细的步骤和示例。
### 1. 创建服务文件
首先,在 `/etc/systemd/system` 目录下创建一个新的服务文件,例如 `flask-app.service`。
打开终端,切换到超级用户(使用 `sudo` 或者直接登录为 root 用户):
sudo su
然后创建并编辑服务文件:
cd /etc/systemd/system
sudo nano flask-app.service
### 2. 编写服务文件内容
在编辑器中,输入以下内容:
```
[Unit]
Description=uWSGI instance to serve Flask application
After=network.target[Service]
User=shen
Group=shen
WorkingDirectory=your_workspace
ExecStart=/usr/local/bin/uwsgi --http :8000 --wsgi-file app.py --callable app --enable-threads --processes 4 --threads 2
Restart=on-failure
RestartSec=10s
Environment="PATH=/home/user/.local/bin"
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=flask-app[Install]
WantedBy=multi-user.target
```
### 说明
- **[Unit]** 部分:
- `Description`:描述服务的作用。
- `After`:指定启动顺序依赖,这里依赖于网络服务启动完成。
- **[Service]** 部分:
- `User` 和 `Group`:指定运行服务的用户和组。
- `WorkingDirectory`:指定服务的工作目录。
- `ExecStart`:指定启动服务的命令。
- `Restart`:指定服务失败时的重启策略。
- `RestartSec`:指定服务失败后的重启间隔时间。
- `Environment`:指定环境变量,确保 Python 路径正确。
- `StandardOutput` 和 `StandardError`:指定标准输出和错误输出的日志位置。
- `SyslogIdentifier`:指定日志记录的标识符。
- **[Install]** 部分:
- `WantedBy`:指定服务应在多用户目标(multi-user.target)中启动。
### 3. 重新加载 `systemd` 配置
保存并关闭编辑器后,需要重新加载 `systemd` 配置,以便使其识别新创建的服务文件:
sudo systemctl daemon-reload
### 4. 启用并启动服务
启用服务,以便在系统启动时自动启动:
sudo systemctl enable flask-app.service
启动服务:
sudo systemctl start flask-app.service
### 5. 检查服务状态
你可以使用以下命令检查服务的状态:
sudo systemctl status flask-app.service
如果服务启动失败,可以查看日志以获得更多信息:
sudo journalctl -u flask-app.service
### 6. 停止和重启服务
如果需要停止服务,可以使用:
sudo systemctl stop flask-app.service
如果需要重启服务,可以使用:
sudo systemctl restart flask-app.service
通过以上步骤,你就可以成功创建并管理一个 uWSGI 服务,确保它在 CentOS 系统中稳定运行。