问题描述
我正在尝试使用Gunicorn和Nginx在Django上运行项目.在DigitalOcean OneClick安装映像上,我的项目在没有virtualenv和全局Django安装的情况下都可以正常运行.但是,当我为不同的Django版本创建虚拟环境时,我无法使其正常工作.因此,请有人为我提供有关使用虚拟环境在Ubuntu上进行多站点托管的帮助.以下是我对虚拟环境的Gunicorn设置:
I am trying to run project on Django with Gunicorn and Nginx. On DigitalOcean OneClick install image my project works fine with no virtualenv and with global Django installation. But when I created virtual environment for different Django version I couldn't get it to work. So kindly someone please provide me some help with the multi site hosting on Ubuntu using virtual environment. Follwing is my Gunicorn settings for virtual environment:
description "Gunicorn daemon for Django project"
start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]
# If the process quits unexpectadly trigger a respawn
respawn
setuid django
setgid django
chdir /home/django
exec gunicorn \
--name=myproject2\
--pythonpath=myproject2\
--bind=127.0.0.1:9500 \
--config /etc/gunicorn.d/gunicorn.py \
myproject2.wsgi:application
第二个项目的我的Nginx设置为:
My Nginx settings for the second project are:
upstream ashyanaa_server {
server 127.0.0.1:9500 fail_timeout=0;
}
server {
listen 80;
listen [::]:80;
root /home/django/myproject2;
index index.html index.htm;
client_max_body_size 4G;
server_name www.myproject2.com;
keepalive_timeout 5;
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2|woff|ttf)$ {
expires 365d;
}
# Your Django project's media files - amend as required
location /media {
alias /home/django/myproject2/media/;
}
# your Django project's static files - amend as required
location static/static-only {
alias /home/django/myproject2/static-only/;
}
# Django static images
location /static/myproject2/images {
alias /home/django/myproject2/static-only/images/;
}
# Proxy the static assests for the Django Admin panel
location /static/admin {
alias /usr/lib/python2.7/dist-packages/django/contrib/admin/static/admin;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://myproject2_server;
}
第一个项目设置与第二个项目设置唯一不同的是,我为第二个项目使用虚拟环境,并且显然我必须为新项目使用不同的端口.
Only thing different in my first project settings from the second are that I am using virtual environment for the second project and obviously I had to use different port for new project.
推荐答案
这是由于对Nginx缺乏了解.我在Nginx中添加了www.mydomain.com,但我习惯在浏览器中输入没有www的域名.我只是添加了"mydomain.com"和"www.mydomain.com".因此,现在两者都可以正常工作.如果您所有设置正确并且仍然得到502,供其他用户使用,这意味着您要查找的地址未在Nginx中列出.这可能是原因之一.谢谢你们的帮助.
This is due to lack of understanding about Nginx. I added www.mydomain.com in Nginx but I have habit of typing domain name without www in browser. I simply added "mydomain.com" and "www.mydomain.com". So now both working without error. For others to follow if you have all the settings correct and still getting 502 that means the address you are looking for is not listed in Nginx. It could be one of the reason. Thanks for help though guys.
这篇关于Django,Gunicorn和Nginx出现错误的Gateway 502错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!