Administrator
发布于 2025-06-30 / 4 阅读
0
0

Flask 项目在 Linux 服务器上的 Nohup 启动与关闭记录​

在日常开发和运维中,我们常常会遇到需要将 Flask 项目部署到 Linux 服务器上,并确保其在后台持续稳定运行的需求。本文将详细记录我在将 Flask 项目的启动方式从python3 run.py转换为使用nohup命令启动的过程,以及后续如何关闭该服务的操作。​

背景​

我开发了一个基于 Flask 框架的 Web 项目,并成功上传到了 Linux 服务器上。起初,我通过python3 run.py命令来启动项目,此时项目能够正常访问,一切看似顺利。然而,当我关闭 SSH 连接或者切换到其他项目操作时,就无法再访问该 Flask 项目了。这是因为python3 run.py这种方式启动的项目,其生命周期依赖于当前的 SSH 会话,一旦会话结束,项目进程也会随之终止。为了解决这个问题,让项目能够在后台持续运行,不受 SSH 会话状态的影响,我决定使用nohup命令来重新启动项目。​

使用 nohup 命令启动 Flask 项目​

步骤​

  1. 切换到项目目录:通过 SSH 登录到服务器后,首先使用cd命令切换到 Flask 项目所在的目录。例如,如果我的项目存放在/home/user/flask_project目录下,那么执行命令cd /home/user/flask_project。​

  1. 执行 nohup 命令:在项目目录下,执行nohup命令来启动 Flask 项目。命令格式为nohup python3 run.py &。这里的nohup是 “no hang up” 的缩写,意为不挂断,使用该命令启动程序后,程序会忽略挂断信号(SIGHUP),从而在用户退出 SSH 会话或者关闭终端后,仍然能够继续在后台运行。&符号的作用是将该命令放入后台执行,这样当前终端就不会被占用,可以继续执行其他操作。​

  1. 查看输出日志:执行上述命令后,终端会输出nohup: ignoring input and appending output to 'nohup.out'。这表示nohup命令已经忽略了终端输入,并将程序的输出内容追加到了当前目录下的nohup.out文件中。我们可以通过查看这个文件来了解项目的运行状态和输出信息。例如,使用tail -f nohup.out命令可以实时查看nohup.out文件的末尾内容,方便我们监控项目的运行情况,及时发现可能出现的错误信息。​

关闭使用 nohup 启动的 Flask 项目​

当我们需要对项目进行更新、维护或者出于其他原因需要停止 Flask 项目运行时,就需要关闭使用nohup启动的项目进程。关闭的步骤如下:​

  1. 查找进程 ID(PID):使用ps -ef | grep python3命令来查找当前正在运行的 Python3 进程。在输出结果中,找到与我们的 Flask 项目相关的进程行,通常该行会包含run.py字样。例如,输出结果可能如下:​

TypeScript取消自动换行复制

user 12345 67890 0 10:30 pts/0 00:00:00 python3 run.py​

这里的12345就是我们要找的 Flask 项目进程的 ID(PID)。​

2. 终止进程:找到进程 ID 后,使用kill命令来终止该进程。命令格式为kill -9 PID,其中PID替换为我们在上一步查找到的具体进程 ID。例如,对于上述例子中的进程,执行kill -9 12345命令,即可强制终止 Flask 项目的进程。这里使用-9参数是因为它会发送 SIGKILL 信号,确保进程被立即终止,即使进程处于无法响应其他信号的状态,也能被成功关闭。​

通过以上步骤,我们成功地将 Flask 项目的启动方式从依赖 SSH 会话的python3 run.py转换为使用nohup命令在后台运行,并掌握了如何关闭该服务的方法。这样一来,我们的 Flask 项目能够在服务器上更加稳定、可靠地运行,为后续的开发和运维工作提供了有力保障。


评论