はじめに
前回からの続きです。
前提
- インスタンス作成時にAmazon マシンイメージ (AMI)でAmazon Linux 2023を選択された方向けです
- Amazon Linux2を選択された方も手順は同じですが、Linuxコマンドが異なります
- AMIの調べ方は、EC2サーバーにSSH接続をし、下記のコマンドを入力すると確認できます
cat /etc/os-release
環境
- PHP 8.2
- Laravel 11
- mariaDB 10.5.23
- Nginx 1.24.0
- GitHub
おおまかな流れについて
おおまかな流れは下記のとおりです。
-
AWSでEC2のインスタンスを起動する(①で説明済) -
起動したインスタンスにElastic IP(固定IP)を関連付ける(①で説明済) -
EC2サーバの初期設定を行う(②で説明済) -
PHPと拡張モジュールをインストールする(②で説明済) -
Composerをインストールする(②で説明済) -
mariaDBをインストールする(②で説明済) -
Nginxをインストールする(③で説明済) -
php-fpmとNginxを連携する(③で説明済) - GitHubとSSH接続する
- GitHubからmainブランチのコードをクローンする
- Laravelの初期設定を行う
- RDSと連携する
- 独自ドメインを設定する
- 独自ドメインのSSL認証を行う
- 2回目以降のデプロイについて
GitHubとSSH接続する
まずは、Gitをインストールします。
sudo yum install -y git
インストール完了後、Gitのバージョンを確認します。
git --version
次に、GitHubとSSH接続するためのキーを作成します。
.sshディレクトリに移動します。
cd ~/.ssh
キーを作成します。
ssh-keygen -t rsa
いくつか質問項目があります
Enter file in which to save the key
そのままエンターを押してください。
Enter passphrase (empty for no passphrase):
上記については、適当なパスフレーズを入力してください
Enter same passphrase again:
再度パスフレーズの入力が求められるので、入力すると、.sshディレクトリに、id_rsaとid_rsa.pubというファイルが生成されます。
次に公開鍵の中身をコピーします。
cat id_rsa.pub
上記のコマンドでターミナル画面に公開鍵の内容が表示されるので、コピーします。
次に、ブラウザを開き、GitHubのトップページに移動します。
アイコンをクリックします。
メニューバー表示されるので、Settingsをクリックします。
AcsessカテゴリーのSSH and GPC keysをクリックします。
New SSH keyをクリックします。
Titleに識別しやすい任意の名前を入力し、Keyにさきほどid_rsa.pubファイルからコピーした内容をペーストし、Add SSh Keyをクリックすると、GitHubに接続用のSSH Keyが追加されます。
次に、EC2インスタンスにSSH接続をしたターミナル画面に戻って、接続確認を行います。
まずは、ルートユーザーにスイッチします。
sudo su -
次に、バックグラウンドでSSHエージェントを起動します。
eval "$(ssh-agent -s)"
生成した秘密鍵をSSHエージェントに追加します。
ssh-add ~/.ssh/id_rsa
接続確認をします。
ssh -T git@github.com
下記のように表示されれば、接続設定は完了です。
Hi GitHubアカウント名! You've successfully authenticated, but GitHub does not provide shell access.
GitHubからmainブランチのコードをクローンする
まずはルートディレクトリに移動します。
cd /var/www/
SSH経由でクローンします。GitHubからSSH経由でのクローン用のアドレスをコピペしてください。
git clone プロジェクトのアドレス
これで、メインブランチにあるコードがクローンされます。
Laravelの初期設定を行う
まずは、Laravelプロジェクトのルートディレクトリに移動します。私の環境では下記のとおりです。
cd /var/www/drinko-app/laravel
次に、プロジェクトの依存関係をComposer経由でインストールします。
composer install
クローンしたファイルの中に.envファイルが存在しないので、.env.exampleを複製し、.envファイルを作成します。
sudo cp .env.example .env
.envファイルをご自身の環境に合わせて設定してください。
vim .env
.envファイル設定時の注意事項
- vimに慣れておらず、行頭に#がついていてコメントアウトされている部分が有効だと思っていて、時間を無駄にしてしまったので、みなさんはお気をつけください、、、
- APP_DEBUGは必ずfalseに設定してください。trueのままだと、漏れてはいけない情報がユーザーに漏れてしまう場合があります
- LaravelSanctumを使用している場合は、SANCTUM_STATEFUL_DOMAINSに、通常のドメインと、API用のドメイン(サブドメインを切っている場合)を追加する必要があります
- DBの設定については、RDSの設定が終わった後でなければ入力できない部分があるので、以降の作業で追加します。
次に、アプリケーションキー(APP_KEY)を生成します。以下のコマンドを実行することで、アプリケーションキー生成後、.envファイルのAPP_KEYに自動で値が入ります。
php artisan key:generate
ストレージに書き込み権限を加えます。
sudo chmod -R 777 storage
シンボリックリンクを作成します。
php artisan storage:link
最後にキャッシュをクリアします。
php artisan config:cache
これで、DB接続以外のLaravel上での設定が完了しました。