「LaravelをUbuntu上で動かしたい」という方に向けて、Nginx・MySQL・PHP(LEMP)スタックをゼロから構築してLaravelを実際に表示させるまでの全手順を、本当にコマンドを動かして取得した実出力とともに解説します。
結論から言うと、Ubuntu 24.04 LTS なら PPA(サードパーティリポジトリ)を一切足さず、apt だけで LEMP + Laravel が動きます。本記事の検証では composer create-project laravel/laravel で入る最新の Laravel が 13.15.0 で、これは "php": "^8.3"(PHP 8.3 以上)を要求します。Ubuntu 24.04 標準の php8.3 はちょうど 8.3.6 なので、要件をそのまま満たせるのが大きな強みです。
本記事のコマンドと出力は、Ubuntu 24.04 公式 Docker イメージ(24.04.4 LTS / aarch64)で実際に LEMP を組み、Laravel を migrate して Nginx + PHP-FPM で配信し、ブラウザで表示するところまで実行して取得しました(2026-06-14 計測)。
この記事のポイント
- Ubuntu 24.04 LTS なら
apt install php8.3だけで PHP 8.3.6 が入る(PPA不要) - LEMP スタック(Nginx 1.24.0 / MySQL 8.0.46 / PHP 8.3.6 / Composer 2.7.1)が apt で一括構築できる
composer create-project laravel/laravelで入る最新版は Laravel 13.15.0、必須PHPは^8.3(8.2ではなく8.3)- Laravel 必須拡張(bcmath / curl / mbstring / pdo_mysql / tokenizer / xml / zip など)は php8.3 一式の apt インストールで全部揃う
- Ubuntu 22.04 は既定PHPが8.1で、php8.3 すら既定リポジトリに無いため Laravel 13 には ppa:ondrej/php の追加が必須
目次
- 前提環境
- LEMP スタックとは
- apt で入る実バージョンと Laravel 13 の要件
- 手順1:システムを更新する
- 手順2:Nginx をインストールする
- 手順3:MySQL をインストール・初期設定する
- 手順4:PHP 8.3 と Laravel必須拡張をインストールする
- 手順5:Composer をインストールする
- 手順6:Laravel プロジェクトを作成する
- 手順7:Nginx 仮想ホストを設定する
- 手順8:MySQL データベースとユーザーを作成する
- 手順9:.env を設定して migrate する
- 動作確認
- よくあるエラーと解決策
- まとめ
前提環境
- OS:Ubuntu 24.04 LTS(Noble Numbat)。本記事の検証は公式 Docker イメージ
ubuntu:24.04(実体は 24.04.4 LTS / aarch64)で実施 - 実行環境:VPS または実機(VPSなら東京リージョンが遅延の面で有利です)
- sudo 権限のあるユーザーアカウント(コンテナ検証では root で実行)
比較のために Ubuntu 22.04 LTS(ubuntu:22.04 / 実体 22.04.5 LTS / Jammy Jellyfish)でも同じ apt-cache policy を実行し、パッケージバージョンの差を実測しています。
Ubuntu 22.04 を使っている場合は注意
Ubuntu 22.04 LTS の既定 PHP は 8.1(候補 2:8.1+92ubuntu1)で、php8.2 / php8.3 は既定リポジトリに存在しません(後述の実測で確認)。最新の Laravel 13 は PHP 8.3 以上が必須なので、22.04 では ppa:ondrej/php を追加して PHP 8.3 を入れる手順が増えます。これから環境を作るなら Ubuntu 24.04 LTS の方が圧倒的にスムーズです。

LEMP スタックとは
LEMP とは次の4つのソフトウェアの頭文字を組み合わせた言葉です。
- Linux — OS(今回は Ubuntu 24.04)
- Enginx — Webサーバー(「エンジンエックス」と読む)
- MySQL — データベース
- PHP — サーバーサイドスクリプト言語
Apache の代わりに Nginx を使うのが LEMP の特徴です。Nginx は静的ファイルを直接返し、PHP の処理だけを PHP-FPM(FastCGI Process Manager)にソケット経由で渡します。この組み合わせが Laravel 本番環境の事実上の標準です。実際に本記事の最後では、Nginx が PHP-FPM 経由で Laravel を配信し HTTP 200 を返す様子を、ブラウザのスクリーンショットで確認します。
apt で入る実バージョンと Laravel 13 の要件
まず「Ubuntu 24.04 の apt で何が入るのか」を実測しました。ubuntu:24.04 コンテナで実際に各パッケージをインストールし、--version を叩いた結果が次の通りです。

