この記事は約6分で読めます。
本文は約3894文字です
Laravelで作られたサイトを他のサーバーに移転する手順

WordPressサイトのサーバー移転は、手順は決まっており、プラグインも揃っていて、今では誰でも簡単にできる作業の一つです。
しかし、PHPのフレームワークのLaravelで作られたサイトをサーバー移転する場合はどうでしょうか?
自分でLaravelをインストールして構築したサイトであれば、まだいいでしょう。
他人がレンタルサーバーにLaravelをインストールして構築したサイトを移転する場合は一気にハードルが上がります。
他人がレンタルサーバーにLaravelをインストールして構築したサイトを移転する機会があったのでメモしておきます。
Laravelが動くレンタルサーバーは?
composerがインストールできるサーバーであれば、Laravelは動くと思います。
Laravelを動かしているサーバーとしてよく見かけるのが以下の2つです。
- Xserver
- さくらサーバー
特にさくらサーバーでは、公式サイトでLaravelの導入手順が説明されています。

Laravelのサイトは他のサイトにコピーしても動かない
Laravelを導入したことが無い人が、見よう見真似でファイル一式を他のサーバーにコピーしてもトラブルになることが多いです。
単純にコピーしただけでは、500エラーが出やすく、原因もわかりにくいです。
Laravelを新規にインストールして、venderディレクトリも再構築する必要があります。
Laravelのサイトがデータベースを使っているかどうかを調べるには?
.envファイルの中身を確認します
DB_*という項目にDB設定の記載があれば、DBを使用している可能性があります。
記載がない場合は、DBを使用していません。
resources/views/page/
を確認します
DBを使用していない場合は、DB以外にサイトのHTMLを出力するphpにHTML一式が書かれている必要があります。
resources/views/page/
以下に*.blade.php
というファイルがあれば、それはwordpressで言うところのテンプレートファイルになります。
*.blade.php
というファイルの中身を見て、サイトのHTMLと対応が取れるのであればDBを使用せずにページを表示しています。
Laravelのサイトを他のサイトに移転する手順(DB未使用の場合)
Laravelのサイトのファイル一式を移転先にアップロードする。
ディレクトリの構造などを移転元から変更しないようにします。
例えば、Xserverの公開ディレクトリはpublic_html以下にありますが、laravelのサイトはその上の階層にLaravelがインストールされていることが多いです。
公開ディレクトリの上位にもファイルがある場合は、上位ディレクトリから一式を他のサーバーにコピーします。
Composerのインストールは数行のコマンドをSSHにコピペするだけの簡単な作業です。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Laravelをインストールするコマンドでよく見かけるのが、次のコマンドです。
composer create-project laravel/laravel .
このコマンドは、laravelを現在のディレクトリにインストールしてくれるのですが、laravelのファイルが既にある場所では実行できません。
composer create-project
を分解して、laravelのインストーラーだけまずはインストールします。
composer global require "laravel/installer" --prefer-dist
LaravelインストーラーだけではLaravelは動かないので、venderディレクトリなど必要なファイルが用意されるようにします。
composer.json
ファイルがあれば、composer install
コマンドで必要なファイルが用意されます。
composer install
.envファイルに正しい情報が記載されていないと、Laravelが動作しません。
DBを使用していないサイトの場合、必要なのは1つです。
- APP_*の項目
APP_URLをインストールしたドメインに書き換えます(例: APP_URL=https://example.com (空白を開けないこと))。
wwwの有り無しもAPP_URLの指定に従いますので、www有りで公開したい場合はwww有りのURLを記載します。
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:<ランダムな文字列>
APP_DEBUG=true
APP_URL=https://example.com
DBを使用する場合は、DBの接続情報も設定する必要があります。
Laravelは、DBの使用が必須ではありません。移転元でDB接続情報が未設定であればDBを使用していません。
DB_CONNECTION=mysql
DB_HOST=
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
サイトの表示を確認して500エラーや表示崩れなどが無ければ大丈夫です。
よくあるトラブル
Laravelのサイトを他のサーバーに移すと500エラーで表示できないトラブルが起こりやすいです。
PHPのバージョンが古い
LaravelはPHP 7以上じゃないとインストールできませんでした。
PHP 7.4にしてから移転作業をしましょう。
さくらサーバーの場合は、コンパネからドメイン毎にPHPバージョンを変更できないので、php.cgiを用意して公開ディレクトリ毎にPHPバージョンを設定します。

リダイレクトループになってしまう
リダイレクトループや500エラーになった時は以下の項目をチェックします。
- .htaccessの間違いはないか?
- composer installを実行し忘れてないか?
- .envファイルがあるか?
- .envファイルの内容は正しいか?
まとめ
この記事ではレンタルサーバーに構築されたLaravelのサイトを他のサーバーに移転する時の手順をまとめました。
Laravelのサイトを移転する時にわかりにくいのは、通常のLaravelのインストール手順と異なることです。
そこで悩むのは、以下の2つです。
- 移転元からファイル一式をコピーしていいのかどうか?
- コピーすべきはどのファイルか?
移転元のLaravelのサイトのphpファイルをそのまま使う前提なので、Laravelを新規にインストールするのではなく、以下の手順で行います。
- 移転元のファイル一式をディレクトリ階層を維持しながらコピー
- composerをインストール
- laravelのインストーラーをインストール
- composer.lockとvernderディレクトリを削除
- composer installを実行
- .envファイルを移転先に合わせて書き換える
コメント