2015-10-29 4 views
1

У меня есть приложение для django. Я не могу заставить nginx правильно обслуживать статические файлы, но это не проблема.uWSGI, nginx, django unix розетки не работают

Текущая проблема в том, что, когда после этого руководства: https://gist.github.com/evildmp/3094281

Я пытаюсь использовать сокеты Unix, а не веб-сокет.

например.

server unix:///tmp/uwsgi.sock; # for a file socket 
#server 127.0.0.1:8001;  # for a web port socket 

используя /tmp/uwsgi.sock гнездо, а не сокет порта на веб-127.0.0.1:8001.

Проблема в том, что когда я использую сокет веб-порта, и я перехожу к domainname.com:8001, я добираюсь до веб-сайта, как обслуживается uWSGI, но не загружаются статические файлы. Таким образом, это означает, что по крайней мере uwsgi работает. Но когда я перехожу к файловому сокету, я даже не могу заставить его работать вообще.

Что я делаю неправильно?

Вот мой nginx.conf:

# nginx.conf 
upstream django { 
    # connect to this socket 
    # server unix:///tmp/uwsgi.sock; # for a file socket (TRYING TO USE) 
    server 127.0.0.1:8001;  # for a web port socket (RATHER THAN THIS) 
    } 

server { 
    # the port your site will be served on 
    listen  8000; 
    # the domain name it will serve for 
    server_name .cshenkan.com; # 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 /home/ubuntu/sasite-rewrite/media;  # your Django pro$ 
    } 

    location /static { 
      alias /home/ubuntu/sasite-rewrite/static;  # your Django pro$ 
    } 
    location /assets { 
      alias /home/ubuntu/sasite-rewrite/assets 
    } 

    # Finally, send all non-media requests to the Django server. 
    location/{ 
     uwsgi_pass django; 
     include  /etc/nginx/uwsgi_params; # or the uwsgi_params you installe$ 
     } 
    } 

И мой base.py файл настроек сниппет:

STATIC_ROOT = normpath(join(SITE_ROOT, 'static')) 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (
    normpath(join(SITE_ROOT, 'static')), 
    normpath(join(SITE_ROOT, 'assets')), 
) 

И как я бегу uwsgi при использовании веб-сокет:

uwsgi --http: 8001 --chdir/home/ubuntu/sasite-rewrite --wsgi-file /home/ubuntu/sasite-rewrite/sasite/wsgi.py

И как я запускаю его при использовании гнезда unix:

uwsgi --socket /tmp/uwsgi.sock --chdir/home/ubutnu/sasite-rewrite --wsgi-file/home/ubuntu/sasite-rewrite /sasite/wsgi.py

Я просто не могу заставить его работать при использовании сокета unix.

Я также не могу заставить nginx обслуживать правильные статические файлы, например, если я добавлю файл в медиа-каталог с именем 1.png или 1.txt и попытаюсь получить к ним доступ с именем domainname.com:8000/media/1 .png Я всегда получаю зависание или отсутствие ответа от ошибки сервера.

Что я делаю неправильно?

Как я могу правильно использовать сокет unix? И команда, которую я использую правильно?

Я также не понимаю этого, когда я использую веб-сокет, я могу подключиться к domainname.com:8001 и получить страницу без статических файлов, она выглядит как дерьмо, но загружается с uwsgi. Но с сокетами unix я понятия не имею, как получить доступ к странице, обслуживаемой uwsgi, чтобы узнать, работает ли она с UNIX-сокетом. Прежде чем я смогу перейти на работу nginx, мне нужно решить эту проблему, поскольку я пытался использовать веб-сокеты с nginx и до сих пор не повезло, я надеюсь, что когда мои сокеты UNIX настроены правильно, nginx будет работать лучше.

Любые предложения или примеры, которые вы могли бы предоставить? Было бы очень признательно, я долго программист django, но я очень редко использовал сайты самостоятельно. Поэтому я действительно борется здесь.

Любая помощь очень ценится, спасибо.

+0

Что делает Nginx ' error.log' сказать? Что значит «не работает»? Какой код состояния вам дает nginx? – Blender

+0

Я просто не могу получить доступ к веб-сайту из порта, указанного в nginx.conf. Поэтому, чтобы получить статические файлы, работающие с сайтом, мне нужно заставить nginx обслуживать статические файлы и позволить uWSGI общаться с Django для обслуживания остальных. UWSGI делает это самостоятельно без статических файлов. Но nginx, похоже, не работает в sll. Когда я учусь в офис утром, я опубликую журнал доступа nginx. – shenk

+0

Вы должны получить * что-то * (например, общую страницу ошибок nginx). Если нет, то вы должны попробовать запустить nginx, прежде чем делать что-либо еще с ним. После того, как это работает, разместите последние несколько строк 'error.log'. – Blender

ответ

1

Сегодня у меня была такая же проблема с NGINX + Socket Unix для протокола uwsgi. Я обнаружил, что версия 1.8 NGINX прослушивается.

Попробуйте установить версию 1.10, которая будет работать через UNIX SOCKET.

При использовании открытой SuSE, вы можете получить обороты здесь:

http://download.opensuse.org/repositories/home:/ghostlyrat/openSUSE_Leap_42.2/x86_64/nginx-1.10.1-3.3.x86_64.rpm

Или, непосредственно в официальной СГРУЗИТЬ Nginx:

http://nginx.org/en/download.html

+0

Я обнаружил, что в версии 1.11 NGINX проблема возвращается – arannasousa

Смежные вопросы