EC2(Amazon Linux2)でPHP8.0にバージョンアップしてLaravelをインストール

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 composer self-update from 1.x, it will warn you that a new stable major version of Composer is available, and you can use composer 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.

https://blog.packagist.com/composer-2-0-is-now-available/

バージョンアップが終わったら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をインストールする方法は次の記事を参考にしてください。

あわせて読みたい
Laravel Sailを使うと2コマンドで開発環境を構築できる Laravel8からSailを使ってLaravelをインストールすることができるようになりました。この記事ではLaravel Sailを使ってLaravel9をdockerの中にインストールして開発環境...

まとめ

Amazon Linux2を使ったEC2でPHP7.2をPHP8.0にバージョンアップしてLaravel8をインストールする方法を紹介しました。

PHP 8.0のインストールはExtras Libraryを使用しましたが、とても簡単で楽でした。
次回、PHPのバージョンを上げるときも簡単にできるのでExtras Libraryはおすすめです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次