| コンポーネント | コマンド出力(実測) | aptパッケージ版数 |
|---|---|---|
| Nginx | nginx/1.24.0 (Ubuntu) | 1.24.0-2ubuntu7.11 |
| PHP | PHP 8.3.6 (cli) (built: May 25 2026) | 8.3.6-0ubuntu0.24.04.9 |
| MySQL | mysql Ver 8.0.46 | 8.0.46-0ubuntu0.24.04.2 |
| Composer | Composer version 2.7.1 | 2.7.1-2 |
ここで一番大事な実測ポイントです。composer create-project laravel/laravel で作られる最新の Laravel は、2026-06-14 時点で Laravel Framework 13.15.0 でした。作成された composer.json を覗くと、要求PHPは次のようになっています。
Laravel Framework 13.15.0
$ php -r “echo json_decode(file_get_contents(‘composer.json’))->require->php;”
^8.3
$ php -r “echo json_decode(file_get_contents(‘vendor/laravel/framework/composer.json’))->require->php;”
^8.3
「Laravelは PHP 8.2 以上」は少し古い情報です
Laravel 11 の時代は最低 PHP 8.2 でしたが、現在 composer create-project で入る Laravel 13 は "php": "^8.3" を要求します。つまり PHP 8.2 では composer create-project が依存解決でこけます。Ubuntu 24.04 の既定 php8.3(8.3.6)はこの ^8.3 要件をちょうど満たすので、何も足さずに通ります。逆に Ubuntu 22.04 の php8.1 では完全に要件外です。
手順1:システムを更新する
まずパッケージリストを更新します。apt update を忘れると古いインデックスのままになり、意図しない版が入ることがあるので必ず先に実行してください。
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://archive.ubuntu.com/ubuntu noble-updates InRelease
Reading package lists… Done
$ sudo apt upgrade -y
Reading package lists… Done
Building dependency tree… Done
手順2:Nginx をインストールする
Ubuntu 24.04 の公式リポジトリには Nginx 1.24.0 が含まれています。apt install nginx 一発で完結します(実測ではパッケージ版 1.24.0-2ubuntu7.11 が入りました)。
Setting up nginx-common (1.24.0-2ubuntu7.11) …
Setting up nginx (1.24.0-2ubuntu7.11) …
$ nginx -v
nginx version: nginx/1.24.0 (Ubuntu)
$ sudo systemctl enable –now nginx
VPS や実機では、ブラウザで http://<サーバーIP>/ にアクセスして「Welcome to nginx!」が出ればOKです。ファイアウォール(ufw)が有効なら HTTP/HTTPS を許可しておきます。
Rule added
Rule added (v6)
手順3:MySQL をインストール・初期設定する
Ubuntu 24.04 のリポジトリには MySQL 8.0.46(8.0.46-0ubuntu0.24.04.2)が含まれています。
Setting up mysql-server-8.0 (8.0.46-0ubuntu0.24.04.2) …
Setting up mysql-server (8.0.46-0ubuntu0.24.04.2) …
$ sudo systemctl enable –now mysql
$ mysql –version
mysql Ver 8.0.46 for Linux on aarch64 ((Ubuntu))
本番運用するサーバーでは、続けて sudo mysql_secure_installation を実行し、匿名ユーザーの削除・リモートrootログインの禁止・テストDBの削除を「Yes」で進めておくと安全です。
手順4:PHP 8.3 と Laravel必須拡張をインストールする
正直、ここが一番つまずきやすいポイントです。Laravel は bcmath・ctype・curl・dom・fileinfo・filter・hash・mbstring・openssl・pcre・pdo・session・tokenizer・xml といった拡張に加え、MySQL を使うなら pdo_mysql、ZIP 解凍に zip が必要です。Ubuntu 24.04 では、これらをまとめて1コマンドで揃えられます。
php8.3 php8.3-fpm php8.3-mysql \
php8.3-mbstring php8.3-xml php8.3-curl \
php8.3-zip php8.3-bcmath
Setting up php8.3-common (8.3.6-0ubuntu0.24.04.9) …
Setting up php8.3-cli (8.3.6-0ubuntu0.24.04.9) …
Setting up php8.3-fpm (8.3.6-0ubuntu0.24.04.9) …
Setting up php8.3-bcmath (8.3.6-0ubuntu0.24.04.9) …
Setting up php8.3-curl (8.3.6-0ubuntu0.24.04.9) …
Setting up php8.3-mbstring (8.3.6-0ubuntu0.24.04.9) …
Setting up php8.3-mysql (8.3.6-0ubuntu0.24.04.9) …
Setting up php8.3-xml (8.3.6-0ubuntu0.24.04.9) …
Setting up php8.3-zip (8.3.6-0ubuntu0.24.04.9) …
バージョンと必須モジュールを確認します。tokenizer や ctype は php8.3-cli に標準で同梱されているため、別パッケージは要りません。
PHP 8.3.6 (cli) (built: May 25 2026 13:12:06) (NTS)
Copyright (c) The PHP Group
$ php8.3 -m | grep -E ‘(bcmath|curl|mbstring|mysql|tokenizer|xml|zip)’
bcmath
curl
mbstring
mysqli
mysqlnd
pdo_mysql
tokenizer
xml
xmlreader
xmlwriter
zip
実測では、Laravel が要求する拡張がすべて php8.3 -m に出てきました(下図)。1コマンドで漏れなく揃うのは Ubuntu 24.04 の地味に大きな利点です。

