LoginSignup
2
0

More than 1 year has passed since last update.

EC2でLaravel9 × Reactアプリをデプロイする時メモ

Posted at
sudo yum update -y

nginxの導入

sudo amazon-linux-extras enable nginx1
sudo yum install nginx -y

EPELの導入

通常、EC2でパッケージをインストールするときはamazon-linux-extrasを使用するが、php8.1を導入することはできない。
そのため、epelを使用してphp8.1を導入していく。

sudo amazon-linux-extras install epel -y
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y

PHP8.1の導入

sudo yum install php81 php81-php-mbstring php81-php-mysqlnd php81-php-gd php81-php-xml php81-php-fpm -y

現時点ではphp81と打ち込まないと、phpコマンドを使用することはできないが、これだと面倒なので、修正する。

sudo alternatives --install /usr/bin/php php /usr/bin/php81 1

composerの導入

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

php-fpmの設定

sudo vim /etc/opt/remi/php81/php-fpm.d/www.conf

ファイル内の下記の記述を書き換える

- user = apache
+ user = nginx
- group = apache
+ group = nginx  
- listen = 127.0.0.1:9000
+ listen = /var/opt/remi/php81/run/php-fpm/www.sock
- ;listen.owner = nobody
- ;listen.group = nobody
- ;listen.mode = 0660
+ listen.owner = nginx
+ listen.group = nginx
+ listen.mode = 0660
sudo vim /etc/nginx/conf.d/laravel.conf

上記のコマンドで新しく設定ファイルを作成し、ファイルの中に下記の内容を記述する。

upstream php-fpm {
        server unix:/var/opt/remi/php81/run/php-fpm/www.sock;
}

server {
    listen 80 default_server;
    listen [::]:80;
    server_name example.com;
    root /var/www/[アプリ名]/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass php-fpm;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_hide_header X-Powered-By;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

gitのインストール

sudo yum install git -y

Laravelアプリをclone

まずはアプリ用ディレクトリを作成する

sudo mkdir /var/www
cd /var/www

書き込み権限を付与

sudo chown ec2-user /var/www

アプリをcloneしてくる

git clone https://github.com/[アカウント名]/[アプリ名].git

Laravelアプリ初期設定

cd /var/www/[アプリ名]

composer install

cp .env.example .env

php artisan key:generate

storageフォルダへの書き込み権限を付与する

sudo chmod -R 777 storage/

プロジェクトを起動

sudo systemctl start nginx
sudo systemctl start php81-php-fpm

mysqlのインストール

sudo yum install mysql -y

.envの編集

DB_CONNECTION=mysql
DB_HOST=[RDSのエンドポイント]
DB_PORT=3306
DB_DATABASE=[DB名]
DB_USERNAME=[RDSで設定したユーザー名]
DB_PASSWORD=[RDSで設定したパスワード]

nodeの環境構築

curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
sudo yum install -y nodejs

エラーログの見方

sudo tail -f /var/log/nginx/error.log
tail -f storage/logs/laravel.log
2
0
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
2
0