AWSのEC2にLaravel環境を作成することがあったので、手順をまとめたいと思います。
LAMP環境(Linux、Apache、MariaDB、PHP)で作成しました。
作成する環境
以下の環境を作成します。
2021年10月に作成した時点の情報になります。
- Linux:Amazon Linux 2
- Apache:2.4.51
- MariaDB:10.5.10
- PHP:7.4.21
- Laravel:8.6.4
Apacheのインストール
$ sudo yum update
$ sudo yum install httpd
バージョンを確認します。
$ httpd -v
Server version: Apache/2.4.51 ()
Server built: Oct 8 2021 22:03:47
Apacheを起動する
インストールが完了したら、起動します。
$ sudo systemctl start httpd.service
起動できたかを確認します。
$ sudo systemctl status httpd.service
EC2を起動した時にApacheも自動で起動するように設定しておきます。
$ systemctl is-enabled httpd.service
disabled
$ sudo systemctl enable httpd.service
$ systemctl is-enabled httpd.service
enabled
実際にアクセスしてみると、Apacheの初期画面が表示されることが確認できました。
ドキュメントルートの権限を設定
ドキュメントルートは、デフォルトではroot権限になっているため、ec2-userで使用できるように設定します。
apacheグループにec2-userを追加します。
$ sudo usermod -a -G apache ec2-user
一度ログアウトして、再ログインします。
$ exit
apacheグループが設定されているかを確認します。
$ groups
ec2-user adm wheel apache systemd-journal
「/var/www/html」のグループ所有権をapacheグループに変更します。
$ cd /var/www
$ ll
合計 0
drwxr-xr-x 2 root root 6 10月 8 22:04 cgi-bin
drwxr-xr-x 2 root root 6 10月 8 22:04 html
$ sudo chown ec2-user:apache /var/www/html
$ ll
合計 0
drwxr-xr-x 2 root root 6 10月 8 22:04 cgi-bin
drwxr-xr-x 2 ec2-user apache 6 10月 8 22:04 html
PHPのインストール
続いて、PHPをインストールします。
yumのパッケージではバージョンが古いため、「Extrasレポジトリ」からインストールします。
$ yum list | grep php
graphviz-php.x86_64 2.30.1-21.amzn2.0.1 amzn2-core
php.x86_64 5.4.16-46.amzn2.0.2 amzn2-core
・
・
・
(略)
$ amazon-linux-extras
0 ansible2 available \
[ =2.4.2 =2.4.6 =2.8 =stable ]
2 httpd_modules available [ =1.0 =stable ]
3 memcached1.5 available \
[ =1.5.1 =1.5.16 =1.5.17 ]
・
・
・
(中略)
42 php7.4 available [ =stable ]
$ sudo amazon-linux-extras install php7.4
Installing php-pdo, php-fpm, php-mysqlnd, php-cli, php-json
インストールが完了すると、ステータスが「enabled」に変わりました。
42 php7.4=latest enabled [ =stable ]
バージョンを確認します。
$ php -v
PHP 7.4.21 (cli) (built: Jul 7 2021 17:35:08) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
表示を確認
「phpinfo()」を実行するファイルを作成します。
Apacheも再起動しておきます。
$ echo '<?php phpinfo();' > /var/www/html/phpinfo.php
$ sudo systemctl restart httpd.service
「/phpinfo.php」でアクセスし、以下のように表示されることが確認できました。
表示が確認できたら、作成したファイルは削除しておきます。
$ rm -f /var/www/html/phpinfo.php
MariaDBのインストール
続いて、MariaDBをインストールします。
PHP同様、yumのパッケージではバージョンが古いため、「Extrasレポジトリ」からインストールします。
$ yum list | grep maria
mariadb-libs.x86_64 1:5.5.68-1.amzn2 installed
mariadb.x86_64 1:5.5.68-1.amzn2 amzn2-core
MariaDBのクライアントがデフォルトでインストールされているため、予めアンインストールしておきます。
$ sudo yum remove mariadb-libs
$ amazon-linux-extras
0 ansible2 available \
[ =2.4.2 =2.4.6 =2.8 =stable ]
2 httpd_modules available [ =1.0 =stable ]
3 memcached1.5 available \
[ =1.5.1 =1.5.16 =1.5.17 ]
・
・
・
(中略)
54 mariadb10.5 available [ =stable ]
$ sudo amazon-linux-extras install mariadb10.5
Installing mariadb
インストールが完了すると、ステータスが「enabled」に変わりました。
54 mariadb10.5=latest enabled [ =stable ]
バージョンを確認します。
$ mysql --version
mysql Ver 15.1 Distrib 10.5.10-MariaDB, for Linux (x86_64) using EditLine wrapper
$ mysqld --version
mysqld Ver 10.5.10-MariaDB for Linux on x86_64 (MariaDB Server)
MariaDBを起動する
インストールが完了したら、起動します。
$ sudo systemctl start mariadb.service
起動できたかを確認します。
$ sudo systemctl status mariadb.service
EC2を起動した時にMariaDBも自動で起動するように設定しておきます。
$ systemctl is-enabled mariadb.service
disabled
$ sudo systemctl enable mariadb.service
Created symlink from /etc/systemd/system/mysql.service to /usr/lib/systemd/system/mariadb.service.
Created symlink from /etc/systemd/system/mysqld.service to /usr/lib/systemd/system/mariadb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
$ systemctl is-enabled mariadb.service
enabled
セキュリティの初期設定を行う
初期設定を行います。
対話モードになるので、回答して設定します。
$ sudo mysql_secure_installation
# ルートのパスワードを入力、初期状態では設定されていないので、何も入力せずエンター
Enter current password for root (enter for none):
# unix_socket認証を使用するか
Switch to unix_socket authentication [Y/n] n
# ルートのパスワードを変更するか
Change the root password? [Y/n] y
New password:
Re-enter new password:
# 匿名ユーザーを削除するか
Remove anonymous users? [Y/n] y
# リモートでのrootログインを許可しないか
Disallow root login remotely? [Y/n] y
# テストデータベースを削除するか
Remove test database and access to it? [Y/n] y
# 特権テーブルをリロードするか
Reload privilege tables now? [Y/n] y
データベースへの接続を確認
データベースへ接続できるかを確認します。
$ sudo mysql -u root -p
Enter password:
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)
Laravelのインストール
続いて、Laravelをインストールします。
まず、Laravelに必要なパッケージをインストールします。
$ yum list installed | grep php
php-cli.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-common.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-fpm.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-json.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-mysqlnd.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-pdo.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
$ yum list | grep php
php-cli.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-common.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
(中略)
php-mbstring.x86_64 7.4.21-1.amzn2 amzn2extra-php7.4
(中略)
php-xml.x86_64 7.4.21-1.amzn2 amzn2extra-php7.4
$ sudo yum install -y php-mbstring php-xml
$ yum list installed | grep php
php-cli.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-common.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-fpm.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-json.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-mbstring.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-mysqlnd.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-pdo.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
php-xml.x86_64 7.4.21-1.amzn2 @amzn2extra-php7.4
LaravelはComposerを利用してインストールするので、Composerをインストールします。
$ curl -sS https://getcomposer.org/installer | sudo php
All settings correct for using Composer
Downloading...
Composer (version 2.1.9) successfully installed to: /var/www/html/composer.phar
Use it: php composer.phar
$ ll
合計 2216
-rwxr-xr-x 1 root root 2268732 10月 22 02:36 composer.phar
$ sudo mv composer.phar /usr/local/bin/composer
Composerのインストールが正常に完了したかを確認します。
下記のようにバージョンが表示されれば、インストール完了です。
$ composer -V
Composer version 2.1.9 2021-10-05 09:47:38
Laravelのプロジェクトを作成します。
$ cd /var/www/html
$ composer create-project --prefer-dist laravel/laravel [ここにプロジェクト名を入れる]
Creating a "laravel/laravel" project at "./[プロジェクト名]"
Installing laravel/laravel (v8.6.4)
- Installing laravel/laravel (v8.6.4): Extracting archive
作成したプロジェクトの所有者を変更しておきます。
$ sudo chown -R ec2-user:apache /var/www/html/[プロジェクト名]
Apacheのドキュメントルートを作成したプロジェクトに変更します。
$ sudo vi /etc/httpd/conf/httpd.conf
以下のようにドキュメントルートを変更します。
.htaccess にアクセスできるように、ディレクトリの権限も変更しておきます。
DocumentRoot "/var/www/html/[プロジェクト名]/public"
<Directory /var/www/html/[プロジェクト名]/public>
AllowOverride All
</Directory>
Apacheを再起動します。
$ sudo systemctl restart httpd.service
ブラウザで表示を確認します。
Laravelの初期設定
Laravelのアプリケーションキーを生成します。
$ cd [プロジェクト名]
$ php artisan key:generate
Laravelのデータベースの設定
Laravelのプロジェクトで使用するデータベースの設定を行います。
$ sudo mysql -u root -p
MariaDB [(none)]> create database [データベース名];
create user [ユーザー名] identified by '[パスワード]';
grant all privileges on [データベース名].* to [ユーザー名];
Laravelの設定ファイルを変更します。
$ vi .env
データソースの設定を変更します。
DB_DATABASE=[データベース名]
DB_USERNAME=[ユーザー名]
DB_PASSWORD=[パスワード]
これでひとまずLAMP環境にて、Laravelのインストールができました。