1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【2026年版】Laravel 10をXServerにデプロイする前に確認したこと

1
Posted at

目次

はじめに

この記事では、Laravel 10 + Sail環境で作成したアプリをXServerのサブドメインへデプロイする前に確認したことを整理します。

デプロイ作業では、いきなりファイルをアップロードしたり、composer installphp artisan migrate を実行したりすると、ディレクトリ構成やPHPバージョンの違いで躓く可能性があります。

そのため、この記事では 本番サーバーへLaravelプロジェクトを配置する前の確認作業 に絞って記録します。

この記事の前提

  • 2026年時点のXServer管理画面を前提にする
  • Laravel 10を前提にする
  • XServerのサブドメインへデプロイする前の確認作業を扱う
  • ローカル開発環境ではLaravel Sailを使用する
  • 本番環境ではLaravel Sailを使用しない
  • この記事では、Laravelプロジェクトのアップロードや本番反映作業は行わない

この記事で扱う環境

項目 内容
Laravel Laravel 10
ローカル環境 Laravel Sail
本番サーバー XServer
公開URL https://review-laravel.honda-dev.com
Web実行時PHPバージョン PHP 8.3.30
SSH上のPHPバージョン PHP 8.3.30(CLI切替後)
SSH接続 確認済み

なぜこの記事を書くのか

Laravelアプリをレンタルサーバーにデプロイする場合、ローカル環境と本番環境の違いで躓きやすいです。

特にXServerでは、以下を事前に確認しておく必要がありました。

  • サブドメインの公開ディレクトリ
  • Web実行時のPHPバージョン
  • SSH接続可否
  • Laravel本体を置く場所
  • SSH上で使われるCLI版PHPのバージョン

また、LaravelやXServerの仕様は変わる可能性があるため、自分が後から見返せるように、2026年時点の手順として記録します。

この記事で確認すること

この記事では、以下の確認までを扱います。

  1. XServerでサブドメインを作成する
  2. Web実行時のPHPバージョンを確認する
  3. SSH接続できるか確認する
  4. Laravelプロジェクトの配置場所を決める
  5. SSH上のPHPバージョンを確認する

この記事では、まだ以下の作業は行いません。

  • Laravelプロジェクトのアップロード
  • .env の作成
  • composer install
  • php artisan key:generate
  • DB設定
  • マイグレーション
  • storage:link
  • キャッシュ系コマンド
  • ブラウザでの動作確認

STEP 1:XServerでサブドメインを作成する

まず、XServerでLaravelアプリ公開用のサブドメインを作成します。

今回は、以下のサブドメインを使用します。

review-laravel.honda-dev.com

この記事を書いている時点では、上記サブドメインはすでに作成済みです。

  1. サーバーパネルの左メニューから ドメイン > サブドメイン設定 を選択し、「+サブドメインを追加」 を押下します。

    01-xserver-subdomain-settings.png

  2. サブドメイン名を入力し、ドキュメントルートはサブドメイン用の公開ディレクトリを選択します。無料独自SSLの 「利用する」 にチェックが入っていることを確認し、「追加する」 を押下します。

    02-xserver-subdomain-add-form.png

  3. サブドメインを追加すると、サブドメイン設定画面に戻ります。追加直後は、設定状況が 「反映待ち」 と表示される場合があります。

    しばらく待ってから画面を再読み込みし、設定状況が 「正常」 になっていることを確認します。

    03-xserver-subdomain-status-masked.png

STEP 2:Web実行時のPHPバージョンを確認する

XServerのサーバーパネルから PHP > PHP Ver.切替 を開き、対象ドメインのPHPバージョンを確認します。

ここで確認するPHPバージョンは、ブラウザからLaravelアプリへアクセスしたときに使われる Web実行時のPHPバージョン です。

XServerでは、この画面上で「ドメイン単位でPHPのバージョンを切り替えることが可能です。」と表示されています。

今回確認した時点では、対象ドメインのPHPバージョンは PHP 8.3.30 でした。

