我正在尝试部署django项目。我尝试了很多教程,但没有运气。我使用一个新的干净的Ubuntu 11.10。我已经完成了
apt-get install nginx
apt-get install uwsgi
service nginx start
我已创建文件夹/deploy/project1
并将manage.py
和其他文件放在那里。
我当前的/deploy/project1/project1/wsgi.py
包含:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project1.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
那么,你能告诉我如何正确部署我的django应用程序domain.com
吗?
我还通过pip和easy_install
安装了Django我应该在/etc/nginx/sites-enabled/default
中添加什么。
答案 0 :(得分:36)
假设您已经安装了所有需求并且您正在使用aptitude包,那么您不需要wsgi.py.所有配置都在uwsgi ini / xml / yaml文件中。 (采用您喜欢的格式)。
以下是nginx的example.com
文件的最小示例(/ etc / nginx / sites-available / examplecom for ubuntu 11.10)
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/projectname.log;
location /media {
alias /vagrant/test/projectname/media/;
}
location /static {
alias /vagrant/test/projectname/static/;
}
location / {
uwsgi_pass unix:///run/uwsgi/projectname/socket;
include uwsgi_params;
}
}
创建指向/ etc / nginx / sites-enabled的符号链接
sudo ln -s /etc/nginx/sites-available/examplecom /etc/nginx/sites-enabled/examplecom
或
sudo /usr/sbin/nxensite examplecom
你完成了NGINX。
转到/etc/uwsgi/apps-available
并创建您的ini文件
sudo vim /etc/uwsgi/apps-available/projectname.ini
[uwsgi]
virtualenv=/home/vagrant/.virtualenvs/projectenv
thread=3
master=1
env = DJANGO_SETTINGS_MODULE=projectname.settings
module = django.core.handlers.wsgi:WSGIHandler()
chdir = /path/to/my/django/project
socket = /run/uwsgi/projectname/socket
logto = /var/log/uwsgi/projectname.log
将你的ini指向/etc/uwsgi/apps-enabled/projectname.ini
sudo ln -s /etc/uwsgi/apps-available/projectname.ini /etc/uwsgi/apps-enabled/projectname.ini
有关详细信息,请参阅系统上的以下任何文件:
/etc/uwsgi/apps-available/README
/etc/uwsgi/apps-enabled/README
/usr/share/doc/uwsgi/README.Debian.gz
/etc/default/uwsgi
你完成了。你现在可以重启nginx& uwsgi
sudo service nginx restart
sudo service uwsgi restart
干杯!
答案 1 :(得分:9)
不要忘记Debian的,Ubuntu及其派生'uwsgi
包不需要安装其Python插件 - uwsgi-plugin-python
,因为uWSGI不一定只使用Python(Lua有插件, Erlang和其他语言)。但是,Django需要Python插件。安装它:
sudo apt install uwsgi-plugin-python
与PIP的安装不同,您应该在应用程序配置中明确提及uwsgi的插件,方法是向其添加plugins = python
行(如果使用Python),如下所示:
[uwsgi]
plugins = python
uwsgi-socket = /var/sockets/django.sock
chmod-socket = 660
chdir = /home/v/django
module = project.wsgi
除非您这样做,否则将不会提供特定于Python的选项。而Debian的/ Ubuntu的uWSGI对此会很安静!