強欲で謙虚なツボツボ

趣味の読書の書の方

【EC2 + nginx + laravel】nginxとphp-fpmの設定

概要

EC2インスタンス上にnginxとphpを入れてgitに上がっているlaravelプロジェクトをブラウザで確認したい。
EC2はAmazon Linux 2を使う。

なんかhtmlは見れるけどphpは見れないみたいなこともあったから書き残しておく。(→ここ

 

やること

  1. nginxをインストールしてnginx.confを編集
  2. laravelのサーバ要件を満たすようにphp及びphp拡張をインストール
  3. php-fpm.d/www.confを編集
  4. composerをインストール
  5. gitをインストール
  6. laravelの.env編集とマイグレーション
  7. nginxとphp-fpmを起動
  8. ブラウザで確認

 

はじめに

いつもの。rootユーザーに切り替えてやる。

sudo su -
yum update

 

nginxをインストールしてnginx.confを編集

インストール。

amazon-linux-extras install nginx1

nginx.confを編集。
/etc/nginx/nginx.conffastcgi_passでphp-fpm.sockとしていたらhtmlにアクセスできるのにphpだとサーバーエラーとなった。
確認したら/run/php-fpmにはwww.sockがあるだけだったのでそれに合わせたらちゃんとphpも見れるようになった。

server {
    # ...略...
    root /var/www/laravelのプロジェクト/public;
    index index.php index.html index.htm;
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location ~ \.php$ {
        fastcgi_pass    unix:/run/php-fpm/www.sock; # php-fpmディレクトリにあるsockに合わせて
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include         fastcgi_params;
    }
    
    error_page 404 /404.html;
    location = /40x.html {
        root /usr/share/nginx/html; # 40x.htmlがあるディレクトリのパス(上の方のrootを上書き)
    }
    
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html; # 50x.htmlがあるディレクトリのパス(上の方のrootを上書き)
    }
    # ...略...
}

 

laravelのサーバ要件を満たすようにphp及びphp拡張をインストール

インストール。

amazon-linux-extras install php7.4

php拡張をインストール。

# 必要なphp拡張を確認(https://runebook.dev/ja/docs/laravel/docs/8.x/installation#server-requirementsphp -m | grep -e bcmath -e PDO -e ctype -e fileinfo -e json -e mbstring -e openssl -e pdo -e tokenizer -e ^xml$
# インストール
yum install php-bcmath php-mbstring php-xml -y

 

php-fpm.d/www.confを編集

以下の部分を探して編集。

user = nginx
group = nginx
location.owner = nginx
location.group = nginx
location.mode = 0660

 

composerをインストール

以下のsudo mv composer.phar /usr/local/bin/composerまでやればいい。

getcomposer.org

 

gitをインストール

httpでもsshでも好きなようにgitを使えばいい。個人的にはsshの方が好き。

yum install git
cd /var/www
git clone laravelプロジェクトをあげたgitリポジトリ

 

laravelの.env編集とマイグレーション

DB設定を.envに記述する。DBほにゃららを設定する。EC2使ってるなら多分RDSだと思う。

マイグレーション。(あれば)

php artisan migrate

 

nginxとphp-fpmを起動

起動。

systemctl start nginx
systemctl start php-fpm

インスタンスを停止して起動した時に自動でnginxとphp-fpmが起動するようにする。

systemctl enable nginx
systemctl enable php-fpm

実行状態を確認。

systemctl status nginx
systemctl status php-fpm

 

ブラウザで確認

ブラウザでIPにアクセスすればLaravelプロジェクトのpublic/index.phpにアクセスされるので確認できる。