所以我正在尝试部署我的 django 应用程序(主要使用REST Apis)但是当我使用Amazon CLI时,我最终得到了 Fedora实例< / strong>,而我希望使用 Ubuntu实例。
所以我尝试这样做,我创建了一个ubuntu实例,创建了我的代码库,在ubuntu上安装了git并将代码从git克隆到了ubuntu。接下来,我安装了所有的requirements.txt依赖项,一切都在virtualenv并且工作正常。
但是这里是 catch ,python manage.py runserver
在localhost
上运行它(并不奇怪)。所以问题是,如何为那些api服务(不是在localhost上)?
答案 0 :(得分:3)
不要在生产中使用runserver
命令。它仅适用于本地开发。
在制作时,您需要设置应用程序服务器(uwsgi / gunicorn),然后使用nginx作为反向代理。
(同样的东西也适用于AWS)
答案 1 :(得分:0)
正如其他答案所述,runserver
命令仅适用于本地开发。实际上,您可以通过将其作为python manage.py runserver 0.0.0.0:8000
运行来使其在外部接口上进行侦听,但这是一个坏主意。配置nginx + uwsgi来运行Django应用程序非常简单。有多个教程和指南可用于此。这是官方的uWSGI指南
http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html
答案 2 :(得分:0)
请勿在生产中使用django开发服务器。它不是为这种用途而构建的。
而是使用像弹性beanstalk这样的东西来帮助你部署开箱即用的可扩展django应用程序。这是一个很好的分步教程:https://www.trysudo.com/deploying-django-app-on-aws-using-elastic-beanstalk/