Laravelをエックスサーバー上でサブドメイン運用する

Laravelをエックスサーバーのサブドメインで動かそうとすると、思わぬ落とし穴があります。今回は実際の構築例とともに、安全にLaravelをサブドメインで運用する方法をわかりやすく共有します。

目次

エックスサーバーのサブドメイン構造

エックスサーバーでサブドメイン(例:sub.example.com)を作成する際、
メインドメインのドキュメントルートが、/example.com/public_html/である場合、サブドメインのドキュメントルートは、以下のように作られます。

/example.com/public_html/sub.example.com/

Laravelをそのまま配置すると危険

例えば、以下のようにサブドメイン直下にLaravel本体を配置すると、以下のようになります。

/example.com/public_html/(メインドメインのドキュメントルート)
/example.com/public_html/index.html
/example.com/public_html/sub.example.com/
 ├-app
 ├-bootstrap
 ├-config
 ├-database
 ├-public
 ├-resources
 ├-routes
 ├-storage
 ├-tests
 ├-vendor
 ├-.env
 └-artisan

危険な理由

つまり、メインドメインのサブディレクトリとしてもアクセス出来てしまうからです。

以下の例では、laravelの環境設定ファイル.envの内容を表示出来てしまい、DBのパスワード等の漏洩につながります。

https://example.com/sub.example.com/.env

安全にLaravelをサブドメインで運用する方法

1. Laravel本体をドキュメントルートより上のディレクトリに配置

Laravel本体を以下のように、ドキュメントルート(public_html) の上のディレクトリに配置します。
以下は、/example.com/配下にlaravelというディレクトリを作成し、その中にサブドメインのディレクトリsub.example.comを作成した例です。

/example.com/public_html/(メインドメインのドキュメントルート)
/example.com/laravel/sub.example.com/
 ├-app
 ├-bootstrap
 ├-config
 ├-database
 ├-public
 ├-resources
 ├-routes
 ├-storage
 ├-tests
 ├-vendor
 ├-.env
 └-artisan

2. Laravelのpublicディレクトリをドキュメントルート配下のサブドメインディレクトリと紐付ける

https://sub.example.comにアクセスした際には、/example.com/public_html/sub.example.com 配下が読み込まれる必要があります。
そのため、Laravelの public ディレクトリサブドメインのディレクトリシンボリックリンクを貼ります。

以下のコマンドを実行します。

その場でls -la コマンドを実行すると、以下のように表示され、
sub.example.com -> /home/wpxxxxx/example.com/laravel/sub.example.com/public

※ちなみに、SFTPツールで/example.com/public_html配下を確認してもsub.example.comのディレクトリの実体は存在しませんので、あわてないで下さいね(笑)

これで、無事にhttps://sub.example.comにアクセス出来るようになりました。

さいごに

この方法で、Laravel本体を自由に好きなディレクトリに配置出来ることが分かりました。
今回は、エックスサーバーでの例で書きましたが、どのようなサーバーでも自由にLaravelを配置出来るので、複数のプロジェクトを配置するようなサーバー構成の場合、管理もしやすくなると思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次