困った事
- 久しぶりにLaravelアプリをさくらのレンタルサーバーにデプロイしようと思い、2年ほど前の自分の記事「さくらのレンタルサーバでLaravelアプリをデプロイしてみた(Qiita)」を参考に作業していたら、以下のようにハマった。
- アプリの公開のために、サーバー上のLaravelプロジェクトのpublicを参照するシンボリックリンクを公開フォルダに置いたが、ルートURLが
http://www.初期ドメイン/public/public
と、publicはつくし、なぜか2回繰り返されてしまった。前回はそんなことなかったのに。 - ルートURLが不適切なことから、プロジェクト内のルーティングもおかしなことになって正常に動作しなかった。
- 前回はそんなことなかったので、色々なサイトを見ながら、色々試した結果、丸1日かけて解決できた。
結論
- 公開フォルダの設定を、シンボリックリンクを含めたところまで適切に設定する必要があった。
- さくらのレンタルサーバーでは、初期ドメインの公開フォルダは
www
ディレクトリに固定されているため、シンボリックリンクを含めることができない。 - 同サーバーでは、追加でドメインを作成すれば公開フォルダをwww以下で自由に設定できる。新規ドメインでシンボリックリンクまでを含めるようにしたところ、正常にルートURLを設定できるようになった。
実例
- アプリ名:
my-app
- アプリのパス:
~/laravel-projects/my-app
- さくらのレンタルサーバーでは、追加料金無しでさくらインターネットのサブドメインを2個まで登録できる。
- 手順
- 任意のドメインを登録する。今回は
pink-green-yellow.skr.jp
というドメインを追加登録する。
サーバーのコントロールパネルから、Web公開フォルダを~/www/pink-green-yellow/public
に設定する。
www
ディレクトリ下にpink-green-yellow
ディレクトリを作成し、シンボリックリンクを貼る。 - さくらサーバーのコントロールパネルから、追加したドメインのWeb公開フォルダを
~/www/my-app
と設定する。 - 2で設定した公開フォルダにあうように、シンボリックリンクをwwwフォルダ下に作る。
サーバー上でのコマンド
% ln -s ~/laravel-projects/my-app/public ~/www/my-app
-
https://www.pink-green-yellow.skr.jp
にアクセスして、ルート画面が表示されれば成功。
- 任意のドメインを登録する。今回は
その他
-
.htaccess
を編集している記事があり、少し試そうとしたがしっかり理解できているわけではないので、あまりいじりたくはなかった。結果、.htaccess
はいじらずに解決できたので良かった。