AWSのLightsailにLaravelをデプロイする

AWSのLightsailにLaravelをデプロイする AWS

AWSのLightsailに、Laravelをデプロイする手順をまとめました。
Lightsailには以下の手順でLaravel環境を作成しました。

Lightsailへのデプロイは、Gitのクローンをすることで実現します。
本記事ではGitHubを使用する例で記載します。

Gitを使用する準備

Gitはインストール済みなので、バージョンを確認します。

$ git --version
git version 2.39.5

GitHubにアクセスするために、SSHキーを作成します。
作成したキーをGitHubに登録します。

$ cd ~/.ssh

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/bitnami/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/bitnami/.ssh/id_rsa
Your public key has been saved in /home/bitnami/.ssh/id_rsa.pub
The key fingerprint is:

$ cat id_rsa.pub

GitHubへの接続確認をします。

ssh -T git@github.com

リポジトリのクローン

GitHubに接続できたら、該当リポジトリをクローンします。

$ cd /home/bitnami/htdocs

$ ls -al
total 20
drwxrwxr-x  3 bitnami root    4096 Oct  6 02:49 .
drwxr-xr-x 17 root    root    4096 Aug 27 21:14 ..
-rw-rw-r--  1 bitnami root    4867 Aug 27 21:03 index.html
drwxr-xr-x 12 bitnami bitnami 4096 Oct  6 03:28 laravel

Gitリポジトリには、該当ソース以外にもファイルが上げてあったりするので、リポジトリの一部のディレクトリのみクローンするようにしています。

$ git clone --filter=blob:none --sparse git@github.com:hoge/hogehoge.git
Cloning into 'hogehoge'...
remote: Enumerating objects: 411, done.
remote: Counting objects: 100% (411/411), done.
remote: Compressing objects: 100% (186/186), done.
remote: Total 411 (delta 192), reused 379 (delta 160), pack-reused 0 (from 0)
Receiving objects: 100% (411/411), 36.24 KiB | 218.00 KiB/s, done.
Resolving deltas: 100% (192/192), done.
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (1/1), 182 bytes | 182.00 KiB/s, done.

この時点ではまだクローンされておらず、「.git」ディレクトリが存在するだけです。

$ cd hogehoge

$ ls -al
total 16
drwxr-xr-x 3 bitnami bitnami 4096 Nov  7 14:15 .
drwxrwxr-x 4 bitnami root    4096 Nov  7 14:15 ..
drwxr-xr-x 8 bitnami bitnami 4096 Nov  7 14:15 .git

sparse-checkout で対象ディレクトリを指定して、一部ディレクトリだけクローンします。

$ git sparse-checkout set [対象ディレクトリ名]
remote: Enumerating objects: 182, done.
remote: Counting objects: 100% (182/182), done.
remote: Compressing objects: 100% (139/139), done.
remote: Total 182 (delta 39), reused 162 (delta 36), pack-reused 0 (from 0)
Receiving objects: 100% (182/182), 3.30 MiB | 3.85 MiB/s, done.
Resolving deltas: 100% (39/39), done.
Updating files: 100% (188/188), done.

$ ls -al
total 20
drwxr-xr-x  4 bitnami bitnami 4096 Nov  7 14:17 .
drwxrwxr-x  4 bitnami root    4096 Nov  7 14:15 ..
drwxr-xr-x  8 bitnami bitnami 4096 Nov  7 14:17 .git
drwxr-xr-x 12 bitnami bitnami 4096 Nov  7 14:17 [対象ディレクトリ名]

このような感じで、Laravelのディレクトリを指定すれば、以下のようにLaravel一式のディレクトリがクローンできます。

$ cd [対象ディレクトリ名]

