はじめに
EC2でLaravel9を構築する機会があったため、まとめておきます
事前構築
- vpc subnetなどのネットワーク
- RDS
- EC2 (Amazon linux 2)
EC2 初期設定
EC2起動後、初期設定を行います。
不要であれば、飛ばして構いません。
タイムゾーンを日本に変更
$ date
2022年 8月 23日 火曜日 09:56:37 UTC
$ sudo vim /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
+ Port 49120
sshdを再読み込みすると、次回からsshポートは49120になります。
$ sudo service sshd reload
セキュリティーグループのsshのインバウンドルールの変更を忘れずにしましょう。
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
- 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
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
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
# 〜〜省略
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
参考記事