Настройка django с помощью nginx на EC2 - PullRequest
3 голосов
/ 19 июля 2011

Я пытаюсь запустить свое приложение django с помощью nginx, но при попытке подключиться к моему EC2 IP я получаю сообщение об ошибке «Тайм-аут соединения истек».Он правильно отображает страницу django «deafult» на терминале, когда я запускаю

curl 127.0.0.1

Но не повезло с IP-адресами EC2.Публичный IP-адрес выдает ошибку 99 (невозможно назначить запрошенный адрес), частный IP-адрес выдает мне сообщение «Тайм-аут соединения истек» в моем браузере.

Так что со мной и / или с этой конфигурацией nginx:

user nobody nogroup;
pid /var/run/nginx.pid;
error_log /var/log/nginx/error.log;

events {
    worker_connections  1024;
    accept_mutex: on;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    access_log /tmp/nginx.access.log combined;
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay         on;
    gzip  on;
    gzip_http_version 1.0;
    gzip_proxied any;
    gzip_min_lenght 500;
    gzip_disable "MSIE [1-6]\.";
    gzip_types text/plain text/xml text/css
         text/comma-separated-values
         text/javascript application/x-javascript
         application/atom+xml;
    include /etc/nginx/sites-enabled/*;
}

Вот мой включенный сайт

upstream app_server {
  server 127.0.0.1:8000 fail_timeout=0;
}

server {
    listen my_IP:80 default;
    client_max_body_size 4G;
    server_name www.my_domain.pl my_domain.pl;
    keepalive_timeout 5;
    root /home/ubuntu/webapps/my_app;

  location / {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      if (!-f $request_filename) {
        proxy_pass http://app_server;
        break;
      }
  }
  error_page 500 502 503 504 /500.html;
  location = /500.html {
    root /path/to/app/current/public;

Нужно ли мне менять последнюю строку на что-то другое?Или этот proxy_pass чтоли?

1 Ответ

3 голосов
/ 25 мая 2012

Я создал свой сайт Django на EC2, используя Nginx и Gunicorn, и я следовал этим шагам

easy_install gunicorn
apt-get install nginx

nano /etc/init/site1.conf и добавлено

description "site1 web server"
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
exec /home/scripts/gunicorn_runserver.sh

и в gunicorn_runserver.sh

#!/bin/bash
  set -e
  LOGFILE=/var/log/nginx/site1.log
  NUM_WORKERS=10
  # user/group to run as
  USER=www-data
  GROUP=adm
  cd /home/projects/project_name/
#  source ../../bin/activate
  exec gunicorn_django -w $NUM_WORKERS \
    --user=$USER --group=$GROUP --log-level=error \
    --log-file=$LOGFILE 2>>$LOGFILE

и в Nginx conf

upstream app_server_site1 {
    server localhost:8000 fail_timeout=0;
}

location  / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;

    if (!-f $request_filename) {
            proxy_pass http://app_server_site1;
            break;
    }
}

наконец

/etc/init.d/nginx restart
service site1 start

Подробное описание о Nginx + Django + Gunicorn здесь и Nginx + Django + Fcgi здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...