$ ls -al
total 448
drwxr-xr-x 12 bitnami bitnami   4096 Nov  7 14:17 .
drwxr-xr-x  4 bitnami bitnami   4096 Nov  7 14:17 ..
drwxr-xr-x  8 bitnami bitnami   4096 Nov  7 14:17 app
-rwxr-xr-x  1 bitnami bitnami    350 Nov  7 14:17 artisan
drwxr-xr-x  3 bitnami bitnami   4096 Nov  7 14:17 bootstrap
-rw-r--r--  1 bitnami bitnami   2086 Nov  7 14:17 composer.json
-rw-r--r--  1 bitnami bitnami 301210 Nov  7 14:17 composer.lock
drwxr-xr-x  2 bitnami bitnami   4096 Nov  7 14:17 config
drwxr-xr-x  5 bitnami bitnami   4096 Nov  7 14:17 database
-rw-r--r--  1 bitnami bitnami    258 Nov  7 14:17 .editorconfig
-rw-r--r--  1 bitnami bitnami   1190 Nov  7 14:17 .env.example
-rw-r--r--  1 bitnami bitnami    186 Nov  7 14:17 .gitattributes
-rw-r--r--  1 bitnami bitnami    258 Nov  7 14:17 .gitignore
drwxr-xr-x  4 bitnami bitnami   4096 Nov  7 14:17 lang
-rw-r--r--  1 bitnami bitnami    244 Nov  7 14:17 package.json
-rw-r--r--  1 bitnami bitnami  60018 Nov  7 14:17 package-lock.json
-rw-r--r--  1 bitnami bitnami   1191 Nov  7 14:17 phpunit.xml
drwxr-xr-x  5 bitnami bitnami   4096 Nov  7 14:17 public
-rw-r--r--  1 bitnami bitnami   4109 Nov  7 14:17 README.md
drwxr-xr-x  5 bitnami bitnami   4096 Nov  7 14:17 resources
drwxr-xr-x  2 bitnami bitnami   4096 Nov  7 14:17 routes
drwxr-xr-x  5 bitnami bitnami   4096 Nov  7 14:17 storage
drwxr-xr-x  4 bitnami bitnami   4096 Nov  7 14:17 tests
-rw-r--r--  1 bitnami bitnami    360 Nov  7 14:17 vite.config.js

Laravelの環境設定

まず、envファイルを作成します。
DBの接続情報や、必要な各種情報を設定します。

$ cp .env.example .env
$ vi .env

必要なパッケージをインストールします。

composer install --optimize-autoloader --no-dev

アプリの初期設定をします。

$ php artisan key:generate
$ chmod -R 777 storage bootstrap/cache

DBをマイグレーションします。

php artisan migrate

キャッシュの設定をします。

$ php artisan config:cache
$ php artisan view:cache

キャッシュをクリアする場合は以下コマンドを実行します。

$ php artisan config:clear
$ php artisan view:clear

本記事では、イベントとルートのキャッシュは使用していません。
キャッシュについて詳しくは以下をご覧ください。
https://laravel.com/docs/11.x/deployment#optimizing-configuration-loading

キャッシュが生成できたかどうかは、以下コマンドで確認できます。

php artisan about

フロントをビルドする

フロントのソースをビルドします。
npm がインストールされていないので、まずインストールして最新版に更新します。

$ apt-get install -y nodejs npm

$ node -v
v18.19.0
$ npm -v
9.2.0

$ sudo npm install -g n

$ sudo n latest
  installing : node-v23.3.0
       mkdir : /usr/local/n/versions/node/23.3.0
       fetch : https://nodejs.org/dist/v23.3.0/node-v23.3.0-linux-x64.tar.xz
     copying : node/23.3.0
   installed : v23.3.0 (with npm 10.9.0)

Note: the node command changed location and the old location may be remembered in your current shell.
         old : /usr/bin/node
         new : /usr/local/bin/node

node のディレクトリが変わったので、ログインし直します。

$ node -v
v23.3.0
$ npm -v
10.9.0

$ sudo npm update -g npm

$ npm -v
10.9.2

パッケージをインストールして、ビルドします。

$ npm install
$ npm run build

Apacheのドキュメントルートを変更

Apacheのドキュメントルートを変更します。

vi /opt/bitnami/apache2/conf/bitnami/bitnami.conf

変更が完了したら、再起動します。

sudo /opt/bitnami/ctlscript.sh restart

独自ドメインの紐付け

以下の記事でまとめていますので、ご覧ください。

SSLの設定

Apacheのドキュメントルートを変更します。

vi /opt/bitnami/apache2/conf/bitnami/bitnami-ssl.conf

変更が完了したら、再起動します。

sudo /opt/bitnami/ctlscript.sh restart

SSLの設定については、以下の記事でまとめていますので、ご覧ください。

最新をデプロイ

リポジトリを更新して最新をデプロイしたい場合は、リポジトリをクローン済みなので、プルをするだけです。

$ git pull origin main

タイトルとURLをコピーしました