2016-09-18 89 views
1

我在/ home/ubuntu/test目录下创建了一个名为“yo”的django项目。用django设置nginx

这些都是我的nginx的文件:

的nginx /网站可用/哟

server { 
     listen 80; 
     server_name 52.89.220.11; 

     location = /favicon.ico { access_log off; log_not_found off; } 
     location /static/ { 
      root /home/ubuntu/test/yo/static; 
     } 

     location/{ 
      include uwsgi_params; 
      uwsgi_pass unix:/home/ubuntu/test/yo/yo.sock; 
     } 
    } 

的nginx /启用站点-/ yo_nginx.conf:

# mysite_nginx.conf 

# the upstream component nginx needs to connect to 
upstream django { 
    # server unix:///home/Ubuntu/test/yo/yo.sock; # for a file socket 
    server 127.0.0.1:8001; # for a web port socket (we'll use this first) 
} 

# configuration of the server 
server { 
    # the port your site will be served on 
    listen  80; 
    # the domain name it will serve for 
    server_name 52.89.220.11; # substitute your machine's IP address or FQDN 
    charset  utf-8; 

    # max upload size 
    client_max_body_size 75M; # adjust to taste 

    # Django media 
# location /media { 
    #  alias /path/to/your/mysite/media; # your Django project's media files - amend as required 
    # } 

    #location /static { 
    # alias /path/to/your/mysite/static; # your Django project's static files - amend as required 
    } 

# Finally, send all non-media requests to the Django server. 
location/{ 
    uwsgi_pass django; 
    include  /home/ubuntu/test/yo/uwsgi_params; # the uwsgi_params file you installed 
} 
} 

/家庭/ Ubuntu的/ test/yo/uwsgi_params:

uwsgi_param QUERY_STRING  $query_string; 
uwsgi_param REQUEST_METHOD  $request_method; 
uwsgi_param CONTENT_TYPE  $content_type; 
uwsgi_param CONTENT_LENGTH  $content_length; 

uwsgi_param REQUEST_URI  $request_uri; 
uwsgi_param PATH_INFO   $document_uri; 
uwsgi_param DOCUMENT_ROOT  $document_root; 
uwsgi_param SERVER_PROTOCOL $server_protocol; 
uwsgi_param REQUEST_SCHEME  $scheme; 
uwsgi_param HTTPS    $https if_not_empty; 

uwsgi_param REMOTE_ADDR  $remote_addr; 
uwsgi_param REMOTE_PORT  $remote_port; 
uwsgi_param SERVER_PORT  $server_port; 
uwsgi_param SERVER_NAME  $server_name; 

有我的文件以及他们的网址。当我转到端口80上的域名时,我得到502错误的网关,而不是django成功页面。请帮忙。

+0

为什么你有2个不同的nginx配置文件?为什么你有一个不在服务器块中的位置块? – polku

+0

我跟着一些链接,做了他们所说的。也许你可以帮忙。 – user2507

+0

那么你应该使用更好的链接,sites_enabled中的文件应该与sites_available中的文件相同,并且位置块属于服务器块。修复已经存在,并且如果总是有问题发布nginx和uwsgi的错误消息。 – polku

回答

1
  • 你有你的nginx/sites-enabled/yo_nginx.conf
  • nginx/sites-available/yo无与伦比的括号不是由nginx的读取 - 仅在.conf结尾的文件,位于nginx/sites-enabled/默认nginx的配置被读取。
  • 由于您的命令行uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=664告诉uwsgi在unix套接字上侦听,因此应该相应地修改您的upstream django块。

这应该摆脱502错误。

upstream django { 
    server unix:///home/ubuntu/test/yo/mysite.sock; # for a file socket, check if the path is correct 
    # server 127.0.0.1:8001; # for a web port socket 
} 

# configuration of the server 
server { 
    # the port your site will be served on 
    listen  80; 
    # the domain name it will serve for 
    server_name 52.89.220.11; # substitute your machine's IP address or FQDN 
    charset  utf-8; 

    # max upload size 
    client_max_body_size 75M; # adjust to taste 

    # Django media 
    # location /media { 
    #  alias /path/to/your/mysite/media; # your Django project's media files - amend as required 
    # } 

    # location /static { 
    #  alias /path/to/your/mysite/static; # your Django project's static files - amend as required 
    # } 

# Finally, send all non-media requests to the Django server. 
    location/{ 
     uwsgi_pass django; 
     include  /home/ubuntu/test/yo/uwsgi_params; # the uwsgi_params file you installed 
    } 
} 
+0

我会在几分钟后通知您。 – user2507

+0

它仍然给我502错误。 – user2507

+0

这是什么错误日志说: 2016/09/18 11:44:30 [错误] 10853#0:* 65连接()失败(111:连接被拒绝),当连接到上游,客户端:103.61。 255.51,server:52.89.220.11,请求:“GET /favicon.ico HTTP/1.1”,上游:“uwsgi://127.0.0.1:8001”,主机:“52.89.220.11”,referrer:“http:// 52.89.220.11/“ – user2507

1

首先安装所需的应用程序。 命令和apt-get安装nginx的uwsgi uwsgi-插件的Python中的python-的virtualenv包 版本将用于:

Nginx 
Uwsgi 
Virtualenv 
Django 
Virtualenv. 

我存储我的〜/项目的项目。现在我正在为我的项目创建python虚拟环境,并且正在安装Django。

cd ~/projects/ 
virtualenv example.com 
cd example.com 
source bin/activate 
pip install django 
django-admin.py startproject project 

Nginx配置。 恕我直言,默认情况下,nginx配置为基本任务。我不会在此条目中更改此配置。配置文件存储在

/etc/nginx/sites-available. Go to this directory and create a new file. 
cd /etc/nginx/sites-available 

VIM example.com 这是示例配置。

server { 
    listen 80; 
    server_name eample.com,www.example.com; 
    access_log /var/log/nginx/eample.com_access.log; 
    error_log /var/log/nginx/example.com_error.log; 

    location/{ 
     uwsgi_pass unix:///tmp/example.com.sock; 
     include  uwsgi_params; 
    } 

    location /media/ { 
     alias /home/eshlox/projects/example.com/project/project/media/; 
    } 

    location /static/ { 
     alias /home/eshlox/projects/example.com/project/project/static/; 
    } 
} 

我们必须创建符号链接来启用它。

cd /etc/nginx/sites-enabled 

ln -s ../sites-available/example.com . 

Uwsgi。 与Nginx一样..配置文件存储在/ etc/uwsgi/apps-available中。转到该目录并创建一个新文件。

cd /etc/uwsgi/apps-available 
vim example.com.ini 

编辑example.com.ini [uwsgi]

vhost = true 
plugins = python 
socket = /tmp/example.com.sock 
master = true 
enable-threads = true 
processes = 2 
wsgi-file = /home/eshlox/projects/example.com/project/project/wsgi.py 
virtualenv = /home/eshlox/projects/example.com 
chdir = /home/eshlox/projects/example.com/project 
touch-reload = /home/eshlox/projects/example.com/project/reload 

启用此。

cd /etc/uwsgi/apps-enabled/ 
ln -s ../apps-available/example.com.ini . 
That's all. Now, run this services. 
sudo service nginx start 
sudo service uwsgi start 
+1

非常感谢,但问题已解决。 – user2507