如何让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为例:
- 安装screen:
sudo apt update && sudo apt install screen - 启动一个新的screen会话:
screen - 进入项目目录,运行Django服务:
python3 manage.py runserver 0.0.0.0:8000 - 按下
Ctrl+A+D分离会话,此时断开SSH后服务仍会运行 - 下次登录EC2后,重新连接会话:
screen -r - 要停止服务,直接在会话内按
Ctrl+C,或者执行exit关闭会话
生产环境推荐:systemd服务
适合长期稳定运行,支持开机自启、自动重启:
- 创建systemd服务配置文件:
sudo nano /etc/systemd/system/django-app.service - 写入以下配置(替换
/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 - 重新加载systemd配置:
sudo systemctl daemon-reload - 启动服务:
sudo systemctl start django-app - 设置开机自启:
sudo systemctl enable django-app - 常用管理命令:
- 查看服务状态:
sudo systemctl status django-app - 停止服务:
sudo systemctl stop django-app - 重启服务:
sudo systemctl restart django-app
- 查看服务状态:
内容的提问来源于stack exchange,提问作者Gregory
相关产品推荐
相关产品推荐

