Я пытаюсь создать рецепт от шеф-повара, по которому мой сайт будет работать, и все вроде работает нормально, кроме uWSGI
что дает мне следующую ошибку:
*** has_emperor mode detected (fd: 6) ***
[uWSGI] getting INI configuration from app-cms.ini
removed uwsgi instance app-cms.ini
Больше не говори этого:
open("/var/www/app-cms/logs/uwsgi.log"): Permission denied [utils.c line 246]
Этот файл журнала сейчас создается и содержит следующее:
*** Starting uWSGI 1.0.3-debian (64bit) on [Thu Feb 6 12:00:43 2014] ***
compiled with version: 4.6.3 on 17 July 2012 02:26:54
current working directory: /etc/uwsgi/apps-enabled
writing pidfile to /var/www/ediflo-cms/run/ediflo-cms.pid
detected binary path: /usr/bin/uwsgi-core
setgid() to 33
setuid() to 33
chdir(): Permission denied [uwsgi.c line 1723]
chdir(): Permission denied [uwsgi.c line 975]
Я не уверен, куда он пытается chdir()
к.
Я начинаю uWSGI
в режиме императора и смотреть /etc/uwsgi/apps-enabled/
для ini
файлы, используя следующий файл конфигурации выскочки:
description "uWSGI"
start on runlevel [2345]
stop on runlevel [06]
respawn
exec uwsgi --emperor /etc/uwsgi/apps-enabled --uid uwsgi --gid www-data --logto /var/log/uwsgi/uwsgi.log
Это мое uWSGI
конфигурация приложения:
[uwsgi]
; define variables to use in this script
; process name for easy identification in top
project = app-cms
base_dir = /var/www/app-cms
chdir = %(base_dir)
pythonpath = %(base_dir)/env/bin
uid = www-data
gid = www-data
procname = %(project)
; This value needs to be tuned
workers = 4
; Create pid file for easier process management
pidfile = %(base_dir)/run/%(project).pid
; Specify your app here
module = %(project)-wsgi:application
log-reopen = true
logto = %(base_dir)/logs/uwsgi.log
chmod-socket = 660
vacuum = True
enable-threads = True
; unix socket
socket = /tmp/app-cms-server.sock
; Enable stats
stats = /tmp/app-cms-stats.sock
если Emperor работает как непривилегированный пользователь, вассалы не могут перейти к определенному uid и gid, и, что более важно, master-as-root не имеет смысла (как правило, использовать его - плохая идея, это только для встроенных систем, которым необходимо доступ к оборудованию для определенных функций).
Проверьте, существует ли уже /var/www/app-cms/logs/uwsgi.log и принадлежит ли он пользователю root, очень вероятно, что это результат предыдущей попытки, и теперь непривилегированный процесс не может получить к нему доступ в режиме записи.
Наконец, не сопоставляйте Императора и вассалов с одним и тем же файлом журнала, это подразумевается, поскольку дескриптор файла 2 наследуется, и это может привести к различным проблемам, если вассал имеет разные разрешения от Императора (это не ваш случай)