Laravel 10 の公式ドキュメントでは、PHP 8.1以上が必要とされています。

今回確認したXServerのPHPバージョンは PHP 8.3.30 だったため、Laravel 10の最低要件は満たしていました。

ただし、SSH上で php artisancomposer install を実行するときのPHPバージョンは、後続STEPで別途確認します。

04-xserver-php-version.png

STEP 3:SSH接続できるか確認する

以下の記事で検証済です。

STEP 4:Laravelプロジェクトの配置場所を決める

1. 現在位置を確認する

SSH接続した状態で、次のコマンドを実行します。

pwd

表示結果が以下のようになっていれば、XServer上のホームディレクトリにいます。

/home/ユーザー名

2. ホームディレクトリ直下の構成を確認する

次に、ホームディレクトリ直下に何があるか確認します。

SSH接続した状態で、次のコマンドを実行します。

ls -la

ここでは、ドメイン用ディレクトリや public_html がどこにあるかを確認するため、まずホームディレクトリ直下の構成を見ます。

表示例:

/home/ユーザー名/
├── .ssh/
├── backup/
├── ドメイン名/
├── ssl/
└── 初期ドメイン/

ここでは、ドメイン用ディレクトリがホームディレクトリ直下に存在することを確認しました。

Laravel本体の配置場所は、次にこのドメイン用ディレクトリの中を確認してから決めます。

3. ドメイン用ディレクトリの中を確認する

次に、ドメイン用ディレクトリの中を確認します。

ls -la ドメイン名

表示結果に public_html があれば、そこがWeb公開領域です。

/home/ユーザー名/
└── ドメイン名/
    ├── public_html/
    ├── mail/
    ├── log/
    ├── xserver_php/
    └── ...

Laravel本体は、原則として public_html の中には置きません。

Laravel本体は、次のように public_html と同じ階層に配置する方針にします。

/home/ユーザー名/ドメイン名/
├── laravel-review/      ← Laravel本体の配置候補
└── public_html/
    └── サブドメイン名/  ← Web公開ディレクトリ

この段階では、まだディレクトリ作成は行わず、構成確認のみ行います。

4. public_html の中を確認する

次に、Web公開領域である public_html の中を確認します。

ls -la ドメイン名/public_html

表示結果を確認すると、サブドメイン用の公開ディレクトリが作成されていました。

/home/ユーザー名/ドメイン名/public_html/
├── index.html
├── .htaccess
├── サブドメイン名/
└── ...

今回の環境では、サブドメイン作成後に以下のような公開ディレクトリが作成されていることを確認しました。

/home/ユーザー名/ドメイン名/public_html/サブドメイン名/

このディレクトリが、サブドメインでWeb公開される場所になります。

5. 今回分かったこと

ここまでで、配置方針はかなり見えてきました。

/home/ユーザー名/ドメイン名/
├── laravel-review/         ← Laravel本体の配置候補
└── public_html/
    └── サブドメイン名/       ← Web公開ディレクトリ

この確認結果から、Laravel本体は以下の場所に配置する方針とします。

/home/ユーザー名/ドメイン名/laravel-review/

この場所であれば、Laravel本体を public_html の外側に置けるため、.envstorage などを直接Web公開しない構成にできます。

STEP 5:SSH上のPHPバージョンを確認する

XServerの管理画面で確認したPHPバージョンは、Webアクセス時に使われるPHPバージョンです。

一方で、SSH上で php artisancomposer install を実行する場合は、CLIで使われるPHPバージョンも確認する必要があります。

1. 通常の php コマンドのバージョンを確認する

SSH接続した状態で、まず通常の php コマンドのバージョンを確認します。

php -v

今回確認したところ、通常の php コマンドは PHP 8.0.30 でした。

PHP 8.0.30 (cli)

Laravel 10ではPHP 8.1以上が必要なため、このままではLaravel 10用の artisan コマンドや composer install の実行には適しません。


2. PHP 8.3 の実行ファイルがあるか確認する

次に、PHP 8.3 の実行ファイルが存在するか確認します。

