web-dev-qa-db-ja.com

uWSGI権限の問題

私のサイトを稼働させるChefレシピを設定しようとしていますが、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を起動し、次のupstart構成ファイルを使用してiniファイルの_/etc/uwsgi/apps-enabled/_を監視させています。

_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
_
6
Nalum

皇帝が非特権ユーザーとして実行されている場合、家臣は特定のuidおよびgidにドロップできず、より重要なmaster-as-rootは意味をなしません(これを使用することは一般的に悪い考えですが、ここでは、特定の機能のハードウェアにアクセスします)。

/var/www/app-cms/logs/uwsgi.logがすでに存在し、rootによって所有されているかどうかを確認します。これはおそらく前の試行の結果であり、現在、非特権プロセスは書き込みモードでアクセスできません。

最後に、皇帝と家臣を同じログファイルにマッピングしないでください。ファイル記述子2が継承されるため暗黙的であり、家臣が皇帝とは異なる権限を持っている場合、さまざまな問題が発生する可能性があります(そうではありません)。

3
roberto