こんにちは。エンジニアの君島です。
今回は、AlmaLinux9.3のサーバにLaravelをインストールする手順をまとめます。
採用するバージョンを選定した経緯から、いざ構築しようとした時に出てくるちょっとした課題
- OSでサポートされているものより新しいバージョンのPHPをインストールしたい
- バージョン指定してLaravelプロジェクトを作りたい
- php artisan serveであげたサーバにlocalhost以外からもアクセスしたい
- Laravel9から10にバージョンを上げたい
これらの解決など、いくつかのトピックが含まれている内容となっています。
目次
準備
OSのバージョン確認
以下のコマンドでOSのバージョンを確認することができます。今回はAlmaLinux9.3で操作してみます。
1 2 |
$ cat /etc/system-release AlmaLinux release 9.3 (Shamrock Pampas Cat) |
構築するバージョンを定める
PHPのEOL確認
PHPのページでバージョンごとのEOLが表現されています。今日の日付も入っているのでより分かりやすいですね。
これを見ると、現在リリースされている中で、EOLを迎えていないのは8.1以降になり、最新は8.3のようです。
AlmaLinux9.3の標準パッケージ
続いてAlmaLinux9.3でサポートしているPHPのバージョンを確認してみましょう。以下のコマンドで確認をすることができます。
1 2 3 4 |
$ dnf module list php AlmaLinux 9 - AppStream Name Stream Profiles Summary php 8.1 common [d], devel, minimal PHP scripting language |
どうやらPHP8.1のようです。8.1はすでにSecurity Fixのみとなっているので、より新しいバージョンにしておきたいですね。
LaravelのEOL確認
続いて、Laravelも同様にサポートされているバージョンが公開されています。こちらのリンクでは、表形式でわかりやすく表現されていました。
インストールするバージョンを決める
Laravelの方で対応しているPHPバージョンをよく見てみましょう。本番ワークロードでは、しっかりとサポートしている組み合わせが良いと思います。
今回は、PHPはリリースしたばかりの8.3、そして、Laravel9を入れた後、10にバージョンアップする手順を試してみます。
構築
PHP8.3のインストール
先ほど確認した通り、AlmaLinux9.3でサポートしているPHPは8.1でしたので、それより新しいバージョンを入れたい場合は、remiリポジトリをインストールしましょう。
もちろんOSでサポートはされていないバージョンですので、自己責任ではあります。
1 2 |
sudo dnf -y install epel-release sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm |
そうすると、モジュールを確認すると他のバージョンを選択することができます。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ dnf module list php AlmaLinux 9 - AppStream Name Stream Profiles Summary php 8.1 common [d], devel, minimal PHP scripting language Remi's Modular repository for Enterprise Linux 9 - x86_64 Name Stream Profiles Summary php remi-7.4 common [d], devel, minimal PHP scripting language php remi-8.0 common [d], devel, minimal PHP scripting language php remi-8.1 common [d], devel, minimal PHP scripting language php remi-8.2 common [d], devel, minimal PHP scripting language php remi-8.3 common [d], devel, minimal PHP scripting language |
それではPHP8.3をインストールしましょう。モジュールをバージョン指定の上で有効化してインストールしてください。
1 2 |
sudo dnf module enable php:remi-8.3 sudo dnf install php |
Composerのインストール
こちらはComposerのインストール手順です。特に変わったことはしていません。
1 2 3 |
sudo curl -sS https://getcomposer.org/installer | sudo php sudo mv composer.phar /usr/local/bin/composer sudo chmod +x /usr/local/bin/composer |
Laravel9のプロジェクト作成
事前にプロジェクトを展開するディレクトリとその権限を変更しておきます。AWS Systems Managerのセッションマネージャーでサーバにアクセスしているため、ssm-userを使っています。
1 2 |
sudo mkdir laravel9-example sudo hown -R ssm-user. laravel9-example |
続いて、Laravel9のプロジェクトを作成しましょう。composerのcreate-projectを利用すればよいのですが、バージョンを指定しないと、最新の10になってしまいます。
今回は意図的にバージョン9のLaravelプロジェクトを作成したいので、コマンドの最後にバージョン指定をしておきましょう。
1 |
composer create-project laravel/laravel laravel9-example "9.*" |
外部からアクセス可能な状態でサーバ起動する
Laravelプロジェクトが作成できたので、実際にWebサーバを起動して画面表示ができるか確認してみましょう。
artisanに含まれているbuilt-inのサーバを起動するコマンドがあります。ただし、オプションを指定せずに
1 |
php artisan serve |
とするとデフォルトではhostがlocalhostとなります。そのため、他の端末からサーバのIP経由でのアクセスできません。そのような時はhostオプションを使って、
1 |
php artisan serve --host 0.0.0.0 |
この状態で、ブラウザでhttp://<サーバのIP>:8000にアクセスすると、以下のようにLaravelの最初の画面が確認できます。
画面の右下にて、バージョンを確認することもできます。
もちろんartisanコマンドでもバージョン確認をすることができます。
1 2 |
$ php artisan -V Laravel Framework 9.52.16 |
Laravel10へバージョンアップ
それでは、今度はLaravelフレームワークをバージョンアップしてみましょう。
手順は、アップグレードのドキュメントを見ながら進めていきましょう。
Composerのバージョンは2.2以降のようです。こちらは、入れたばかりなので新しいバージョンになっています。
1 2 |
$ composer -V Composer version 2.6.6 2023-12-08 18:32:26 |
これ以降はcomposer.jsonを書き換えていきましょう。なお、修正を行うときはgitで管理されている環境で編集を行うようにしましょう。gitはいざ、修正を戻したい場合に戻すことができる命綱の役割をしてくれます。
今回は、作成したばかりのLaravelプロジェクトなのでcomposer.jsonの該当する箇所だけの修正ですが、通常はこれに加えてソース自体もLaravel10に合わせた修正が必要となります。修正規模に関わらず、ソースを編集をする場合は、git管理化で作業することをおススメします。
以下はgit diffで出した差分になります。-がある行が変更前、+がある行が変更後になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
diff --git a/composer.json b/composer.json index 024809f..525c972 100644 --- a/composer.json +++ b/composer.json @@ -5,10 +5,10 @@ "keywords": ["framework", "laravel"], "license": "MIT", "require": { - "php": "^8.0.2", + "php": "^8.1", "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^9.19", - "laravel/sanctum": "^3.0", + "laravel/framework": "^10.0", + "laravel/sanctum": "^3.2", "laravel/tinker": "^2.7" }, "require-dev": { @@ -18,7 +18,7 @@ "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^6.1", "phpunit/phpunit": "^9.5.10", - "spatie/laravel-ignition": "^1.0" + "spatie/laravel-ignition": "^2.0" }, "autoload": { |
以下を変更したら、composerをupdateしましょう。
composer update
正常にupdateが終了したら、再度サーバを起動してブラウザでアクセスします。
1 |
php artisan serve --host 0.0.0.0 |
Laravelのバージョンが上がって画面表示もできたことが確認できますね。
まとめと告知
AlmaLinux9.3の環境にPHP8.3を入れて、Laravel10のプロジェクトを作成した手順を紹介しました。
Laravel9で作成したプロジェクトを10にアップグレードしていますが、これは私がアップグレードの手順を確認したかったため、回りくどいことをしています。
作成時にバージョン指定しなければ、composerのバージョンに応じて最新のLaravelプロジェクトを作成してくれます。
また、インストールするバージョンを選定するにあたって、どのような内容を見て判断したのか、Laravelのバージョンアップをするときにどのような情報を見ているのかといったリンクも載せています。
加えて、構築していたり、検証しようとして引っ掛かるようなちょっとしたポイントと解決方法も記載しました。
告知
カジュアル面談も実施中
ギークフィードではAWSエンジニアなどの職種で一緒に働く仲間を募集しています。
弊社に興味を持っていただいたり、会社のことをカジュアルに聞いてみたいという場合でも、ご気軽にフォームからお問い合わせください。その場合はコメント欄に、カジュアルにお話したいです、と記載ください!
- CLIでAmazon S3にあるファイル内の文字列検索をしてみる - 2024-02-01
- 不完全なマルチパートアップロードをCLIで確認してS3の無駄コストを無くそう - 2024-01-29
- AlmaLinux9.3にPHP8.3を入れてLaravel9から10にバージョンアップする - 2024-01-12
- AWS CloudShellの表現力を確認してみよう - 2024-01-01
- AWSのアーキテクチャーを学べるAWS Card Clash攻略Wiki - 2023-12-26