書籍「Laravelの教科書」Laravel13対応サポートガイド公開中 → ダウンロードはこちら

GitHubからAWS LightsailへLaravel 11プロジェクトをデプロイする方法

aws

Amazon Lightsailは、固定価格(月5ドル・最初の90日は無料)で使えるAWS環境です。

従量課金が基本のAWSさんにしては、めずらしい課金方式です。

「まずは簡単に構築したい」「固定費にしたい」という時に、Lightsailはおすすめ。

今回は、「Laravelを手軽にAWSにデプロイしたい」方向けに、GitHubに設置したLaravelプロジェクトをLightsailにデプロイする方法をざっくり解説しました。

前提条件

こちら、今回の記事の前提条件です。

  • Laravelのバージョンは、現時点で最新のLaravel11を使用
  • GitHubにはあらかじめプロジェクトをプッシュ済み
  • AWSアカウントが既にある方向け
  • コマンドを使った操作が多いので、ファイル編集等のコマンド操作に慣れた方向け
  • 本記事では、GitHubプロジェクトのデプロイ・データベース連携まで解説します。HTTPS化やストレージの設定はカバーしていません。

AWS LightsailにLaravel環境構築

それでは手順を説明していきます。

Lightsailインスタンス作成~デフォルト画面表示

まずはAWS Consoleにログインして、「lightsail」を検索。新しくlightsailインスタンスを作成します。

リージョンは、デフォルトで選択されていたTokyo, ZoneAを選択。

【Select a platform】ではLinux/Unixを選択。【Select a blueprint】は、LAMP(PHP 8)を選びます。

【Choose your instance plan】は、5ドルのプランを選択。【Identify your instance】では、インスタンス名をつけます。

最後に【Create instance】ボタンをクリック。インスタンスが作成されます。作成後、次のような画面が表示されます。

インスタンス名(青字)をクリックすると、IPv4アドレスが表示されます。アドレスをクリックすると、ブラウザにデフォルト画面が表示されます。

プロジェクトをGit Cloneでコピー

次に、GitHubにあるプロジェクトをLightsailにクローンします。まずは赤枠で囲った部分をクリックします。コマンド入力画面が立ち上がります。

ブラウザ上でコマンドを入力できるようになります。

最初にcd htdocsに移動。

cd htdocs

ここで、git cloneコマンドを実行します。

git clone プロジェクトのHTTPS

GitHubのユーザー名と、パーソナルアクセストークンを聞かれます。それぞれ入力します。パーソナルアクセストークンは、github上のsettings/developer settingsから確認できます。

※パーソナルアクセストークンの発行方法・確認方法は、下記記事などが参考になります。

git cloneが無事終わったら、lsコマンドで、プロジェクトができているのを確認します。わたしのほうではmembers11というプロジェクトをクローンしましたが、下記のように表示されます。

次のステップに進みます。

Apacheの設定

デフォルトのApacheを変更します。bitnami.confファイルを開きます。

vim /opt/bitnami/apache2/conf/bitnami/bitnami.conf

こちら、プロジェクトに合うように、下記の2か所をプロジェクト名に変更します。

DocumentRoot "/opt/bitnami/apache/htdocs/プロジェクト名/public"
<Directory "/opt/bitnami/apache/htdocs/プロジェクト名/public">

わたしの場合は、「members11」というプロジェクト名にしているので、下記のようにしました。

変更保存後、システムを再起動します。

sudo /opt/bitnami/ctlscript.sh restart

データベースのパスワードチェック

下記コマンドでデータベースのパスワードを確認しておきます。

cat bitnami_application_password

表示されるパスワードを控えておきます。次にmysqlコマンドを実行します。

 /opt/bitnami/mariadb/bin/mariadb -u root -p

パスワードを求められるので、さきほど控えたパスワードを入力します。

データベースを作成します。ここでは、laravelとしておきます。

create database laravel;

作成したデータベースを確認します。

show databases;

Ctrl+Dでexitします。

phpMyAdminを使えるようにする

せっかくなので、phpMyAdminも使えるようにします。下記コマンドを実行します。

vim /opt/bitnami/apache/conf/bitnami/phpmyadmin.conf

Require localに#をつけて無効にします。さらに、ErrorDocument 403 の前に、下記のようにコードを加えます。下記ではすべてのIPアドレスを許可する設定していますが、適宜変更してください。

Alias /phpmyadmin "/opt/bitnami/phpmyadmin"<Directory "/opt/bitnami/phpmyadmin">
Options -Indexes +FollowSymLinks -MultiViews
AllowOverride All
  #Require local
<IfVersion < 2.3>
Order allow,deny
Allow from all
Satisfy all
</IfVersion>
<IfVersion >= 2.3>
Require all granted
</IfVersion>
ErrorDocument 403 "For security reasons, this URL is only accessible using localhost (1>
  # AuthType Basic
  # AuthName phpmyadmin
  # AuthUserFile "/opt/bitnami/apache/users"
  # Require valid-user
