2017-07-18 114 views
3

我有一个在AWS Ubuntu机器上运行的django。通过SSH,我在8000端口启动服务器。但是,当我关闭SSH窗口,服务器停止,我无法通过URL访问它。我想要的是一旦启动它就一直运行服务器。如何去做呢?谢谢。在AWS中运行Django Python服务器

+2

你需要使用像Apache或Nginx的服务器[Django部署(https://docs.djangoproject.com/en/1.11/howto/deployment/)。这对Stack Overflow来说太宽泛了。 – Alasdair

回答

3

您可以使用Apache或Nginx来部署Django应用程序。如果您打算使用Nginx,请首先在服务器中安装Nginx,然后将Django配置添加到Nginx配置中。你可以按照这个good guide

1

你可以这样做: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来反向代理请求。

1

在开发模式下,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