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

如何让Amazon EC2 Ubuntu实例上的Django项目持续运行?

让EC2上的Django服务在SSH断开后持续运行的方案

针对你在Ubuntu 22.04 EC2实例上遇到的问题,以下是几种可行的解决方法,按场景不同分为临时方案和生产级方案:

临时测试方案:nohup

适合快速临时运行,无需后续交互:

  • 进入Django项目目录后,执行命令:
    nohup python3 manage.py runserver 0.0.0.0:8000 &
    
    • nohup会让进程忽略终端断开的信号,输出默认写入当前目录的nohup.out文件
    • &将进程放到后台运行
  • 停止服务:先通过ps aux | grep runserver找到进程PID,再执行kill <PID>替换为实际PID

交互式临时方案:screen/tmux

适合需要后续重新连接查看服务输出、进行交互的场景,以screen为例:

  1. 安装screen:
    sudo apt update && sudo apt install screen
    
  2. 启动一个新的screen会话:
    screen
    
  3. 进入项目目录,运行Django服务:
    python3 manage.py runserver 0.0.0.0:8000
    
  4. 按下Ctrl+A+D分离会话,此时断开SSH后服务仍会运行
  5. 下次登录EC2后,重新连接会话:
    screen -r
    
  6. 要停止服务,直接在会话内按Ctrl+C,或者执行exit关闭会话

生产环境推荐:systemd服务

适合长期稳定运行,支持开机自启、自动重启:

  1. 创建systemd服务配置文件:
    sudo nano /etc/systemd/system/django-app.service
    
  2. 写入以下配置(替换/path/to/your/django/project为你的实际项目目录):
    [Unit]
    Description=Django Web Application
    After=network.target
    
    [Service]
    User=ubuntu
    WorkingDirectory=/path/to/your/django/project
    ExecStart=/usr/bin/python3 manage.py runserver 0.0.0.0:8000
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
  3. 重新加载systemd配置:
    sudo systemctl daemon-reload
    
  4. 启动服务:
    sudo systemctl start django-app
    
  5. 设置开机自启:
    sudo systemctl enable django-app
    
  6. 常用管理命令:
    • 查看服务状态:sudo systemctl status django-app
    • 停止服务:sudo systemctl stop django-app
    • 重启服务:sudo systemctl restart django-app

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:27:16