いつも迷うので簡単にLaravelのパーミッション設定について書こうと思う
本番デプロイ時のパーミッション設定
sudo chown -R www-data:www-data storage bootstrap/cache
sudo find storage -type d -exec chmod 775 {} \;
sudo find storage -type f -exec chmod 664 {} \;
sudo chmod -R 775 bootstrap/cache
sudo usermod -aG www-data ec2-user
ここで
-
www-data:www-data
は各環境のWEBサーバーが動くグループとユーザー -
www-data ec2-user
は各環境のWEBサーバーが動くグループとログインユーザー
なので気をつけてください
sudo usermod -aG www-data ec2-user
はcomposer install
などを打つ時にSSHしているユーザーにログの書き込み権限を付与するために必要です。
またコマンドを打った後一度SSH接続をログアウトして再度ログインしないとグループ情報が更新されないのも注意してください
についても
Webサーバーユーザーを確認する方法
上記www-data:www-data
を何という値にすればいいのか分からなくなっていつも困るので、Webサーバーのユーザーを確認する方法も書こうと思う
Apacheの場合
# 設定値から調べる時
grep -i 'User\|Group' /opt/bitnami/apache2/conf/httpd.conf
# 動いているプロセスから調べる時
ps aux | grep apache
Nginxの場合
# 設定値から調べる時
grep -i 'user' /opt/bitnami/nginx/conf/nginx.conf
# 動いているプロセスから調べる時
ps aux | grep nginx
その他注意点
上記の場合バッチを動かすユーザーを誰にするかで悩むと思う
cronを動かすとしたらdaemonやwww-dataでcronを動かさないとこれまたパーミッションエラーが出るので考慮する必要はありそう
# www-dataでcronの設定をする
sudo crontab -u www-data -e
以上
簡単ですがこれまで。何か間違っているところやそれは微妙じゃない?ということがあればそこそこ辛辣なコメントを残していただいて大丈夫です。よろしくお願いします。