在VPS上通过python manage.py runserver部署Django到生产环境
我买了一个虚拟专用服务器(VPS)来运行我的Django应用。之前我从来没有部署过Django或者其他任何应用。我看了一些关于如何用Apache和WSGI部署Django的教程,还有一些其他的选项,比如Gunicorn和Nginx。对我来说,这些内容都让人感到很沮丧,也很难理解。我在想,如果我把调试模式改成关闭,创建一个数据库,连接上去,然后直接运行命令python manage.py runserver my-ip,这样部署我的应用会怎么样?这样做算不算不好的做法呢?
2 个回答
3
不要在生产环境中使用开发服务器。就是不要。
至少要用gunicorn来提供服务:
$ pip install gunicorn
$ cd your_project
$ gunicorn project.wsgi # gunicorn now runs locally on port 8000
并且要用nginx(或者apache)作为反向代理:
server {
location / {
proxy_pass http://127.0.0.1:8000;
}
}
部署Django(就像其他任何应用一样)是一个独立的领域,掌握它需要时间。但绝对不要在生产环境中运行开发服务器。
6
学习如何部署一个Django项目其实很简单。
首先,你需要知道如何在Ubuntu
上安装Apache
和mod_wsgi
。
sudo apt-get install apache2 libapache2-mod-wsgi
或者在Fedora
(红帽系统)上安装(不需要测试)。
yum install httpd mod_wsgi
接下来,你需要了解如何将Apache2和你的Django项目关联起来。
<VirtualHost *:80>
ServerName example.com
ServerAdmin example@example.com
Alias /media/ /home/tu/blog/media/
<Directory /home/tu/blog/media>
Require all granted
</Directory>
WSGIScriptAlias / /home/tu/blog/blog/wsgi.py
<Directory /path/to/django/project/wsgifile>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
这里的WSGIScriptAlias
就是用来把Apache2的配置和你的Django项目连接起来的。
在Django的wsgi.py
文件里,你会看到project.settings
被包含在内,这就是它的工作原理。
下面的内容可能会让你更容易理解它是怎么工作的:
*.conf --> wsgi.py --> settings.py --> urls.py 和 apps
你只需要在谷歌上搜索ubuntu django server mod_wsgi
,就能自己学习了!