サーバが
mod_wsgi (pid=31341): Target WSGI script 'xxx/wsgi.py' cannot be loaded as Python module. ValueError: Unable to configure handler u'app_log_file': [Errno 13] Permission denied: u'/xxx/mezzanine_app.log'
エラーの
夜間に
アプリケーションの
ログは、 ロガーで ログディレクトリに 書き出している。 ログローテーションを している。 ログの 所有者は HTTPサーバの ユーザ。 一部スケジュール起動している
django command が ある。 起動ユーザーは root ユーザ。
アプリケーションの
解決方法
Stack Overflow で、
Django の
解決方法と
ジョブ実行ユーザーと、
アプリケーション実行ユーザーの ロールを 揃える。
同じグループの ユーザーであれば、 ログファイルの パーミッション次第で ログを 書き込めるので、 ジョブ実行を HTTP サーバの ユーザと 同じ グループに 所属させれば、 ローテーションされても 問題は なさそうです。 ジョブと、
アプリケーションで 別の ログファイルに 書き込むようにする。
現状、区別なく 書き込みを 行っているので、 ジョブと アプリケーションが 書き込む ログファイルを 別にします。
とりあえず 暫定対処
ジョブの
*/1 * * * * /bin/sh $SCRIPT_HOME/change_permission.sh &>> $LOG_DIR/change_permission.log # change permission
アプリケーションユーザは
後日、
以上です。
Django と
いうか Python と いうか OS 側の ファイル 書き込み時の 動作に 引きづられる 動作かと 思います。 ↩
コメント