ConoHa VPS×Ubuntu 24.04で挑むWEBサーバー構築記【LNMP+Node.js/pnpm環境構築編】

みなさん、こんにちは!WEB工房しずおかの開発チームです。
[前回の記事(ConoHa VPS×Ubuntu 24.04で挑むWEBサーバー構築記【SSH接続・ポート変更・Ubuntu24特有落とし穴の回避策】)]では、独自ポート(8823)を使用した安全なSSH接続環境を確立しました。
今回は連載の第2弾として、1台のVPS上で「Laravel + React + LexicalのオリジナルCMS」と「Next.js 5サイトのモノレポ構成」を共存・動作させるためのミドルウェア(Webサーバー環境)構築を進めていきます。
Ubuntu 24.04 LTSにおける最新パッケージの導入手順から、MySQL 8.0導入時のセキュリティ設定・仕様上のポイントまでを分かりやすく解説します!
1. 今回構築するミドルウェア構成
バックエンド(PHP/Laravel)とフロントエンド(Node.js/Next.js)をハイブリッドで運用するため、以下のスタックを揃えます。
- Webサーバー: Nginx(リバースプロキシおよび静的ファイル配信)
- バックエンド言語/実行環境: PHP 8.3 + PHP-FPM
- データベース: MySQL 8.0
- フロントエンド実行環境: Node.js 20.x (LTS)
- パッケージマネージャー: pnpm(Next.jsモノレポの依存関係管理用)
2. 作業手順:パッケージの更新から各ミドルウェアの導入まで
作業はすべて、前回作成した管理者権限を持つ一般ユーザー(deployer)でSSH接続して実行します。
STEP 1:システムパッケージの最新化
まずはOSのパッケージリストを更新し、インストール済みのパッケージを最新状態に引き上げます。
# パッケージリストの更新とアップグレード
$ sudo apt update
$ sudo apt upgrade -y
💡 対話型画面(keyboard-configuration等)が出た場合
apt upgradeの途中でキーボードレイアウト等の確認画面が表示された場合は、デフォルト(Japanese)を選択してそのまま進めて問題ありません。
STEP 2:Nginx(Webサーバー)のインストール
リクエストの振り分けや静的ファイルの配信を担うNginxをインストールします。
# Nginxのインストール
$ sudo apt install nginx -y
# 起動状態の確認
$ systemctl status nginx
Active: active (running) と表示されていれば正常に起動しています。
STEP 3:PHP 8.3 および拡張ライブラリのインストール
Laravelを動作させるための PHP 8.3 と、Laravelに必要な拡張モジュール(FPM、MySQL接続、文字列処理、Redis連携等)を一括導入します。
# PHP 8.3と関連拡張モジュールのインストール
$ sudo apt install php8.3-fpm php8.3-mysql php8.3-mbstring php8.3-xml php8.3-bcmath php8.3-curl php8.3-zip php8.3-gd php8.3-intl php8.3-soap php8.3-redis unzip curl -y
# PHP-FPMの起動確認
$ systemctl status php8.3-fpm
STEP 4:MySQL 8.0のインストールと初期セキュリティ設定
CMSのデータを格納するデータベースとしてMySQLをインストールし、セキュリティの初期設定を行います。
# MySQLサーバーのインストール
$ sudo apt install mysql-server -y
# 初期セキュリティ設定ウィザードの起動
$ sudo mysql_secure_installation
実行後、対話形式で初期設定を進めます。
- VALIDATE PASSWORD COMPONENT...:
nを入力(開発・初期構築時の不必要なパスワード制約トラブルを回避) - Remove anonymous users?:
yを入力(匿名ユーザーの削除) - Disallow root login remotely?:
yを入力(リモートからのroot直接ログイン禁止) - Remove test database and access to it?:
yを入力(テスト用DBの削除) - Reload privilege tables now?:
yを入力(設定の即時反映)
❓ 「Set the password for root user?」が表示されない理由
Ubuntu 20.04以降のMySQL 8.0では、初期状態でauth_socket認証プラグインが有効化されています。Linux上のsudo権限を持つユーザーであればsudo mysql -u rootで直接ログインできる仕様となっているため、パスワード設定ステップが自動的にスキップされますが、正常な動作です。
STEP 5:Node.js (20.x LTS) および pnpm のインストール
Next.js(モノレポ構成)のビルド・実行環境として、Node.js 20.x LTSと高速パッケージマネージャー pnpm をインストールします。
# NodeSource PPAの追加 (Node.js 20.x)
$ curl -fsSL [https://deb.nodesource.com/setup_20.x](https://deb.nodesource.com/setup_20.x) | sudo -E bash -
# Node.jsのインストール
$ sudo apt install -y nodejs
# pnpmのグローバルインストール
$ sudo npm install -g pnpm
# インストールバージョンの確認
$ node -v # v20.x.x
$ pnpm -v # v9.x.x
3. 構築完了の確認
すべてのミドルウェアが正常に導入されたことを確認します。
$ php -v
PHP 8.3.x (cli) (built: ...)
$ node -v
v20.x.x
$ pnpm -v
9.x.x
$ sudo mysql -u root -e "SELECT VERSION();"
+-------------------------+
| VERSION() |
+-------------------------+
| 8.0.x-0ubuntu0.24.04.1 |
+-------------------------+
バックエンド(Laravel)とフロントエンド(Next.js)を動かすためのすべての基盤ソフトウェアが整いました!
まとめと次のステップ
今回は、ConoHa VPSのUbuntu 24.04環境に、Nginx、PHP 8.3、MySQL 8.0、Node.js 20、pnpm をインストールし、Webサーバーとしての基礎環境(LNMP+Node.js)を構築しました。
次回(第3弾)は、いよいよ本命である「Laravelプロジェクトの配置・DB連携」および「Nginxによる1つのLaravelと5つのNext.jsサイト(モノレポ)へのリバースプロキシ・マルチドメイン振り分け設定」を実践していきます!
WEB工房しずおかでは、単一のフレームワークにとらわれず、Laravel×Next.jsのようなハイブリッドでモダンなWebシステム構築やインフラ設計を得意としております。WEBシステムのパフォーマンス改善やVPSの運用設計でお悩みの方は、ぜひお気軽にご相談ください!