/ / nastavenie nginx s django - python, django, nginx

nastavenie nginx s django - python, django, nginx

V adresári / home / ubuntu / test som vytvoril projekt django s názvom „yo“.

Toto sú moje súbory nginx:

nginx / sites-available / yo

    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 / sites-enabled / 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
}
}

/ home / 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;

Sú tu moje súbory spolu s ich adresou URL. Keď idem na doménu_name na porte 80, namiesto stránky s úspechom django dostanem 502 zlú bránu. Prosím pomôžte.

odpovede:

1 pre odpoveď č. 1
  • máte vo svojom nginx/sites-enabled/yo_nginx.conf
  • nginx/sites-available/yo nie je čítaný súborom nginx - iba súbory končiace na .conf a nachádza sa v nginx/sites-enabled/ sa načítajú v predvolenej konfigurácii nginx.
  • od príkazového riadku uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=664 hovorí uwsgi, aby počúvalo na unixovom sokete, vašom upstream django blok by sa mal príslušne upraviť.

To by sa malo zbaviť chyby 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
}
}

1 pre odpoveď č. 2

Najskôr nainštalujte požadované aplikácie. sudo apt-get install nginx uwsgi uwsgi-plugin-python python-virtualenv Verzie balíkov, ktoré sa budú používať:

Nginx
Uwsgi
Virtualenv
Django
Virtualenv.

Ukladám svoj projekt do ~ / projects. Teraz vytváram pre svoj projekt virtuálne prostredie pythonu a inštalujem Django.

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

Konfigurácia Nginx. IMHO je štandardne nginx nakonfigurovaný pre základné úlohy. V tejto položke túto konfiguráciu nezmením. Konfiguračné súbory sú uložené v priečinku

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

vim example.com Je to príklad konfigurácie.

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/;
}
}

Aby sme to umožnili, musíme vytvoriť symbolický odkaz.

cd /etc/nginx/sites-enabled

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

Uwsgi. Rovnako ako v prípade Nginx .. konfiguračné súbory sú uložené v priečinku / etc / uwsgi / apps-available. Prejdite do tohto adresára a vytvorte nový súbor.

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

Upravte 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

Povoľte to.

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