AWSのLightsailでLaravel環境を作成する

AWSのLightsailでLaravel環境を作成する AWS

AWSのLightsailで、Laravel環境を作成する手順をまとめました。

作成する環境

以下の環境を作成します。
2024年10月に作成した時点の情報になります。

  • PHP:8.3.11
  • Laravel:11.2.0

Lightsailのインスタンスを作成

AWSのLightsailのページを開き、「インスタンスの作成」ボタンをクリックします。

Lightsail

インスタンスロケーションで、リージョンとアベイラビリティーゾーンを選択します。

インスタンスロケーション
リージョンの選択

LAMP(PHP 8)を選択します。

インスタンスイメージを選択

サイズを選択します。
月額$5のプランだとメモリが512MBになり、さすがにちょっと少ないので、月額$7(メモリ1GB)くらいが良いのかもしれません。

インスタンスの作成が完了すると、保留中の状態で表示されます。
じばらく待つと実行中になります。

固定IPアドレスの設定

パブリックIPはインスタンスの再起動をすると変わってしまうので、静的IPを作成して、IPアドレスを固定にします。
以下の記事で、設定方法を書いているので、ご覧ください。

ブラウザから、静的IPアドレスにアクセスすると、以下の画面が表示されます。

LAMPが起動中

Laravelのインストール

インスタンスのSSHアイコンをクリックします。

以下のコマンドで、MySQLのパスワードを確認しておきます。

cat bitnami_application_password

各種バージョンを確認します。

$ php -v
PHP 8.3.11 (cli) (built: Aug 27 2024 20:31:40) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.11, Copyright (c) Zend Technologies
with Zend OPcache v8.3.11, Copyright (c), by Zend Technologies

$ composer -V
Composer version 2.7.8 2024-08-22 15:28:36
PHP version 8.3.11 (/opt/bitnami/php/bin/php)
Run the "diagnose" command to get more detailed diagnostics output.

ディレクトリを確認します。

$ pwd
/home/bitnami
$ ls -l
total 8
-rw------- 1 bitnami bitnami  13 Oct  6 02:35 bitnami_application_password
-r-------- 1 bitnami bitnami 401 Oct  6 02:35 bitnami_credentials
lrwxrwxrwx 1 bitnami bitnami  27 Aug 27 21:14 htdocs -> /opt/bitnami/apache2/htdocs
lrwxrwxrwx 1 bitnami bitnami  12 Aug 27 21:14 stack -> /opt/bitnami
$ cd htdocs
$ pwd
/home/bitnami/htdocs
$ ls -l
total 8
-rw-rw-r-- 1 bitnami root 4867 Aug 27 21:03 index.html

新規のLaravelプロジェクトを作成します。

$ composer create-project laravel/laravel laravel --prefer-dist
Creating a "laravel/laravel" project at "./laravel"
Installing laravel/laravel (v11.2.0)
  - Downloading laravel/laravel (v11.2.0)
$ ls -l
total 12
-rw-rw-r--  1 bitnami root    4867 Aug 27 21:03 index.html
drwxr-xr-x 12 bitnami bitnami 4096 Oct  6 02:49 laravel

Apacheの公開ディレクトリを変更して、インストールしたLaravelを公開します。

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

bitnami.conf を以下の内容に変更します。

DocumentRoot "/opt/bitnami/apache/htdocs"
<Directory "/opt/bitnami/apache/htdocs">

↓↓↓

DocumentRoot "/opt/bitnami/apache/htdocs/laravel/public"
<Directory "/opt/bitnami/apache/htdocs/laravel/public">

Apacheを再起動します。

sudo /opt/bitnami/ctlscript.sh restart

これで再度静的IPアドレスを開いてみると、以下のエラーが発生しました。

file_put_contents(/opt/bitnami/apache/htdocs/laravel/storage/framework/views/1a956f0a1193a11383d5e4a078f1c8fd.php): Failed to open stream: Permission denied

Laravelをインストールしたディレクトリの権限設定が必要なので、変更します。
(再起動したので、SSHを接続し直します)

$ cd htdocs/laravel
$ ls -l
total 348
drwxr-xr-x  5 bitnami bitnami   4096 Sep 11 20:12 app
-rwxr-xr-x  1 bitnami bitnami    350 Sep 11 20:12 artisan
drwxr-xr-x  3 bitnami bitnami   4096 Sep 11 20:12 bootstrap
-rw-r--r--  1 bitnami bitnami   1925 Sep 11 20:12 composer.json
-rw-r--r--  1 bitnami bitnami 285121 Oct  6 02:49 composer.lock
drwxr-xr-x  2 bitnami bitnami   4096 Sep 11 20:12 config
drwxr-xr-x  5 bitnami bitnami   4096 Oct  6 02:50 database
-rw-r--r--  1 bitnami bitnami    244 Sep 11 20:12 package.json
-rw-r--r--  1 bitnami bitnami   1191 Sep 11 20:12 phpunit.xml
drwxr-xr-x  2 bitnami bitnami   4096 Sep 11 20:12 public
-rw-r--r--  1 bitnami bitnami   4109 Sep 11 20:12 README.md
drwxr-xr-x  5 bitnami bitnami   4096 Sep 11 20:12 resources
drwxr-xr-x  2 bitnami bitnami   4096 Sep 11 20:12 routes
drwxr-xr-x  5 bitnami bitnami   4096 Sep 11 20:12 storage
drwxr-xr-x  4 bitnami bitnami   4096 Sep 11 20:12 tests
drwxr-xr-x 39 bitnami bitnami   4096 Oct  6 02:50 vendor
-rw-r--r--  1 bitnami bitnami    263 Sep 11 20:12 vite.config.js

$ chmod -R 777 storage bootstrap/cache

これで再度静的IPアドレスを開いてみると、以下のエラーが発生しました。

SQLSTATE[HY000]: General error: 8 attempt to write a readonly database (Connection: sqlite

DBの設定をしていなく、SQLiteに接続できないというエラーなので、MySQLに接続するようにします。

データベースの設定

データベースに接続します。
パスワードは、最初にbitnami_application_passwordにて確認したパスワードを使用します。

$ mariadb -u root -p
Enter password: 

まず、ユーザーを作成します。

MariaDB [(none)]> CREATE USER '[ユーザー名]'@'%' IDENTIFIED BY '[パスワード]';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO '[ユーザー名]'@'%';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> SELECT user, host FROM mysql.user;
+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| [ユーザー名]  | %         |
| root        | %         |
| mariadb.sys | localhost |
+-------------+-----------+
3 rows in set (0.001 sec)

MariaDB [(none)]> exit

データベースを作成します。
上記で作成したユーザーで接続します。

mariadb -u [ユーザー名] -p
MariaDB [(none)]> CREATE DATABASE [データベース名];
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| [データベース名]      |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
6 rows in set (0.000 sec)

Laravelのenvファイルを編集します。

vi .env
DB_CONNECTION=sqlite
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=laravel
# DB_USERNAME=root
# DB_PASSWORD=

↓↓↓

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=[作成したデータベース名]
DB_USERNAME=[作成したユーザー]
DB_PASSWORD=[作成したユーザーのパスワード]

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

$ php artisan migrate

   INFO  Preparing database.  

  Creating migration table .............................................................................................. 12.15ms DONE

   INFO  Running migrations.  

  0001_01_01_000000_create_users_table .................................................................................. 44.99ms DONE
  0001_01_01_000001_create_cache_table .................................................................................. 11.02ms DONE
  0001_01_01_000002_create_jobs_table 

これで再度静的IPアドレスを開いてみると、Laravelの画面が表示できました。

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