2016-09-18 86 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