ホーム
Sponserd by↑転職したい人向け、ベンチャー企業の採用動画があります

PHP7.4+Laravel6のプロジェクトをAWS EC2にデプロイする

目次

  1. EC2 を作成し、接続する
  2. PHP7.4 をインストールしていく
  3. composer をインストールする
  4. Github と SSH 接続をする
  5. Laravel の環境を整える
  6. Apache の conf ファイルを編集

EC2 を作成し、接続する a

まず、AWS のコンソールに入ってください。

EC2⇨ インスタンスの画面にいってください。

右上にインスタンスを起動というのがあるので、そこをクリックします。

AmazonLinux を選択します。 posts/EC2

この AmazonLinux を選択します。

インスタンスはなんでも良いのですが、無料枠で使える

「t2.micro」を選択します。

ステップ5まではデフォルトの設定のまま進めます。

ステップ6でセキュリティグループの作成をします。

セキュリティグループの名前はなんでも良いです

インバウンドの「HTTP」を追加します。

security-group

これで EC2 は OK です。

起動します。

起動する時、「キーペアの作成」を求められますので、自由に key の名前を指定して作成してください。 key は、EC2 に接続するために必要です。 自分で管理しやすいところにフォルダを用意して、その中に保存してください。

起動し終わると、インスタンスの詳細画面に「接続」というボタンがアクティブになるので、それを押します。

すると、3つコマンドが表示されています。

ターミナルを開きます。

ターミナルで、先ほど保存した鍵のフォルダへ移動します。

MAC だと、Finder でフォルダを開いたら、ターミナルにドラッグアンドドロップすると階層が分かるのでオススメです。

cd /移動したいフォルダの階層

そしたら、3つのコマンドのうち、一番上にある

chmod 400 ????.pem

のコマンドを打ちます。

このコマンドは、権限変更で EC2 に入るために必要になります。

次に3つ目のコマンドを打ちます。

ssh -i "????.pem" ec2-user@?????.ap-northeast-1.compute.amazonaws.com

このコマンドを打てば、EC2 の中に入れるはずです。

ここで入れない原因として一番多いのは、ターミナルコマンドを打つ時のフォルダ階層が間違っている可能性が高いです。

必ず、鍵ファイルを保存したフォルダの階層でコマンドを打つようにしてください。

PHP7.4 をインストールしていく

ひたすらコマンドを打っていきます。

PHP7.4 のインストール、apache のインストール、mysql のインストールまでやります。

sudo amazon-linux-extras install epel
sudo yum clean metadata
sudo yum install -y epel-release
sudo rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum install --enablerepo remi -y php74-php
sudo ln -sf /usr/bin/php74 /usr/bin/php
sudo yum install --enablerepo remi -y php74-php-mbstring
sudo yum install --enablerepo remi -y php74-php-dom
sudo yum install --enablerepo remi -y php74-php-gd
sudo yum install --enablerepo remi -y php74-php-intl
sudo yum install --enablerepo remi -y php74-php-pdo
sudo yum install --enablerepo remi -y php74-php-mysql
sudo yum install -y mod_ssl
sudo yum install -y httpd
httpd -v
sudo systemctl start httpd
sudo systemctl enable httpd
sudo yum install mysql

composer をインストールする

まず、このコマンドを打ちます。権限系のコマンドになります。

sudo chown ec2-user:ec2-user /var/www/html

そしたら、https://getcomposer.org/download/

Composer の公式サイトのコマンドを丸っとコピーしてください。

コマンドもアップデートされていくので、公式からコピーすることをオススメします。

composer

画像の四角枠の中の 4 行を丸っとコピーして貼り付けて実行すると composer がインストールされます。

インストールした composer を次のコマンドで移動させたら準備万端です。

sudo mv composer.phar /usr/local/bin/composer
composer -v

composer のバージョンが表示されたら OK です。

Github と SSH 接続をする

