Amazon Linux2を使ったEC2のPHP7.2をPHP8.0にバージョンアップしてLaravelをインストールしました。
その方法をご紹介します。
使用するコマンド
この記事内で使用するコマンドを軽い説明付きでまとめました。
お急ぎの方は以下のコマンドを参考にしてください。
// パッケージのアップデート
$ sudo yum update -y
// composerバージョンアップ
$ sudo composer self-update
// PHPのパッケージをすべてアンインストール
$ sudo yum -y remove php-*
// amazon-linux-extrasをアップデート
$ sudo yum update -y amazon-linux-extras
// amazon-linux-extrasで使用中のパッケージと使えるパッケージを確認
$ amazon-linux-extras
// lamp-mariadb10.2-php7.2を使用停止
$ sudo amazon-linux-extras disable lamp-mariadb10.2-php7.2
// PHP8.0を有効化
$ sudo amazon-linux-extras enable php8.0
// インストールするパッケージの案内があったので、表示されたコマンドを実行
$ sudo yum clean metadata && sudo yum install php-cli php-pdo php-fpm php-mysqlnd
// apacheなどを再起動
$ sudo systemctl restart httpd.service
$ sudo systemctl restart php-fpm.service
// Laravelをインストール
$ sudo composer create-project laravel/laravel project
この記事内ではmbstringをインストールしていません。
そのため、Laravelでメール送信などをしようとすると次のエラーが出ます。
Call to undefined function mb_strcut()
EC2でPHPのmbstringをインストールする方法も紹介していますので参考にしてください。
パッケージアップデート
まずはEC2に入っている各種パッケージをアップデートします。
$ sudo yum update -y
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ amazon-linux-extras.noarch 0:1.6.12-1.amzn2 を 更新
---> パッケージ amazon-linux-extras.noarch 0:2.0.0-1.amzn2 を アップデート
---> パッケージ amazon-linux-extras-yum-plugin.noarch 0:1.6.12-1.amzn2 を 更新
...
完了しました!
composerバージョンアップ
composerのバージョンを確認するとv1でした。
$ composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.9.0 2019-08-02 20:55:32
Usage:
command [options] [arguments]
...
composerをv2にバージョンアップします。
If you run
https://blog.packagist.com/composer-2-0-is-now-available/composer self-update
from 1.x, it will warn you that a new stable major version of Composer is available, and you can usecomposer self-update --2
to migrate to it. You can find specific instructions for various frameworks/CMSs/apps on GitHub which may assist you in upgrading.
バージョンアップが終わったらv2になっているか確認。
$ sudo composer self-update
Updating to version 2.1.5 (stable channel).
Downloading (100%)
Use composer self-update --rollback to return to version 1.9.0
$ composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.1.5 2021-07-23 10:35:47
...
PHPのバージョンアップ
PHP8.0はExtras Libraryを使用してインストールしていきます。
Extras Libraryを使用するとバージョンの変更がとても簡単です。
PHP7.2を削除
現在のPHPのバージョンは7.2。
$ php -v
PHP 7.2.34 (cli) (built: Oct 21 2020 18:03:20) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
PHPのパッケージをすべてアンインストールします。
$ sudo yum -y remove php-*
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ php-cli.x86_64 0:7.2.34-1.amzn2 を 削除
---> パッケージ php-common.x86_64 0:7.2.34-1.amzn2 を 削除
---> パッケージ php-fpm.x86_64 0:7.2.34-1.amzn2 を 削除
---> パッケージ php-json.x86_64 0:7.2.34-1.amzn2 を 削除
---> パッケージ php-mbstring.x86_64 0:7.2.34-1.amzn2 を 削除
---> パッケージ php-mysqlnd.x86_64 0:7.2.34-1.amzn2 を 削除
---> パッケージ php-pdo.x86_64 0:7.2.34-1.amzn2 を 削除
---> パッケージ php-xml.x86_64 0:7.2.34-1.amzn2 を 削除
--> 依存性解決を終了しました。
amzn2-core/2/x86_64 | 3.7 kB 00:00
amzn2extra-docker/2/x86_64 | 3.0 kB 00:00
amzn2extra-lamp-mariadb10.2-php7.2/2/x86_64 | 3.0 kB 00:00
...
完了しました!
PHPのファイルをすべてアンインストールできました。
$ php -v
-bash: /usr/bin/php: No such file or directory
PHP8.0をインストール
次にPHP8.0をインストールしていきます。
今回はExtras Library からソフトウェアパッケージをインストールしていきます。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-install-extras-library-software/
まずはamazon-linux-extrasをアップデートします。
$ sudo yum update -y amazon-linux-extras
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
No packages marked for update
amazon-linux-extrasで使用中のパッケージと使えるパッケージを確認します。
$ 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 ]
...
17 lamp-mariadb10.2-php7.2=latest enabled \
[ =10.2.10_7.2.0 =10.2.10_7.2.4 =10.2.10_7.2.5
=10.2.10_7.2.8 =10.2.10_7.2.11 =10.2.10_7.2.13
=10.2.10_7.2.14 =10.2.10_7.2.16 =10.2.10_7.2.17
=10.2.10_7.2.19 =10.2.10_7.2.22 =10.2.10_7.2.23
=10.2.10_7.2.24 =stable ]
...
40 mock available [ =stable ]
41 postgresql11 available [ =11 =stable ]
_ php7.4 available [ =stable ]
43 livepatch available [ =stable ]
44 python3.8 available [ =stable ]
...
50 selinux-ng available [ =stable ]
_ php8.0 available [ =stable ]
52 tomcat9 available [ =stable ]
53 unbound1.13 available [ =stable ]
...
PHP関係ではlamp-mariadb10.2-php7.2が使用中である事と、PHP8.0が使用できることが確認できました。
まずはlamp-mariadb10.2-php7.2を使用停止します。
複数のバージョンのPHPを有効にすることはできないので、lamp-mariadb10.2-php7.2を使用停止します。
$ sudo amazon-linux-extras disable lamp-mariadb10.2-php7.2
Beware that disabling topics is not supported after they are installed.
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 ]
...
17 lamp-mariadb10.2-php7.2 available \
[ =10.2.10_7.2.0 =10.2.10_7.2.4 =10.2.10_7.2.5
=10.2.10_7.2.8 =10.2.10_7.2.11 =10.2.10_7.2.13
=10.2.10_7.2.14 =10.2.10_7.2.16 =10.2.10_7.2.17
=10.2.10_7.2.19 =10.2.10_7.2.22 =10.2.10_7.2.23
=10.2.10_7.2.24 =stable ]
...
次にPHP8.0を使えるようにします。
$ sudo amazon-linux-extras enable php8.0
...
50 selinux-ng available [ =stable ]
51 php8.0=latest enabled [ =stable ]
52 tomcat9 available [ =stable ]
...
Now you can install:
# yum clean metadata
# yum install php-cli php-pdo php-fpm php-mysqlnd
インストールするパッケージの案内があったので、表示されたコマンドを実行します。
$ sudo yum clean metadata && sudo yum install php-cli php-pdo php-fpm php-mysqlnd
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
リポジトリーを清掃しています: amzn2-core amzn2extra-docker amzn2extra-php8.0
12 個の metadata ファイルを削除しました
...
完了しました!
しかし案内のなかにはmbstringがありません。
そのため、Laravelでメール送信などをしようとすると次のエラーが出ます。
Call to undefined function mb_strcut()
EC2でPHPのmbstringをインストールする方法も紹介していますので参考にしてください。
PHPのバージョンを確認すると8.0になっていました。
$ php -v
PHP 8.0.8 (cli) (built: Jul 7 2021 17:35:32) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.8, Copyright (c) Zend Technologies
最後にapacheなどを再起動します。
$ sudo systemctl restart httpd.service
$ sudo systemctl restart php-fpm.service
Laravelをインストール
次にLaravelをインストールします。
https://laravel.com/docs/8.x/installation
$ sudo composer create-project laravel/laravel project
Creating a "laravel/laravel" project at "./project"
Installing laravel/laravel (v8.5.24)
- Installing laravel/laravel (v8.5.24): Extracting archive
...
> @php artisan key:generate --ansi
Application key set successfully.
Laravel8が正常にインストールされました。
Laravel8からはLaravel Sailを使ってLaravelの開発環境をdockerに爆速で構築できるようになりました。
Sailを使ってdockerにLaravelをインストールする方法は次の記事を参考にしてください。
まとめ
Amazon Linux2を使ったEC2でPHP7.2をPHP8.0にバージョンアップしてLaravel8をインストールする方法を紹介しました。
PHP 8.0のインストールはExtras Libraryを使用しましたが、とても簡単で楽でした。
次回、PHPのバージョンを上げるときも簡単にできるのでExtras Libraryはおすすめです。
コメント