You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让AWS Lightsail虚拟服务器上的应用在关闭SSH会话后持续运行

核心原因

你在SSH会话中直接启动的Flask进程属于当前SSH会话的子进程,当SSH连接断开时,系统会向该会话关联的所有进程发送SIGHUP(挂起)信号,绝大多数进程默认收到该信号会直接退出,这就是应用停止的根本原因,和AWS Lightsail的基础配置无关。

可选择的解决方案

根据你的使用场景可以选以下任意一种方案:

  • 临时测试场景:nohup后台运行
    不需要额外安装工具,修改启动命令即可:

    nohup python3 你的Flask启动文件名.py &
    

    nohup会让进程忽略SIGHUP信号,末尾的&会将进程放到后台运行,启动后直接关闭SSH即可。要停止进程时,执行ps aux | grep python找到对应进程ID,执行kill 进程ID即可。

  • 轻量长期运行场景:使用tmux终端复用
    可以创建独立于SSH会话的终端窗口,进程不会随SSH断开终止,操作步骤:

    1. 安装tmux(Debian/Ubuntu系):sudo apt install tmux,CentOS系请替换为sudo yum install tmux
    2. 新建独立会话:tmux new -s flask_app
    3. 进入会话后正常启动Flask应用,按下Ctrl+B后再按D即可退出会话界面,此时关闭SSH不影响进程运行
    4. 后续需要回到会话操作时,执行tmux a -t flask_app即可重新进入
  • 生产环境标准方案:配置systemd服务
    支持开机自启、崩溃自动重启,是长期运行服务的最优选择,操作步骤:

    1. 新建service配置文件:sudo nano /etc/systemd/system/flask_app.service
    2. 填入以下配置,将占位内容替换为你实际的路径、用户名、启动命令:
    [Unit]
    Description=My Flask Test App
    After=network.target
    
    [Service]
    User=你的服务器登录用户名
    WorkingDirectory=你的Flask应用所在文件夹的绝对路径
    ExecStart=python3 你的Flask启动文件名.py
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    1. 重载systemd配置:sudo systemctl daemon-reload
    2. 启动应用:sudo systemctl start flask_app
    3. 设置开机自启:sudo systemctl enable flask_app
      后续可以通过sudo systemctl status flask_app查看运行状态,journalctl -u flask_app查看应用日志。

额外提示:当前你用的Flask自带开发服务器仅适合测试使用,正式上线建议替换为Gunicorn、uWSGI等生产级WSGI服务器,再配合你已安装的Nginx做反向代理,性能和稳定性会大幅提升。

内容的提问来源于stack exchange,提问作者KineticSquid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:24:02