【问题标题】:Running Django Python Server in AWS在 AWS 中运行 Django Python 服务器
【发布时间】:2017-07-18 09:09:58
【问题描述】:
我有一个在 AWS Ubuntu 机器上运行的 django。通过 SSH,我在 8000 端口启动服务器。但是当我关闭 ssh 窗口时,服务器停止并且我无法通过 URL 访问它。我想要的是在服务器启动后一直运行它。怎么办?谢谢。
【问题讨论】:
-
你需要deploy Django使用像Apache或Nginx这样的服务器。对于 Stack Overflow 来说,这个问题太宽泛了。
-
标签:
django
python-3.x
amazon-web-services
【解决方案1】:
您可以使用 Apache 或 Nginx 来部署 Django App。如果您打算使用 Nginx,请先在服务器中安装 Nginx,并将 Django 配置添加到 Nginx 配置中。您可以将其作为good guide 关注。
【解决方案2】:
你可以用 hacky 方式来做:创建一个执行应用程序的 bash 脚本(只需运行你执行的相同命令来运行它),然后使用 nohup 运行 bash 脚本,它将进程与 shell 分离并允许关闭会话时要继续运行的应用程序:
nohup ./my_bash_script.sh &
如果您想正确执行此操作,请创建一个服务文件并将应用程序作为服务执行。您可以像这样创建一个简单的服务文件:
[Unit]
Description=My Django app
After=network.target
[Service]
PIDFile=/run/DjangoApp/pid
User=<your user>
Group=<your group>
WorkingDirectory=<working directory of your Django app>
ExecStart=<path to your bash script>
PrivateTmp=True
[Install]
WantedBy=multi-user.target
将文件保存在/etc/systemd/system/djangoService.service 下。您可以使用以下命令启用服务:
sudo systemctl enable djangoService
并使用以下命令运行它:
sudo service start djangoService
这将使服务保持运行。但是请记住,要为适当的 Django 应用程序提供服务,您可能需要使用 Gunicorn/wsgi 来提供响应,使用 Nginx 来反向代理请求。
【解决方案3】:
在开发模式下,Django 有一个开发服务器,足以用于测试目的。一旦你完成了一个 Web 应用程序并准备好投入生产,在服务器上设置应用程序的过程可能会让某些人不知所措,特别是如果你是第一次这样做。本文提供了有关如何使用 mod_wsgi 部署基于 Django 的 Web 应用程序的分步指南。
您可以按照这篇文章来使用 Apache 服务器设置 mod_wsgi。 enter link description here
如果您只设置用于开发,那么您需要以守护程序模式运行服务器。
在 Ubuntu 上
run:>./manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 &
>exit