ls -l /usr/bin/php8.3

今回の環境では、以下のように /usr/bin/php8.3 が PHP 8.3.30 の実行ファイルを指していました。

/usr/bin/php8.3 -> /opt/php-8.3.30/bin/php

続けて、PHP 8.3 のバージョンを確認します。

/usr/bin/php8.3 -v

確認結果は以下です。

PHP 8.3.30 (cli)

これで、SSH上でも PHP 8.3.30 が使えることを確認できました。


3. ~/bin ディレクトリがあるか確認する

通常の php コマンドで PHP 8.3 を使えるようにするため、ユーザー専用のコマンド置き場として ~/bin を使います。

まず、~/bin ディレクトリが存在するか確認します。

ls -ld ~/bin

存在する場合は、以下のように表示されます。

drwxr-xr-x 2 ユーザー名 members ... /home/ユーザー名/bin

存在しない場合は、以下のように表示されます。

ls: cannot access '/home/ユーザー名/bin': No such file or directory

今回の環境では ~/bin が存在しなかったため、次の手順で作成しました。


4. ~/bin ディレクトリを作成する

~/bin が存在しない場合は、以下のコマンドで作成します。

mkdir -p ~/bin

作成できたか確認します。

ls -ld ~/bin

表示例です。

drwxr-xr-x 2 ユーザー名 members ... /home/ユーザー名/bin

5. ~/bin/php を PHP 8.3 に向ける

次のコマンドで、~/bin/php という名前のシンボリックリンクを作成し、PHP 8.3 を指すようにします。

ln -sfn /usr/bin/php8.3 ~/bin/php

リンクが作成できたか確認します。

ls -l ~/bin/php

表示例です。

/home/ユーザー名/bin/php -> /usr/bin/php8.3

この時点では、まだ通常の php コマンドが ~/bin/php を優先するとは限りません。


6. 現在のPATHを確認する

次に、現在の PATH を確認します。

echo $PATH

今回の環境では、~/bin はPATHに入っていましたが、/usr/bin より後ろにありました。

そのため、通常の php コマンドはまだ /usr/bin/php を参照していました。

which php
php -v

確認結果は以下です。

which php → /usr/bin/php
php -v    → PHP 8.0.30

この状態では、~/bin/php を作成していても、PHP 8.3 は優先されません。


7. ~/bin をPATHの先頭に追加する

~/bin をPATHの先頭に追加するため、~/.bashrc に設定を追記します。

まず、すでに同じ設定が入っていないか確認します。

grep 'HOME/bin' ~/.bashrc

何も表示されなければ、まだ設定は入っていません。

以下のコマンドで ~/.bashrc に追記します。

printf '\nexport PATH=$HOME/bin:$PATH\n' >> ~/.bashrc

今回の検証では、単純に echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc で追記したところ、前のコメント行とくっついてしまいました。
そのため、記事では先頭に改行を入れられる printf を使っています。

そのあと、設定を現在のSSHセッションに反映します。

source ~/.bashrc

8. PHP 8.3 に切り替わったか確認する

最後に、通常の php コマンドが PHP 8.3 を参照するようになったか確認します。

which php
php -v

期待する結果は以下です。

which php → ~/bin/php または /home/ユーザー名/bin/php
php -v    → PHP 8.3.30

今回の環境では、最終的に通常の php コマンドで PHP 8.3.30 が使えるようになりました。


躓いたポイント:.bashrc への追記が前の行とくっついた

今回、~/.bashrc にPATH設定を追記したあと、source ~/.bashrc を実行しても php が PHP 8.3 に切り替わりませんでした。

原因を確認するため、~/.bashrc の末尾を確認しました。

tail -n 10 ~/.bashrc

すると、以下のようにコメント行と export PATH... が同じ行にくっついていました。

# User specific aliases and functionsexport PATH=$HOME/bin:$PATH

この状態では、export PATH... もコメント扱いになってしまい、PATH設定が反映されません。

正しくは、以下のように export PATH... を独立した行にします。

