2012-06-27 1 views
7

У меня есть сервер, на котором запущен Django/Nginx/uWSGI с uWSGI в режиме императора, а журнал ошибок для него (журнал ошибок на уровне вассалов, а не журнал уровня на уровне императора) имеет постоянную ошибку разрешений каждый раз, когда она порождает новую работник, например, так:uWSGI Server log ... разрешено ли читать файл ... какой файл?

вт 26 июн 19:34:55 2012 - Respawned uWSGI рабочий 2 (новый PID: 9334)

Ошибка открытия файла для чтения: отказано в

проблемы есть, я не знаю, в каком файле у него проблемы с открытием; это не файл журнала, очевидно, так как я смотрю на него, и он пишет об этом без проблем. Любой способ узнать? Я запускаю apt-get версию uWSGI 1.0.3-debian через Upstart на Ubuntu 12.04. Сайт работает успешно, кроме того, что кажется утечкой памяти ... следовательно, я смотрю на файл журнала. Я экспериментировал с изменением разрешений всего каталога/opt /, чтобы включить пользователя uwsgiuser, но безрезультатно. Я использую TCP-сокет, поэтому разрешения не должны быть проблемой. Это кеш? У этого есть свои «собственные разрешения»? Если да, то где?

My Upstart conf file 

description "uWSGI" start on runlevel [2345] stop on runlevel [06] respawn 

env UWSGI=/usr/bin/uwsgi env LOGTO=/var/log/uwsgi/emperor.log 

exec $UWSGI \ 
--master \ 
--emperor /etc/uwsgi/vassals \ 
--die-on-term \ 
--auto-procname \ 
--no-orphans \ 
--logto $LOGTO \ 
--logdate 

мой вассал ини файл:

[uwsgi] 
# Variables 
base = /opt/env/mysiteenv 

# Generic Config 
uid = uwsgiuser 
gid = uwsgiuser 
socket = 127.0.0.1:5050 
master = true 
processes = 2 
reload-on-as = 128 
harakiri = 60 
harakiri-verbose = true 
auto-procname = true 
plugins = http,python 
cache = 2000 
home = %(base) 
pythonpath = %(base)/mysite 
module = wsgi 
logto = /opt/log/mysite/error.log 
logdate = true 
+0

Скорее всего, это поможет получить полезный ответ на ServerFault. – Amber

ответ

8

Фактический ответ на этот вопрос, по-видимому, является этой специфической ошибкой Ubuntu:

https://bugs.launchpad.net/ubuntu/+source/libjpeg-turbo/+bug/1031718

Вы можете обойти эту проблему, поставив линий

setuid uwsgiuser 
setgid uwsgiuser 

в файл конфигурации выскочка, и удаление uid и gid настройки из конфигурации uwsgi.

+2

Это полностью сработало; Спасибо большое. Ошибка сводила меня с ума. – bkev

+0

Что такое файл конфигурации выскочки? –

+0

@uszywieloryba [Upstart] (http://upstart.ubuntu.com) является заменой init Ubuntu. Он запускает задания на основе файлов в '/ etc/init' (среди других мест). – alastair

3

Вы могли бы попытаться strace процесса и посмотреть, что вызывает сообщение об ошибке, что-то вроде:

UWSGI=/usr/bin/uwsgi LOGTO=/var/log/uwsgi/emperor.log strace -f -o strace.log -etrace=open,write $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --auto-procname --no-orphans --logto $LOGTO --logdate

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