</Directory>

変更保存後、システムを再起動します。

sudo /opt/bitnami/ctlscript.sh restart

.envファイルの作成とデータベース設定

次に、プロジェクトの中に戻ります。

cd /opt/bitnami/apache2/htdocs/プロジェクト名

ホームディレクトリにhtdocsへのシンボリックリンクが存在します。そのため、次のようにしてもプロジェクトディレクトリに移動できます。

① ホームディレクトリに移動

cd

② プロジェクトディレクトリに移動

cd htdocs/プロジェクト名

プロジェクト内で.env.exampleをもとに、.envファイルを作ります。下記コマンドを実行します。

cp .env.example .env

さらに、アプリケーションキーを作成します。

php artisan key:generate

作成した.envファイルを編集します。

vim .env

データベースに関する設定を修正します。パスワードは、前の項目で確認したものを入力してください。

DB_CONNECTION=mariadb
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=パスワード

.envファイルを保存して閉じます。

ライブラリのインストールとデータベースへのマイグレート

プロジェクト内でライブラリをインストールします。

composer install

データベースをマイグレートします。

php artisan migrate

マイグレート実行後は、phpMyAdminの中を確認してみましょう。プロジェクトURL/phpmyadminとすると、phpmyadmin画面を確認できます。

.envファイルに入力したDB_USERNAMEと DB_PASSWORDをいれると、ログインできます。

ブラウザ表示

ブラウザにプロジェクトを表示します。先ほど確認したインスタンスのPublic IPv4 addressをクリックします。

Permission deniedエラーが表示されたら、次のように権限を変更します。

sudo chmod -R 777 storage/

コマンド実行後、無事プロジェクトが表示されれば成功です。

Amazon Lightsailのメリット・デメリット(予算面も)

以上Lightsailを使ったLaravelプロジェクトのデプロイとデータベース連携となります。

このあと本番環境用とするならHTTPS化したり、ストレージを設定したりといった操作も必要になってきますが、今回は割愛します。

さいごに、Amazon Lightsailのメリット・デメリットをざっくりお伝えしますね。次のとおりです。

【Amazon Lightsailメリット・デメリット】

  • メリット
    • 低コスト
    • セットアップしやすい
  • デメリット
    • カスタマイズが限定されている
    • データベースやストレージ等、別途お金がかかる

Lightsailは、レンタルサーバーを使うような感覚で、小規模なプロジェクトをアップするなら良いです。色々そろっているので、EC2を使ったりするより、大分ラクです!

ただ大規模なものには向きません。また色々とカスタマイズしたりできないので、カスタマイズが必要なプロジェクトにも不向きです。

AWSのLightsail紹介でも、「スモールビジネスアプリケーションの構築」用にLightsailがすすめられています。

なお料金面では少し注意が必要です。実は固定費で賄えるのは、サーバー部分だけ。データベースやストレージ等の費用は別料金です。

たとえば、データベースは月15ドル~となります。ただインスタンスと同様、90日間は無料です。今回はデータベースをひとつ作成しました。

ちなみに今回はストレージを使用していませんが、もし使用した場合は別途設定が必要です。ストレージも別料金です。ストレージは月1ドル~で、最初の1年は無料となります。

最初は無料でお試しできるのが嬉しいですね。

価格と条件はまた変わるかもしれないので、詳細は公式サイトご覧ください。

さいごに

AWS上にLaravel環境を構築するには色々な方法があります。EC2を使ってWebサーバーなどをひとつずつ構築する方法が基本ですが、手間がかかります。また、「従量課金制」なので、結局いくらかかるか分かりにくいですよね。

試した中ではLightsailが一番ラクだと感じました。

とはいえラクなのと、自由度が高いのは、真逆の関係です。カスタマイズしたい場合はLightsail環境はおすすめできませんが、小規模プロジェクトでは便利なサービスだと感じます。

aws

生成AIを「安全に」使うための研修・セミナー

お問い合わせ

生成AIの業務活用で気になるのは、効率だけでなくセキュリティです。 実践的な活用に加え、セキュリティ対策もお伝えします。

詳細を見てみる
 

生成AIを「安全に」使うための研修・セミナー

お問い合わせ

生成AIの業務活用で気になるのは、効率だけでなくセキュリティです。 実践的な活用に加え、セキュリティ対策もお伝えします。

詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪

Laravelの使い方を分かりやすく解説した本を書きました。 書店やAmazon等のオンラインショップにて販売中
最新版Laravel13対応用サポートガイド(PDF)あり

書籍の詳細を見てみる

Laravelの本書きました。


ひつじが目印♪
クリックするとamazonページへ。
最新版Laravel13対応用
サポートガイド(PDF)あり

書籍の詳細を見てみる
シェアする
Twitter始めました。

コメント

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