# User specific aliases and functions
export PATH=$HOME/bin:$PATH

修正後、再度 source ~/.bashrc を実行し、which phpphp -v を確認したところ、PHP 8.3.30 に切り替わりました。

source ~/.bashrc
which php
php -v
which php → ~/bin/php または /home/ユーザー名/bin/php
php -v    → PHP 8.3.30

このSTEPで分かったこと

  • XServer管理画面のPHPバージョンは、Web実行時のPHPバージョンである
  • SSH上の通常の php コマンドは、別のPHPバージョンを指している場合がある
  • 今回の環境では、通常の php は PHP 8.0.30 だった
  • /usr/bin/php8.3 を使うと PHP 8.3.30 が利用できた
  • ~/bin/php/usr/bin/php8.3 に向け、~/bin をPATHの先頭に追加することで、通常の php コマンドでも PHP 8.3.30 を使えるようになった

これで、後続の composer installphp artisan コマンドを実行する前準備ができました。

この時点で分かったこと

ここまでの確認で、以下のことが分かりました。

  • XServer上でサブドメインは作成済み
  • Web実行時のPHPバージョンは Laravel 10 の要件を満たしている
  • SSH接続は別記事の手順で確認済み
  • XServer上では、ドメイン用ディレクトリ配下に public_html が存在する
  • サブドメイン用の公開ディレクトリは public_html 配下に作成されている
  • Laravel本体は public_html の外側に置く方針にした
  • SSH上の通常の php は最初 PHP 8.0.30 を指していた
  • ~/bin/phpPATH を設定することで、SSH上の php を PHP 8.3.30 に切り替えられた

次回以降に確認すること

次回以降は、以下を確認しながら進めます。

  • Laravelの public ディレクトリとXServerのサブドメイン公開ディレクトリの対応方法
  • XServer上のComposer利用可否
  • composer install --no-dev --optimize-autoloader が実行できるか
  • 本番用 .env の作成
  • DB接続情報の設定
  • php artisan migrate --force が実行できるか
  • php artisan storage:link が使えるか
  • storage / bootstrap/cache のパーミッション
  • Viteビルド成果物 public/build の反映方法

躓いたポイント

Web実行時PHPとSSH上のPHPは別に確認する必要があった

XServerのサーバーパネルで確認したPHPバージョンは、ブラウザからアクセスしたときに使われる Web実行時のPHPバージョン でした。

一方で、SSH上で php artisancomposer install を実行するときは、CLI版のPHPが使われます。

今回の環境では、Web実行時PHPは PHP 8.3.30 でしたが、SSH上の通常の php コマンドは最初 PHP 8.0.30 を指していました。

そのため、SSH上でLaravel 10用のコマンドを実行できるように、~/bin/phpPATH を設定しました。

.bashrc への追記が前の行とくっついた

~/.bashrc にPATH設定を追記した際、前のコメント行と export PATH... が同じ行にくっついてしまい、設定が反映されませんでした。

# User specific aliases and functionsexport PATH=$HOME/bin:$PATH

この状態では export PATH... もコメント扱いになってしまいます。

記事では、先頭に改行を入れられるように、以下のように printf を使いました。

printf '
export PATH=$HOME/bin:$PATH
' >> ~/.bashrc

セキュリティ面で注意したこと

  • .env を公開しない
  • Laravel本体を public_html の中に置かない
  • storagevendor を直接公開しない
  • Web公開対象はLaravelの public 配下だけにする
  • スクリーンショットにサーバーIDや秘密情報を含めない
  • SSH接続手順は別記事に切り出して整理する

まとめ

この記事では、Laravel 10アプリをXServerのサブドメインへデプロイする前に確認したことを整理しました。

特に重要だったのは、以下の2点です。

  • Laravel本体を public_html の外側に置く方針を決めること
  • Web実行時PHPとSSH上のCLI PHPを別々に確認すること

次回以降は、Laravelの public ディレクトリとXServerのサブドメイン公開ディレクトリをどのように対応させるかを確認していきます。

関連記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?