※ laravelApp を Laravel プロジェクト名として説明します。
やりたいこと
- エックスサーバーで運用中の Laravel サイトを維持したまま、サブドメインを追加したい
https://example.com (Laravel)
https://blog.example.com (WordPress)
目次
前提条件
- エックスサーバーを使用している
- Laravel はすでに運用中
- 現在は public_html が Laravel の public へのシンボリックリンクになっている
問題点
Laravel のみで運用している場合、
public_html を Laravel の public に直接向ける構成でも問題ありません。
しかし、
- サブドメインを追加したい
- WordPress を同一ドメイン配下で使いたい
という場合、
public_html がシンボリックリンクのままだと構成上の制約が出ます。
そのため、public_html を「実体ディレクトリ」に戻す必要があります。
手順① public_html を実体ディレクトリにする
cd ~/example.com
# 既存のシンボリックリンクを削除
rm public_html
# 実体ディレクトリを作成
mkdir public_html手順② 元のファイルをコピーして編集
Laravel のエントリーポイントと .htaccess をコピーします。
cd ~/example.com
cp laravelApp/public/index.php public_html/index.php
cp laravelApp/public/.htaccess public_html/.htaccessindex.php を編集
if (file_exists($maintenance = __DIR__.'/../laravelApp/storage/framework/maintenance.php')) {
require __DIR__.'/../laravelApp/vendor/autoload.php';
$app = require_once __DIR__.'/../laravelApp/bootstrap/app.php';
※ パスを laravelApp に合わせて修正(../ → ../laravelApp/)します。
.htaccess(基本的に編集不要)
Laravel 標準の .htaccess をそのまま使用します。
手順③ 必要なシンボリックリンクを作成
Laravel の public 配下を参照できるようにする
※storageへのリンクは、php artisan storage:link を使用しない
cd ~/example.com/public_html
ln -s ../laravelApp/public assets
ln -s ../laravelApp/public/images images
ln -s ../laravelApp/storage/app/public storage追加ファイル
ドキュメントルート直下に必要なファイルがあれば追加します。
ln -s ../laravelApp/public/favicon.ico favicon.ico
ln -s ../laravelApp/public/robots.txt robots.txt手順④ (Laravel) .env の修正
Laravelの.env本番、ローカルともにASSET_URLを追加します。
# 本番環境のに以下を追加
ASSET_URL=/assets
# ローカルのテスト環境に以下を追加
ASSET_URL=
最終的なディレクトリ構成(完成形)
~/example.com/
├─ laravelApp/ ← Laravel 本体
│ ├─ app/
│ ├─ bootstrap/
│ ├─ public/
│ │ ├─ build/
│ │ ├─ images/
│ │ ├─ index.php
│ │ ├─ favicon.ico
│ │ ├─ robots.txt
│ │ └─ .htaccess
│ └─ storage/
│
└─ public_html/ ← 実体ディレクトリ(重要)
├─ index.php ← Laravel フロント
├─ .htaccess
├─ assets -> ../laravelApp/public/
├─ images -> ../laravelApp/public/images
├─ storage -> ../laravelApp/storage/app/public
├─ favicon.ico -> ../laravelApp/public/favicon.ico
├─ robots.txt -> ../laravelApp/public/robots.txt
└─ blog/ ← WordPress
まとめ
- Laravel 単体運用では問題なかった構成でもサブドメイン追加時には public_html の扱いが重要
ポイントは以下の 3 点です。
- public_html は 実体ディレクトリにする
- Laravel の public は シンボリックリンクで参照する
- エントリーポイント(index.php)のパスを正しく修正する
この構成にすることで、
- メインドメイン:Laravel
- サブドメイン:WordPress
を無理なく共存させることができます。
サブドメインの追加やWordPressのインストールは、特につまずく点がないため割愛します。


コメント