网站公告

在线支付系统线程守护新版

发布时间: 2025-03-25 08:01

在线支付系统线程守护新版

要了解自己的情况:

[root@VM-8-5-centos flask+mysql的博客网站]# which conda /root/miniconda3/condabin/conda [root@VM-8-5-centos flask+mysql的博客网站]#

工作路径: /root/websites/支付系统/app.py

为了创建一个开机自启动的守护进程来运行你的 Flask 应用,你可以使用 Systemd,它是大多数现代 Linux 发行版的默认初始化系统。以下是创建 Systemd 服务单元文件的步骤,该文件将在系统启动时自动启动你的 Flask 应用。

步骤 1: 创建 Systemd 服务单元文件

  1. 打开终端。

  2. 创建一个新的 Systemd 服务单元文件。通常,这些文件存储在 /etc/systemd/system/ 目录下。你可以使用 nano 或其他文本编辑器来创建文件:

sudo nano /etc/systemd/system/app.service

bash sudo nano /etc/systemd/system/flask_app.service

  1. 在打开的编辑器中,粘贴以下内容,并根据你的实际情况进行修改:

```ini [Unit] Description=Shopping_Pay App After=network.target

[Service] Type=simple User=root Group=root WorkingDirectory=/root/websites/支付系统 Environment="PATH=/root/miniconda3/envs/blogenv/bin" ExecStart=/root/miniconda3/envs/blogenv/bin/python app.py Restart=on-failure RestartSec=5

[Install] WantedBy=multi-user.target

```

  • Description:服务的描述。
  • After:定义服务应该在网络启动后启动。
  • Type:服务类型,simple 表示执行 ExecStart 指定的命令。
  • User:运行服务的用户,根据你的需求更改。
  • WorkingDirectory:你的 Flask 应用所在的目录。
  • Environment:设置环境变量,确保使用正确的 Python 环境。
  • ExecStart:启动服务的命令,确保使用正确的 Python 解释器和应用入口文件。
  • Restart:定义在服务失败时是否重启。
  • RestartSec:失败后重启前等待的时间。

步骤 2: 启用并启动服务

  1. 重载 Systemd 管理器配置,以识别新的服务文件:

bash sudo systemctl daemon-reload

  1. 启用服务,以便在系统启动时自动运行:

bash sudo systemctl enable flask_app.service

  1. 启动服务:

bash sudo systemctl start flask_app.service

  1. 确保运行服务的用户(在本例中为flaskuser)有权限访问/root/websites/支付系统/目录和执行app.py脚本。你可以通过以下命令调整权限:

sudo chown -R root:root /root/websites/支付系统/ sudo chmod +x /root/websites/支付系统/app.py

检查服务状态,确保它正在运行:

bash sudo systemctl status flask_app.service

我的实战

