Ubuntu 20.04 に PHP 8.0 をインストールして Laravel 9 を使う
PHP 7.4 のサポート期限が2022年11月28日に切れて、いよいよ PHP 8 系の時代に入りました。一方で、Laravel も 6.x のサポート期限が2022年9月3日で切れています。8.x のサポート期限も2023年1月24日に切れるので、現時点の選択肢としては PHP 8 系と Laravel 9 の組み合わせが最有力でしょう。
一方、Ubuntu は最新の LTS である 22.04 は2027年4月までサポート期限があるため、現在新規でサーバを立ち上げるのであればこちらをインストールするのが適切でしょうが、20.04 のサーバを使っている人も多いのではないでしょうか。ひとつ前の LTS である 20.04 も2025年4月までサポート期限が残っており、その意味では十分「現役」といえますが、PHP のバージョンは 7.4 です(ちなみに 22.04 に標準でインストールされるのは PHP 8.1 です)。Ubuntu は本家の PHP のサポートが終了してもセキュリティ更新を提供してくれますが、Laravel をはじめとしてパッケージが PHP のバージョンに依存している場合、最新版を利用できないという難点があります。
前置きが長くなってしまいましたが、Ubuntu 20.04 の環境に PHP 8.0 をインストールし、Laravel 9 を使う方法をまとめてみます。
インストール直後の Ubuntu 20.04 に PHP 8.0 をインストールする
PHP 7.4 で稼働中の 20.04 に PHP 8.0 をインストールする前に、インストール直後の 20.04 に PHP 8.0 をインストールする方法を確認しておきましょう。
sudo add-apt-repository ppa:ondrej/php
sudo add-apt-repository ppa:ondrej/apache2
sudo apt install php8.0 php8.0-mbstring php8.0-mysql php8.0-zip zip
sudo apt install mariadb-server
パッケージをダウンロードするリポジトリに ppa:ondrej/php と ppa:ondrej/apache2 を追加し、php8.0 パッケージと Composer のインストールに必要な関連パッケージ、Maria DB 関連のパッケージをインストールします。ちなみに
sudo apt install php
とすると、最新の安定版である PHP 8.2 がインストールされます。とはいえ、PHP 8.2 は 2022年12月8日にリリースされたばかりなので、本番環境で使うにはリスクが高いと思います。
Composer のインストール
Ubuntu 標準の Composer もバージョンが古いので、Composer は apt を使わずにインストールします。現在は 2.2 系が LTS らしいので、composer-setup.php
に --2.2
を付けてインストールします。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php --2.2
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
Laravel に必要なパッケージをインストール
続いて Laravel に必要なパッケージをインストールします。
sudo apt install php8.0-xml php8.0-curl
Node.js のインストール(Volta を利用)
Laravel でアセット管理をする場合には、Node.js が必要となりますが、20.04 の標準は 10 系なので、こちらも apt からのインストールを使わず、最新版がインストールできる環境を整えます。Node.js の管理ツールにはいろいろなものがありますが、Node.js や npm のインストールが不要で、プロジェクトごとに Node.js のバージョン管理ができる Volta を使うことにしました。
curl https://get.volta.sh | bash
あとはプロジェクトのルートディレクトリに移動して
volta pin node@16
とすれば、指定したバージョンの Node.js がインストールできます(上の例では 16 系)。
PHP 7.4 で稼働中の Ubuntu 20.04 に PHP 8.0 をインストールする
では、本題の PHP 7.4 で稼働中の Ubuntu 20.04 に PHP 8.0 をインストールしてみます。
sudo add-apt-repository ppa:ondrej/php
sudo add-apt-repository ppa:ondrej/apache2
ここまでは、クリーンインストール直後の場合と変わりません。ここで
sudo apt upgrade
を実行すると、php-common などのメタパッケージは PHP 8.2 系に更新されます。今回は 8.0 系にしたいので、先に PHP 関連のパッケージを削除しておきます。インストールされているパッケージは apt list --installed
などで確認しておいてください。
sudo apt remove libapache2-mod-php composer php-bcmath php-common php-composer-ca-bundle php-composer-semver php-composer-spdx-licenses php-composer-xdebug-handler php-curl php-json-schema php-json php-mbstring php-mysql php-psr-container php-psr-log php-symfony-console php-symfony-filesystem php-symfony-finder php-symfony-process php-symfony-service-contracts php-xdebug php-xml php-zip
そのうえで改めて PHP 8.0 系のパッケージをインストールしていきます。
sudo apt install php8.0 php8.0-mbstring php8.0-mysql php8.0-zip php8.0-xml php8.0-curl
一部のパッケージが更新されているので、sudo apt upgrade
も実行しておきましょう。Composer のインストールなど、その後の作業はクリーンインストール時と同じです。
PHP 8.0 から PHP 8.1 にアップグレードする
この状態から、PHP 8.1 にアップグレードする手順についても確認しておきます。上の手順でメタパッケージは削除しているので、PHP 8.1 関連のパッケージをインストールすることで、PHP 8.0 と PHP 8.1 を併存させることができます。
sudo apt install php8.1 php8.1-mbstring php8.1-mysql php8.1-zip php8.1-xml php8.1-curl
インストール直後の段階では、インストールスクリプト中で実行される update-alternatives
によって、CLI 版の PHP は 8.1 に変更されますが、Apahe 版の PHP は 8.0 のままです。これを 8.1 に変更するには以下の操作を行います。
sudo a2dismod php8.0
sudo a2enmod php8.1
sudo service apache2 restart
ディスカッション
コメント一覧
まだ、コメントがありません