#題名の通り、自分がlaravelをnginxで立ち上げ、awsでデプロイさせる際につまったケースです。参考になれば幸いです。
前提
- nginx,php,php-fpm,laravel等のインストール
##① nginxのconfファイル設定
まず、nginxのconfファイルの設定でつまずきました。
confファイルでroot設定を正しくしているのに、index.phpを読み込んでくれず、404エラーとなってしまう状況となりました。
server {
listen 80;
listen [::]:80;
server_name _;
root /var/www/<ディレクトリ名>/public;
index index.php index.html index.htm;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
#redirect server error pages to the static page /40x.html
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
}
# redirect server error pages to the static page /40x.html
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
一見問題なさそうなので、とても解決するのに時間がかかりました。
結論この設定で問題なのは
include /etc/nginx/default.d/*.conf;
この記述でした。
どうやらincludeの読み込み指定で、どのconfを読み込めばいいかわからず、エラーとなっていたそうです。
やはり、公式サイトを見るのが吉ですね。。。
##② laravelのkey作成
laravelの権限関係
上記の通り、root指定できたので、laravelのキーを作らないといけないと思い、
php artisan key:generate
をしたところ、
The stream or file "/var/www/laravel/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied
あ、権限与えていなかったと思って、
sudo chmod 777 /storage/logs
としましたが、まだ権限エラーが出ていました。
なぜかと思い、laravel.logを見に行ったら、権限が通っていませんでした。
そのため、laravel.logにも777してあげると、権限エラーは消えましたが、下記の通りになりました。
envファイルエラー
file_put_contents(/var/www/laravel/.env): failed to open stream: Permission denied
なんだこれは。。envの権限がない?
とはいっても、.envに777渡すわけにはいけないよなと思っていたところ、
あ、rootユーザでやってみたらどうだろうと思い、
sudo su
//rootユーザーに変身!
php artisan key:generate
をしたころ、コマンドが通りました!!!
ブラウザで確認したところ、
おーー!いけました!
反省
全体的に、知識が足りなかったです。もっと勉強します。笑
今回学んだこと