zmactep / ig-pipeline

2 stars 0 forks source link

Настроить nginx для ig-frontend #28

Closed Feodorov closed 10 years ago

Feodorov commented 10 years ago

Необходимо настроить работу nginx с ig-frontend, затем написать инструкцию по установке на сервер. Паша затем сможет установить все локально.

Feodorov commented 10 years ago

Нашел полезную статью: http://habrahabr.ru/post/61918/ Но по ней не получилось. Дошел до последнего пункта, и после запуска wcgi в питоне постоянно выпадала ошибка ValueError. Если ты таки пойдешь этим путем, то для wsgi в питоне 3 тебе понадобится вот такой пакет: https://github.com/Pyha/flup-py3.3 (ты столкнешься с его отсутствием когда будешь запускать manage.py)

Я пошел другим путем. 1) Установил nginx. 2) В папке с конфигами скопировал mime.types.default в mime.types 3) Конфиг nginx.conf:

 1 user root wheel;
  2 worker_processes 1;
  3 
  4 #error_log logs/error.log;
  5 #error_log logs/error.log notice;
  6 #error_log logs/error.log info;
  7 
  8 #pid logs/nginx.pid;
  9 
 10 events {
 11         worker_connections 1024;
 12 }
 13 
 14 http {
 15         include mime.types;
 16         default_type application/octet-stream;
 17 
 18         #access_log logs/access.log main;
 19 
 20         sendfile on;
 21         #tcp_nopush on;
 22 
 23         #keepalive_timeout 0;
 24         keepalive_timeout 65;
 25 
 26         #gzip on;
 27 
 28         server {
 29                 listen 80;
 30                 server_name localhost;
 31                 charset utf-8;
 32                 root /opt/ig-pipeline/ig-frontend/igcad;
 33                 #access_log logs/cool.access.log main;
 34 
 35                 client_max_body_size 300m;
 36 
 37                 location ~* ^.+\.(bmp|jpg|jpeg|pjpeg|gif|ico|png|css|doc|txt|js|docx|rtf|ppt|pdf|swf|zip|rar|gz)$ {
 38                         expires         10d;
 39                         log_not_found   on;
 40                         try_files       $uri
 41                                 /opt/ig-pipeline/ig-frontend/igcad/$uri;
 42                 }
 43                 location / {
 44                         proxy_pass_header Server;
 45                         proxy_set_header Host $http_host;
 46                         proxy_redirect off;
 47                         proxy_set_header X-Real-IP $remote_addr;
 48                         proxy_set_header X-Scheme $scheme;
 49                         proxy_connect_timeout 10;
 50                         proxy_read_timeout 10;
 51                         proxy_pass http://localhost:8000/;
 52                 }
 53                 #error_page 404 /404.html;
 54 
 55                 # redirect server error pages to the static page /50x.html
 56                 #
 57                 error_page 500 502 503 504 /50x.html;
 58                 location = /50x.html {
 59                         root html;
 60                 }
 61         }
 62 }
Feodorov commented 10 years ago

В конфиге есть тонкости: 1) В строке 1 нужно прописать пользователя-владельца статических файлов в ig-frontend/igcad/static. wheel - это группа. 2) Первый блок location - это выдача статических файлов самим nginx, минуя питоновскую часть 3) Второй блок location - это прокси на wsgi сервер питона.

Если правишь конфиг, сервер можно заставить перечитать его командой nginx -s reload.

Feodorov commented 10 years ago

Отлично. Теперь нам осталось запустить wsgi сервер на порту 8000, куда будут уходить запросы nginx. Есть два способа: https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/gunicorn/ Так как wsgi интерфейса у нас нет (или я не нашел), то я пошел по второму способу. Он deprecated, но на первое время сойдет. 1) pip install gunicorn 2) cd /opt/ig-pipeline/ig-frontend/igcad 3) /opt/local/Library/Frameworks/Python.framework/Versions/3.3/bin/gunicorn_django --workers=2 В последнем пункте тебе нужен бинарник gunicorn_django. Мне пришлось прописать абсолютный путь.

В итоге: все завелось, но, видимо, не самым оптимальным/правильным способом. Зато быстро :)