Dockerで開発したLaravelの本番環境移行 覚書

構成について

nginxをリバースプロジェクトとして使い、リクエストを受けそれをphp-fpmに渡してphpを実行する。

リバースプロキシとは?

外部のネットワークから内部へのネットワークの通信を中継する仕組み。 リバースプロキシを設定することで、セキュリティや負荷分散なと様々なメリットがサーバーサイドに期待できるらしい。 参考 https://wa3.i-3-i.info/word1755.html



1.EC2インスタンスを作成し、ssh接続を行う。(EC2のパブリックIPv4アドレスが必要。)



2.パッケージを最新バージョンに更新する。

$ sudo yum update

3.nginxをインストールする。

→普通の環境なら(また今度試してみる) $ sudo yum install -y nginx

→今回はEC2なので、インストールの前にnginxを有効にする必要がある。

$ sudo amazon-linux-extras enabled nginx1 このコマンドにより、nginxがavailableだったものをenabledに変更。

$ sudo yum install nginx -y -yコマンドによって、途中の[Yes/No]をスキップ可能。

コマンド実行後 `$ sudo systemctl status nginx これで確認可能。

4.phpphp-fpm、必要パッケージ群をインストールする。

$ sudo amazon-linux-extras install -y php8.0
$ sudo yum install php-mbstring
$ sudo yum install php-dom
phpの後ろはバージョンを指定。今回は8.0とする。 このコマンドで同時にphp-fpmもインストールされる。

5.composer をインストールする。

https://getcomposer.org/download/公式サイト参照 下記手順でやれば可能。 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');"

$ sudo mv composer.phar /usr/local/bin/composer
PATHが通っているところに移動させることで、composerコマンドをどこからでも使用可能にしている。

6.php-fpmの設定

$ sudo vim /etc/php-fpm.d/www.conf 設定ファイルを開く。

userとgroupが初期設定ではapacheになっているのをnginxに変更。またlisten.関係も変更。

user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx


また左端の";"がコメントアウトなので、消して変更した値を反映する。

7.nginxを設定する

laravelの公式サイト参照 https://readouble.com/laravel/8.x/ja/deployment.html 上記の設定例をコピペして設定ファイルを作成 sudo vim /etc/nginx/conf.d/laravel.conf
設定箇所

server {
    listen 80 default_server;
    listen [::]:80;
    server_name example.com;
    root /var/www/laravelproject/public;
    fastcgi_pass unix:/run/php-fpm/www.sock;



8.設定したフォルダ内にてlaravelprojectをclone

ここで、laravelprojectを配置するフォルダの権限を変更する。
$ sudo chown ec2-user:ec2-user /var/www
ユーザー名とグループ名を指定可能。のちにclone

さらに、laravelの構成ディレクトリのstorageに関して、書き込み許可を与える必要がある。 sudo chmod -R 777 storage/
vendorに必要なライブラリをインストールする composer install

9.システムを起動する。

sudo systemctl start nginx
sudo systemctl start php-fpm

この後はいつも通りlaravelの.env修正