LoginSignup
5
6

More than 1 year has passed since last update.

EC2 でLaravel 9 (PHP8 + Nginx1.2 + RDS MySQL) の環境構築

Last updated at Posted at 2022-08-23

はじめに

EC2でLaravel9を構築する機会があったため、まとめておきます

事前構築

  • vpc subnetなどのネットワーク
  • RDS
  • EC2 (Amazon linux 2)

EC2 初期設定

EC2起動後、初期設定を行います。
不要であれば、飛ばして構いません。

タイムゾーンを日本に変更

$ date
2022年  8月 23日 火曜日 09:56:37 UTC

$ sudo vim /etc/sysconfig/clock
/etc/sysconfig/clock
- ZONE="UTC"
- UTC=true
+ ZONE="Asia/Tokyo"
+ UTC=False
$ sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime

$ date
2022年  8月 23日 火曜日 18:56:32 JST

SSHのポート変更

SSHのデフォルトポートである22から49120に変更します。

$ sudo vim /etc/ssh/sshd_config
/etc/ssh/sshd_config
+ Port 49120

sshdを再読み込みすると、次回からsshポートは49120になります。

$ sudo service sshd reload

セキュリティーグループのsshのインバウンドルールの変更を忘れずにしましょう。

変更前スクリーンショット 2022-08-23 18.48.20.png

変更後
スクリーンショット 2022-08-23 18.47.57.png

phpインストール

phpをインストールします。

$ cd 

$ sudo yum update -y


// amazon-linux-extras パッケージがあるか確認
$ amazon-linux-extras

// php8.0を有効化
$ sudo amazon-linux-extras enable php8.0

// php8.0をインストール
$ sudo amazon-linux-extras install -y php8.0

// laravelで必要なモジュールをインストール
$ sudo yum install -y php-mbstring php-xml php-bcmath

// metadataを削除
$ yum clean metadata

nginxインストール

$ cd 

// nginx1.2を有効化
$ sudo amazon-linux-extras enable nginx1

// nginx1.2をインストール
$ sudo amazon-linux-extras install nginx1

// metadataを削除
$ yum clean metadata

// nginxのmod類をインストール
$ sudo yum -y install nginx-mod*

// インストールされたか確認
$ rpm -qa|grep nginx

php-fpmの設定ファイル修正

$ sudo vim /etc/php-fpm.d/www.conf
/etc/php-fpm.d/www.conf
- user = apache
- group = apache
- ;listen.owner = nobody
- ;listen.group = nobody
- ;listen.mode = 0660

+ user = nginx
+ group = nginx
+ listen.owner = nginx
+ listen.group = nginx
+ listen.mode = 0660

再起動

$ sudo systemctl restart nginx
$ sudo systemctl restart php-fpm

nginxとphp-fpmの自動起動設定

sudo systemctl enable nginx
sudo systemctl enable php-fpm

再起動して、EC2のpublic IPでブラウザを開くと、nginxのデフォルト画面が確認できます。
セキュリティーグループは、httpの80番のportを開けましょう。

$ sudo systemctl restart nginx
$ sudo systemctl restart php-fpm

スクリーンショット 2022-08-22 18.54.34.png

composerをインストール

下記のウェブサイトが最新なので、そちらを参考にしましょう。

$ cd 

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

$ php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { 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

// composerのバージョンを確認しましょう。
$ composer -V

laravelをインストール

laravelは、/var/www/htmlのパスになるようプロジェクトを作成します。

$ cd /var
$ sudo mkdir /var/www
$ sudo chown ec2-user:nginx /var/www
$ composer create-project --prefer-dist laravel/laravel html

$ cd html

// ディレクトリは、所有権限775にします
$ sudo find ./ -type d -exec chmod 775 {} +
// ファイルは、所有権限664にします
$ sudo find ./ -type f -exec chmod 664 {} +

$ sudo chown -R nginx:ec2-user ./

// storage bootstrap/cacheは、所有権限777にします
$ sudo chmod -R 777 storage bootstrap/cache

envファイルは、作成したRDSをもとに修正します。

$ sudo vim .env
/var/www/html/.env
DB_CONNECTION=mysql
DB_HOST=RDSのライターエンドポイント
DB_PORT=3306
DB_DATABASE=データベース名
DB_USERNAME=ユーザー名
DB_PASSWORD=パスワード

APP_KEY= が空の場合、php artisan key:generateでkeyが作成され、.envに鍵情報が入ります。

nginx.confを修正

/etc/nginx/nginx.confを一部修正します。

$ sudo vim /etc/nginx/nginx.conf
/etc/nginx/nginx.conf
# 〜〜省略
    server {
        listen       80;
        listen       [::]:80;
-       server_name  _;
+       server_name  test.com;
-       root         /usr/share/nginx/html;
+       root         /var/www/html/public;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
+       location / {
+           try_files $uri $uri/ /index.php?$query_string;
+       }
-       error_page 404 /404.html;
-       location = /404.html {
-       }

-       error_page 500 502 503 504 /50x.html;
-       location = /50x.html {
-       }
    }
# 〜〜省略

server_nameはドメインが決まっている場合、変更しましょう。
EC2のpublic IPでアクセスする場合、変更する必要はありません。

修正後、nginxを再起動(読み込み)すると、laravelのトップ画面が表示されます。

$ sudo nginx -s reload

スクリーンショット 2022-08-22 19.10.47.png

参考記事

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6