続いて PHP-FPM を起動します。Laravel を Nginx 経由で動かすには PHP-FPM が動いている必要があります。
$ ls -l /run/php/php8.3-fpm.sock
srw-rw—- 1 www-data www-data 0 /run/php/php8.3-fpm.sock
この php8.3-fpm.sock が、あとで Nginx の fastcgi_pass から指すソケットです。パスを覚えておいてください。

手順5:Composer をインストールする
Composer は PHP のパッケージマネージャーで、Laravel のインストールに使います。Ubuntu 24.04 の公式リポジトリには Composer 2.7.1(2.7.1-2)が含まれています。
Setting up composer (2.7.1-2) …
$ composer –version
Composer version 2.7.1 2024-02-09 15:26:28
手順6:Laravel プロジェクトを作成する
Composer で Laravel プロジェクトを作成します。今回は /var/www/myapp に作ります。実測では Laravel 13.15.0 が入りました。
$ sudo composer create-project laravel/laravel myapp
Creating a “laravel/laravel” project at “./myapp”
Installing laravel/laravel (v13.x.x)
– Installing laravel/framework (v13.15.0): Extracting archive
…
Application key set successfully.
$ cd myapp && php artisan –version
Laravel Framework 13.15.0
$ sudo chown -R www-data:www-data /var/www/myapp
$ sudo chmod -R 775 storage bootstrap/cache
注意:パーミッション設定は必ず行う
storage/ と bootstrap/cache/ は Nginx の実行ユーザー(www-data)が書き込めないと、ログ書き込みやキャッシュ生成でエラーになります。chown www-data:www-data と chmod 775 を忘れずに設定してください。
手順7:Nginx 仮想ホストを設定する
Nginx に Laravel 用の仮想ホストを追加します。Laravel のドキュメントルートは public/ ディレクトリで、PHP は php8.3-fpm.sock に渡すのがポイントです。

listen 80;
server_name example.com;
root /var/www/myapp/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht { deny all; }
}
設定を有効化してテストします。nginx -t が syntax is ok / test is successful を返せばOKです(本記事の検証でもこの通り通りました)。
$ sudo rm -f /etc/nginx/sites-enabled/default
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl reload nginx
手順8:MySQL データベースとユーザーを作成する
Laravel 用のデータベースとユーザーを作成します。root は auth_socket なので sudo mysql で入れます。
mysql> SELECT VERSION();
8.0.46-0ubuntu0.24.04.2
mysql> CREATE DATABASE laravel_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Query OK, 1 row affected
mysql> CREATE USER ‘laravel_user’@’localhost’ IDENTIFIED BY ‘StrongPassword123!’;
Query OK, 0 rows affected
mysql> GRANT ALL PRIVILEGES ON laravel_db.* TO ‘laravel_user’@’localhost’;
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
手順9:.env を設定して migrate する
Laravel の設定ファイル .env にデータベース接続情報を書き込みます。Laravel 13 の初期 .env は SQLite 前提でコメントアウトされているので、MySQL 用に書き換えます。
APP_ENV=production
APP_DEBUG=false
APP_URL=http://example.com
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=StrongPassword123!
続けて設定キャッシュと migrate を実行します。実測では、Laravel 13 の初期マイグレーション3本(users / cache / jobs)がすべて MySQL 8.0.46 に対して DONE になりました。Laravel 11 以降はマイグレーションが 0001_01_01_* に統合されている点も実出力から確認できます。
INFO Application key set successfully.
$ php artisan migrate –force
INFO Running migrations.
0001_01_01_000000_create_users_table …………. 20.79ms DONE
0001_01_01_000001_create_cache_table …………. 14.34ms DONE
0001_01_01_000002_create_jobs_table ………….. 28.39ms DONE
$ php artisan migrate:status
0001_01_01_000000_create_users_table …….. [1] Ran
0001_01_01_000001_create_cache_table …….. [1] Ran
0001_01_01_000002_create_jobs_table ……… [1] Ran
動作確認
ここまで来たら、Nginx + PHP-FPM 経由で Laravel が表示されるはずです。本記事の検証では、実際に curl で HTTP 200 と Laravel のページ(<title>Laravel</title>)が返ることを確認しました。
200
$ curl -s http://localhost/ | grep -o ‘<title>[^<]*</title>’
<title>Laravel</title>
ブラウザでアクセスすると、Laravel のウェルカムページが表示されます。下のスクリーンショットは、実際に ubuntu:24.04 で組んだ Nginx + PHP-FPM + MySQL が配信している画面を Playwright で撮影したものです。右下に v13.15.0 と表示されており、Laravel 13.15.0 が動いていることが分かります。

