在部署 Flask
项目时,情况往往并不是那么理想。默认情况下,关闭 SSH
终端后,Flask
服务就停止了。这时,您需要找到一种方法在 Linux
服务器上实现持续运行 Flask
项目,并在服务器重启后自动重新启动。
本文将介绍两种方法来帮助您在 Linux
服务器上持续运行 Flask
项目。第一种方法是使用进程管理工具(如 Supervisor 或 Systemd),第二种方法是使用 nohup
命令。下面将以 Ubuntu 22.04
系统为例,逐一介绍这两种方法。
步骤一:创建服务文件
使用 nano
或其他编辑器,在 /etc/systemd/system/
目录下创建一个新的服务文件,例如 www.service
步骤二:编辑服务文件
在 www.service
服务文件中输入以下内容:
[Unit]
Description=www
After=network.target
[Service]
User=root
Group=default
WorkingDirectory=/root/www/thrive_api
ExecStart=/root/www/thrive_api/venv/bin/python3 /root/www/thrive_api/main.py
[Install]
WantedBy=multi-user.target
命名 | 含义 |
---|---|
[Unit] | 这是服务单元的声明部分,用于描述服务和其依赖关系 |
Description | 描述这个服务的信息,这里是 www |
After | 指定这个服务应该在哪些其他服务之后启动,这里是在网络服务启动之后启动 |
[Service] | 这是服务相关设置的部分 |
[Unit] | 这是服务单元的声明部分,用于描述服务和其依赖关系 |
User | 指定运行服务的用户,这里是 root |
Group | 指定运行服务的用户组,默认情况下是 default |
WorkingDirectory | 指定服务的工作目录,这里是 /root/www/thrive_api |
ExecStart | 指定要运行的命令,这里是在虚拟环境中执行的 Python3 脚本 /root/www/thrive_api/main.py |
[Install] | 这是安装相关设置的部分 |
WantedBy | 指定在哪些特定的 target (目标)之下安装服务,这里是 multi-user.target ,表示在多用户模式下安装 |
请根据您的实际情况修改这些参数。 |
步骤三:重新加载 Systemd 配置文件
运行以下命令重新加载 Systemd
配置文件:
sudo systemctl daemon-reload
步骤四:启动并启用服务
运行以下命令启动并启用服务:
sudo systemctl start myflaskapp
sudo systemctl enable myflaskapp
步骤五:检查服务状态
运行以下命令检查服务状态:
sudo systemctl status myflaskapp
如果服务正在运行,则应显示服务的详细信息和当前状态。
运行以下命令来在后台运行 Flask 项目:
nohup python app.py > /dev/null 2>&1 &
这将在后台运行 main.py
文件,并将输出重定向到 /dev/null
。
本文介绍了两种在 Linux
服务器上实现持续运行 Flask
项目的方法。第一种方法使用进程管理工具(如 Supervisor 或 Systemd),第二种方法使用 nohup
命令。使用这些方法可以使 Flask
项目在关闭 SSH
终端后仍然持续运行,并在服务器重启后自动重新启动。