``` cd /root/websites (base) [root@VM-8-5-centos ~]# cd /root/websites (base) [root@VM-8-5-centos websites]# sudo nano /etc/systemd/system/flask_app.service (base) [root@VM-8-5-centos websites]# source /etc/systemd/system/flask_app.service -bash: /etc/systemd/system/flask_app.service: No such file or directory (base) [root@VM-8-5-centos websites]# sudo systemctl daemon-reload (base) [root@VM-8-5-centos websites]# sudo systemctl enable flask_app.service Failed to execute operation: No such file or directory (base) [root@VM-8-5-centos websites]# sudo nano /etc/systemd/system/flask_app.service (base) [root@VM-8-5-centos websites]# sudo nano /etc/systemd/system/flask_app.service (base) [root@VM-8-5-centos websites]# sudo systemctl daemon-reload (base) [root@VM-8-5-centos websites]# sudo systemctl enable flask_app.service Created symlink from /etc/systemd/system/multi-user.target.wants/flask_app.service to /etc/systemd/system/flask_app.service. (base) [root@VM-8-5-centos websites]# sudo systemctl start flask_app.service (base) [root@VM-8-5-centos websites]# sudo systemctl status flask_app.service ● flask_app.service - Shopping_Pay App Loaded: loaded (/etc/systemd/system/flask_app.service; enabled; vendor preset: disabled) Active: activating (auto-restart) (Result: exit-code) since Tue 2025-03-25 15:47:56 CST; 4s ago Process: 28164 ExecStart=/root/miniconda3/envs/blogenv/bin/python app.py (code=exited, status=217/USER) Main PID: 28164 (code=exited, status=217/USER)

Mar 25 15:47:56 VM-8-5-centos systemd[1]: Unit flask_app.service entered failed state. Mar 25 15:47:56 VM-8-5-centos systemd[1]: flask_app.service failed. Mar 25 15:48:01 VM-8-5-centos systemd[1]: flask_app.service holdoff time over, sche...t. Mar 25 15:48:01 VM-8-5-centos systemd[1]: Stopped Shopping_Pay App. Mar 25 15:48:01 VM-8-5-centos systemd[1]: Started Shopping_Pay App. Mar 25 15:48:01 VM-8-5-centos systemd[1]: flask_app.service: main process exited, c...ER Mar 25 15:48:01 VM-8-5-centos systemd[1]: Unit flask_app.service entered failed state. Mar 25 15:48:01 VM-8-5-centos systemd[1]: flask_app.service failed. Hint: Some lines were ellipsized, use -l to show in full. (base) [root@VM-8-5-centos websites]# sudo chown -R flaskuser:flaskuser /root/websites/ 支付系统/ chown: invalid user: ‘flaskuser:flaskuser’ (base) [root@VM-8-5-centos websites]# sudo chmod +x /root/websites/支付系统/app.py (base) [root@VM-8-5-centos websites]# sudo chown -R flaskuser:flaskuser /root/websites/ 支付系统/ chown: invalid user: ‘flaskuser:flaskuser’ (base) [root@VM-8-5-centos websites]# sudo chown -R root:root /root/websites/支付系统/ (base) [root@VM-8-5-centos websites]# sudo systemctl status flask_app.service ● flask_app.service - Shopping_Pay App Loaded: loaded (/etc/systemd/system/flask_app.service; enabled; vendor preset: disabled) Active: activating (auto-restart) (Result: exit-code) since Tue 2025-03-25 15:52:39 CST; 787ms ago Process: 30369 ExecStart=/root/miniconda3/envs/blogenv/bin/python app.py (code=exited, status=217/USER) Main PID: 30369 (code=exited, status=217/USER)

Mar 25 15:52:39 VM-8-5-centos systemd[1]: Unit flask_app.service entered failed state. Mar 25 15:52:39 VM-8-5-centos systemd[1]: flask_app.service failed. (base) [root@VM-8-5-centos websites]# sudo nano /etc/systemd/system/flask_app.service (base) [root@VM-8-5-centos websites]# sudo nano /etc/systemd/system/flask_app.service (base) [root@VM-8-5-centos websites]# sudo systemctl daemon-reload (base) [root@VM-8-5-centos websites]# sudo chmod +x /root/websites/支付系统/app.py (base) [root@VM-8-5-centos websites]# sudo systemctl enable flask_app.service (base) [root@VM-8-5-centos websites]# sudo systemctl start flask_app.service (base) [root@VM-8-5-centos websites]# sudo systemctl status flask_app.service ● flask_app.service - Shopping_Pay App Loaded: loaded (/etc/systemd/system/flask_app.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2025-03-25 15:55:14 CST; 1min 9s ago Main PID: 31601 (python) CGroup: /system.slice/flask_app.service ├─31601 /root/miniconda3/envs/blogenv/bin/python app.py └─31602 /root/miniconda3/envs/blogenv/bin/python /root/websites/ /app.py

Mar 25 15:55:14 VM-8-5-centos python[31601]: * Serving Flask app 'app' Mar 25 15:55:14 VM-8-5-centos python[31601]: * Debug mode: on Mar 25 15:55:14 VM-8-5-centos python[31601]: WARNING: This is a development server....d. Mar 25 15:55:14 VM-8-5-centos python[31601]: * Running on all addresses (0.0.0.0) Mar 25 15:55:14 VM-8-5-centos python[31601]: * Running on http://127.0.0.1:5001 Mar 25 15:55:14 VM-8-5-centos python[31601]: * Running on http://10.2.8.5:5001 Mar 25 15:55:14 VM-8-5-centos python[31601]: Press CTRL+C to quit Mar 25 15:55:14 VM-8-5-centos python[31601]: * Restarting with stat Mar 25 15:55:15 VM-8-5-centos python[31601]: * Debugger is active! Mar 25 15:55:15 VM-8-5-centos python[31601]: * Debugger PIN: 714-975-813 Hint: Some lines were ellipsized, use -l to show in full. (base) [root@VM-8-5-centos websites]# ```

骤 3: 解决端口冲突问题

如果你的 Flask 应用在启动时遇到端口冲突,你可以修改 app.py 以使用环境变量来设置端口,然后在 Systemd 服务文件中设置该环境变量:

  1. 修改 app.py,使用环境变量来设置端口:

python from flask import Flask app = Flask(__name__) port = int(os.environ.get('FLASK_PORT', 5000)) @app.route('/') def hello(): return 'Hello, World!' if __name__ == '__main__': app.run(host='0.0.0.0', port=port)

  1. 在 Systemd 服务文件中设置 FLASK_PORT 环境变量:

ini [Service] ... Environment="PATH=/home/root/blogenv/bin FLASK_PORT=5001" ...

这样,你的 Flask 应用就会在系统启动时自动运行,并且如果遇到错误会自动重启。确保你的服务文件中的路径、用户和环境变量与你的系统配置相匹配。

步骤 4:怎么停止服务呢

要停止由Systemd管理的服务,你可以使用以下命令:

bash sudo systemctl stop flask_app.service

这个命令会停止flask_app.service服务。如果你还想在下次系统启动时不再自动启动这个服务,你可以使用以下命令来禁用服务:

bash sudo systemctl disable flask_app.service

如果你想再次启用服务以使其在系统启动时自动运行,可以使用:

bash sudo systemctl enable flask_app.service

检查服务状态

停止服务后,你可以使用以下命令检查服务状态,确认它已经停止:

bash sudo systemctl status flask_app.service

重启服务

如果你之后想要重启服务,可以使用:

bash sudo systemctl restart flask_app.service

注意

请确保在执行这些命令时具有相应的权限,通常需要root权限或使用sudo。 通过这些命令,你可以轻松地管理由Systemd管理的服务的启动、停止和重启。

网站公告

发布时间: 2025-03-25 03:09

欢迎来到我们的网站!

优惠活动

发布时间: 2025-03-25 03:09

全场满100元减50元!

服务保障

发布时间: 2025-03-25 03:09

我们提供24小时服务保障!

重磅来袭

发布时间: 2025-03-25 02:27

帮帮派在线服务平台 4.0 重磅上线,实现了更多功能,有画图片上传等功能