PHP-FPM が本当に処理しているかは、phpinfo() のページでも確認できます。Server API が FPM/FastCGI、PHP Version が 8.3.6 になっていれば、Nginx → PHP-FPM の連携が成立しています。

ここまでの構築〜表示までを1枚にまとめた実測サマリが次の図です。

本番では info.php を必ず消す
phpinfo() はサーバー構成を丸ごと公開してしまうため、確認が終わったら rm public/info.php で必ず削除してください。本記事では検証目的で一時的に設置しています。
よくあるエラーと解決策
①composer create-project が PHP のバージョンで失敗する
最新の Laravel 13 は "php": "^8.3" を要求します。PHP 8.2 以下の環境では Your requirements could not be resolved といった依存解決エラーで止まります。php -v で 8.3 以上になっているか、複数PHPが入っている場合は php8.3 を明示して実行しているかを確認してください。Ubuntu 22.04 の人は手順前半の PPA 追加(ppa:ondrej/php)が必要です。
②Permission denied(storage/ ・ bootstrap/cache/)
Laravel が storage/ や bootstrap/cache/ に書き込めないとエラーになります。所有者とパーミッションを設定し直します。
$ sudo chmod -R 775 /var/www/myapp/storage /var/www/myapp/bootstrap/cache
③502 Bad Gateway
Nginx から PHP-FPM へのソケット接続が失敗しています。PHP-FPM が起動しているか、Nginx 設定の fastcgi_pass が実在のソケットを指しているかを確認します。
srw-rw—- 1 www-data www-data 0 /run/php/php8.3-fpm.sock
$ sudo systemctl restart php8.3-fpm
Nginx 設定の fastcgi_pass unix:/run/php/php8.3-fpm.sock; のパスが、上記ファイルと完全に一致しているか確認してください。PHP のマイナーバージョンが違うと php8.2-fpm.sock などになり、ここがズレて 502 になります。
④SQLSTATE[HY000] [2002] 接続できない
Laravel から MySQL へ接続できないエラーです。.env の DB_HOST を localhost ではなく 127.0.0.1 にすると、ソケットではなく TCP 経由になり安定することが多いです。あわせて作成したユーザー名・パスワード・DB名が .env と一致しているかも確認してください。設定を変えたら php artisan config:clear を忘れずに。
まとめ
Ubuntu 24.04 LTS 上での Laravel LEMP 環境構築を、実測ベースで振り返ります。
- Ubuntu 24.04 は Nginx 1.24.0・PHP 8.3.6・MySQL 8.0.46・Composer 2.7.1 が apt で完結(PPA不要)
- composer create-project で入る最新版は Laravel 13.15.0、要求PHPは8.2ではなく8.3(^8.3)
- Ubuntu 24.04 の php8.3(8.3.6)はこの要件をちょうど満たすが、22.04 の php8.1 では届かず php8.3 も既定リポジトリに無い
- Laravel 必須拡張は php8.3 一式の apt インストールで全部揃い、php8.3 -m で確認できる
- Nginx 仮想ホストは root を public、fastcgi_pass を php8.3-fpm.sock に向け、storage と bootstrap/cache の書き込み権限を 775 にするのが要点
VPS 上で本格的に Laravel を運用するなら、東京リージョンがあって遅延が小さい Vultr が個人開発者には扱いやすくおすすめです。1 GBプランから始められます。
VPS 各社の料金・スペック・実測ベンチ比較は、こちらの記事も参考にしてください。



コメント