コマンドを打って、git をインストールします。

sudo yum install git

Github と SSH 接続をするための鍵を EC2 の~/.ssh フォルダに作成し、保存します。

cd ~/.ssh
ls
ssh-keygen -t rsa

3つ目のコマンドを打つと、入力が求められるので、

github(自由です。鍵の名前なので、今回は github と名前をつけました)

*パスワード

と入力してください。github という名前の鍵が生成されます。

そしたらパブリックキーの中身をコピーします。

cat github.pub

このコマンドを打つとファイルの中身が表示されるのでそれをコピーしてください。

GitHub のリポジトリの管理ページへ移動します。

Settings⇨DeployDeploy Keys

github

スクリーンショットの右側にある、add Deploy key を押します。

Title⇨ 自由です(今回は、「EC2」とします)

Key⇨ 先ほどコピーした鍵の中身を貼り付けます。

AddKey を押せば OK です。

GitHub 上での作業は以上となります。

EC2 に戻って、

eval `ssh-agent`
ssh-add ~/.ssh/github
cd /var/www/html

3つのコマンドを打ちます。

2つ目の~/.ssh/github は、鍵の名前を指定しています。今回、github という鍵を作成しているのでこのコマンドになります。

GitHub のリポジトリの管理画面の「Code」から SSH をコピーします。

githubssh

EC2 で

git clone コピーしたやつ

のコマンドを打てば、GitHub からクローンできます。

Laravel の環境を整える

GitHub から無事クローンできたら、Laravel プロジェクトを設定していきます。

まず、クローンした Laravel プロジェクトに移動します。

cd Laravelのプロジェクト

移動できたら、コマンドを打っていきます。

composer install
sudo cp .env.example .env
sudo chmod -R 777 .env
php artisan key:generate
sudo chmod -R 777 storage

このコマンドを打てばとりあえず動くと思います。

.env ファイルは Clone されないので、雛形をコピーして権限を付与します。

key:generate で env ファイルの APP_KEY を作成して、storage に書き込み権限を与えて完成です。

Apache の conf ファイルを編集

最後の項目になります。

ここは、間違えると復元させるのが大変なので、慎重にやりましょう。

アパッチファイルのある場所へ移動します。

cd /etc/httpd/conf/

ファイルを変更するのですが、最初は間違える可能性が高いので(最初じゃなくてもやる方が良いですが)、バックアップファイルを作成します。

sudo cp httpd.conf httpd.conf_bk_20210220
ls

現在の Apatch ファイルのコピーを作成しました。 それでは、ファイルを編集していきます。

Vim の操作方法については、こちらの記事にまとめました。

sudo vim httpd.conf

編集する箇所は3箇所です。

119 行目くらいを

DocumentRoot "/var/www/html"
↓
DocumentRoot "/var/www/html/ララベルのプロジェクト名/public"

131 行目くらいを

<Directory "/var/www/html">
↓
<Directory "/var/www/html/ララベルのプロジェクト名/public">

151 行目くらいを

AllowOverride None
↓
AllowOverride All

に変更します。

変更が終わったら、

アパッチを再起動して、反映させます。

sudo systemctl restart httpd

うまくいっていれば、Laravel の Home が表示されます。

確認してみましょう。

EC2 のインスタンス詳細ページに戻ります。

そこに「オープンアドレス」という表示があって、それをクリックしたらそのインスタンスのアドレスに接続できます。

EC2オープンアドレス

一応、画像を貼っておきます。

これを開くと、https アドレスなので、まだその設定をしていないので、http にアドレスを変更してください。

laravelHome

Laravel の Home が表示されました!!!

皆さんもうまくいきましたか?

まとめ

今回は、Laravel プロジェクトを EC2 にデプロイしました。

Vue などで Laravel-mix を使っているを使っている場合は、別途 npm インストールできるように、node のインストールをこの後する必要があるので注意してください。

それでは以上です。