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