创建一个 `systemd` 服务文件来管理 uWSGI 启动、停止和其他维护任务

news/2024/9/18 15:07:39/ 标签: 服务器, linux, python

编写 `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.ppmy.cn/news/1525285.html

相关文章

linux-L5.linux查看应用占用的资源top

启动 top 命令: 打开终端,输入 top 并按回车键。 查看进程信息: 默认情况下,top 会显示系统的整体资源使用情况,包括 CPU、内存、磁盘 I/O 和网络 I/O 等信息。然后它会列出当前运行的进程,以及它们分别占…

vueCropper裁剪图片(不模糊)以及记录使用方法

需求:上传限定比例的图片。前端框架是vue3 element plus。 问题:使用vueCropper后比例固定。但是上传后的图片很模糊 vueCropper官网 解决办法 vueCropper中有一个full和high两个参数,记得开启 const options: any reactive({img: , // 原…

react 动画_样式处理

动画 在日常开发中,页面切换时的转场动画是比较基础的一个场景 当一个组件在显示与消失过程中存在过渡动画,可以很好的增加用户的体验 在 react中实现过渡动画效果会有很多种选择,如 react-transition-group, react-motion&…

如何利用 CSS 渐变实现多样化背景效果

前言 总在平常看到像这样的图片 背景是如何实现的呢 背景效果的多样性和美观性直接影响用户体验。CSS 渐变为设计师提供了一种强大且灵活的方法来创建引人注目的背景。渐变是颜色之间平滑过渡的效果,通过调整渐变类型和设置,你可以轻松实现从简单到复杂…

全面认识AI Agent:一文读懂AI智能体的架构指南

在人工智能的快速发展中,AI Agent(人工智能代理或智能体)正逐渐成为研究和应用的热点。AI Agent不仅仅是一个简单的自动化工具,它能够感知环境、做出决策,并执行任务以实现特定的目标。本文将详细介绍AI Agent的概念、…

华为OD机试 - 开源项目热度榜单(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

算法手撕面经系列(1)--手撕多头注意力机制

多头注意力机制 一个简单的多头注意力模块可以分解为以下几个步骤: 先不分多头,对输入张量分别做变换,得到 Q , K , V Q,K,V Q,K,V对得到的 Q , K , V Q,K,V Q,K,V按头的个数进行split;用 Q , K Q,K Q,K计算向量点积考虑是否要添…

mac 电脑 git credential osxkeychain问题之二

git credential osxkeychain问题,无法拉取最新代码,failed to get:-128 此处应输入电脑登录密码 1.问题描述 不知道是系统还是brew进行了更新,启动项目后 git pull 无法拉取最新代码,git项目git pull 操作时突然提示:…

【uni-app】命令行创建 uni-app 项目

命令行创建 uni-app 项目 优势 通过命令行创建 uni-app 项目,不必依赖 HBuilderX,TypeScript 类型支持友好。 命令行创建 uni-app 项目: vue3 ts 版 👉国内 gitee 下载github 下载 # 通过 git 从 gitee 克隆下载 git clone…

使用 PyCharm 新建 Python 项目详解

使用 PyCharm 新建 Python 项目详解 文章目录 使用 PyCharm 新建 Python 项目详解一 新建 Python 项目二 配置环境1 项目存放目录2 Python Interpreter 选择3 创建隔离环境4 选择你的 Python 版本5 选择 Conda executable 三 New Window 打开项目四 目录结构五 程序编写运行六 …

基于单片机的水产养殖饲料自动投喂系统

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图系统框架图设计获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机…

Qt, 堆栈窗体, 布局管理, 控件插入, 子布局插入

StackDlg(QWidget *parent 0); ~StackDlg(); private: } ; QListWidget *list; QStackedWidget *stack; Qlabel *labell; QLabel *label2; Qlabel *label3; 在文件开始部分添加以下头文件&#xff1a; #include <QListWidget> #include <QStackedWidget>…

C# WinForm 中 DataGridView 实现单元格cell 能进编辑状态但是不能修改单元格的效果

在Windows Forms&#xff08;WinForms&#xff09;开发中&#xff0c;DataGridView 控件是一个功能强大的组件&#xff0c; 用于显示和管理表格数据。无论是展示大量数据&#xff0c;还是实现交互式的数据操作&#xff0c; DataGridView 都能提供多样的功能支持&#xff0c;比如…

弘扬中华优秀传统文化

中华优秀传统文化是中华民族的宝贵财富。在新时代&#xff0c;弘扬中华优秀传统文化具有重要意义。本文将探讨如何传承和弘扬中华优秀传统文化。 一、中华优秀传统文化的内涵 传统美德&#xff1a;仁、义、礼、智、信等传统美德是中华民族的精神支柱。 文学艺术&#xff1a;诗…

苹果CMS影视程序被举报侵权?有效解决方案指南

在当今数字时代&#xff0c;影视版权问题成为了许多网站面临的主要挑战。如果你使用苹果CMS进行影视内容管理&#xff0c;可能会遇到版权举报的问题。幸运的是&#xff0c;有一种有效的解决方案可以帮助你应对这些挑战——苹果CMS插件&#xff0c;它能够屏蔽原视频内容&#xf…

namp拓展功能——nse脚本

前言: 最近在写一个需求&#xff0c;需要使用 nmap 获取指纹信息的同时&#xff0c;获取 http 信息的响应体&#xff08;如果是 http 协议的情况下&#xff09; 并行并非不可&#xff0c;但是nmap本身就有对http协议的探测 nmap的nse脚本 nmap 在 -sV 的命令下&#xff0c;本…

第二章算法设计题

1设线性表存放在向量A[arrsize]的前elenum个分量中&#xff0c;且递增有序。试写一算法&#xff0c;将x插入到线性表的适当位置上&#xff0c;以保持线性表的有序性&#xff0c;并且分析算法的时间复杂度。 【提示】直接用题目中所给定的数据结构&#xff08;顺序存储的思想是…

说说相机标定?

相机标定 什么是相机标定基本原理标定方法标定流程 相机标定是计算机视觉和图像处理中的一个重要过程&#xff0c;它主要用于确定相机的内部参数和外部参数&#xff0c;以便在后续的图像处理和计算机视觉应用中能够更准确地进行图像重建、三维重建、目标跟踪等操作。 什么是相机…

【DataSophon】Yarn配置历史服务器JobHistory和Spark集成historyServer

目录 一、概述 1.1历史服务器JobHistory 1.2 Spark历史服务器HistoryServer 二、集成配置 一、概述 1.1历史服务器JobHistory 为了查看程序的历史运行情况&#xff0c;需要配置一下历史服务器。方便在xxxx:8088查看历史任务运行日志信息。 1.2 Spark历史服务器HistoryServ…

llvm后端之函数栈帧

llvm后端之函数栈帧 引言1 目标扩展实现1.1 emitPrologue和emitEpilogue1.2 storeRegToStackSlot和loadRegFromStackSlot 2 寄存器存栈与恢复 引言 llvm后端在物理寄存器分配后、指令发射前会调用PEI这个pass来生成函数栈帧的创建与销毁。 1 目标扩展实现 在target下&#x…