当前位置: 首页 > news >正文

创建一个 `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 系统中稳定运行。


http://www.mrgr.cn/news/26570.html

相关文章:

  • 开放式耳机哪些比较好?开放式耳机和骨传导耳机哪个好?
  • orangepi部署web环境
  • 树莓派本身编译和更新内核
  • windows查找自己的ip地址
  • 哇!原来vscode的终端可以这么美
  • PNP晶体管与NPN晶体管
  • 【git】
  • DFS之连通性模型
  • 排查 Mybatis-plus 3.5.5: 返回的pages参数是从哪里来的
  • CSS基本布局理解(测试)——WEB开发系列38
  • 【浅谈】单片机基本概念
  • 提升RAG系统的回答质量:高质量文档解析终极干货
  • 嵌入式为什么学C++
  • Redisson 异步释放锁
  • Leetcode 旋转图像
  • 如何建设数据中台(五)——数据汇集—打破企业数据孤岛
  • SpringBoot 整合酷狗获取下载音乐(需要自己账户)
  • Python画笔案例-048 绘制嵌套正方形
  • STM32 移植FATFS时遇到ff_oem2uni函数未定义问题
  • 雷达液位计助力造纸行业精准测量