upstart v1.4
アプリケーションサーバーを起動するために使用していますunicorn
.
構成ファイルは次のupstart
ようになります。
description "Unicorn Application Server"
start on network
stop on runlevel [!2345]
umask 0003
setuid unicorn
setgid myproject
chdir /opt/myproject/
respawn
exec /opt/myproject/bin/unicorn --config-file /opt/myproject/config/unicorn.rb --env production
少なくともディレクトリに対して0774
は、プロセスが で実行されることが不可欠です。ug+rwxo+r
ユーザーとグループは、nginx サーバー、アップロード、スタッフのログインなどで共有されます。
ディレクトリが間違った権限で作成されていることがわかりました。
drw-rw-r-- 2 unicorn myproject 4096 2012-01-13 06:58 20120113-0658-7704-4676
私の知る限り、私のアプリケーションではこれを引き起こしているものは何もありません。
プロセスにアタッチgdb
して を呼び出すcall umask(0)
と、有効な umask は75
、または になり0o113
ます。
gdb
セッションは次のとおりです。
root@1:/opt/myproject# cat ./tmp/pids/unicorn.pid
7600
root@1:/opt/myproject# gdb
GNU gdb (GDB) 7.1-ubuntu
(gdb) attach 7600
Attaching to process 7600
(gdb) call umask(0)
$1 = 75
(gdb) call umask(75)
$2 = 0
(gdb) q
Quit anyway? (y or n) y
Detaching from program: /usr/local/bin/ruby, process 7600
root@1:/opt/myproject# ruby -e 'printf("%o\n", 75)'
113
の umask は、113
に対して作成されたアクセス許可を説明します664
。これは、私が見ているように見えます。
ここで私は何を間違っていますか? 新興企業は私のスタンザを無視していますか? スタンザを003
ではなくとして定義する必要があり0003
ますか? 私のgdb
セッションは機能しており、%o
printf()
構文は正しいですか?