У меня есть приложение для 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, но я очень редко использовал сайты самостоятельно. Поэтому я действительно борется здесь.
Любая помощь очень ценится, спасибо.
Что делает Nginx ' error.log' сказать? Что значит «не работает»? Какой код состояния вам дает nginx? – Blender
Я просто не могу получить доступ к веб-сайту из порта, указанного в nginx.conf. Поэтому, чтобы получить статические файлы, работающие с сайтом, мне нужно заставить nginx обслуживать статические файлы и позволить uWSGI общаться с Django для обслуживания остальных. UWSGI делает это самостоятельно без статических файлов. Но nginx, похоже, не работает в sll. Когда я учусь в офис утром, я опубликую журнал доступа nginx. – shenk
Вы должны получить * что-то * (например, общую страницу ошибок nginx). Если нет, то вы должны попробовать запустить nginx, прежде чем делать что-либо еще с ним. После того, как это работает, разместите последние несколько строк 'error.log'. – Blender