LaravelをレンタルサーバーのXserverにデプロイする方法を解説します。
Laravelの本番環境への移行って結構めんどくさくて、WordPressのようにサクッと構築できると思っていると、その落差に驚かされることになります。(自分がそうでした)
そこで、初心者の方でも簡単にLaravelからXserverへデプロイできる方法をできるだけ丁寧に解説していきます。
目次
LaravelをXserverにデプロイする具体的な手順
Xserverの契約をする
当たり前ですが、Xserverで契約をしないとデプロイはできません。
もし契約がまだの方は先に契約を済ませておきましょう。
Xserverの場合は、一番安いプランでも十分性能が高いため、初めてLaravelをデプロイする人は安いプランで十分かと思います。
独自ドメインの取得
XserverにデプロイするWEBアプリですが、独自ドメインで運用していく場合は事前にドメインを取得しておきましょう。
XserverにSSH接続をする
XserverにLaravelで制作したWEBアプリをデプロイする場合は、SSH接続をする必要があります。
SSH接続をするためにはXserverでの事前設定が必要です。
【SSH接続】XserverでSSH接続の設定をする
Xserverのサーバーパネルにログインします。
アカウント欄にある、SSH設定をクリックしてSSH設定を開始します。
SSH設定欄の変更を「ONにする」のにチェックを入れて、「設定する」をクリックします。
次に「公開鍵証明用鍵ペアの生成」をクリックします。
こちらで、お使いのPCからXserverへSSH接続する際の公開鍵を生成します。
SSHを利用する際のパスフレーズを設定します。
こちらのパスフレーズはSSH接続する際に必要になりますので、メモしておきましょう。
パスフレーズに誤りがないか確認して、「生成する」をクリックします。
公開鍵認証用鍵の生成が終わると、自動的にダウンロードが開始されます。
公開鍵認証用鍵をダウンロードしたら、任意の場所に保存しておきましょう。
僕はWindowsのマイドキュメント内に入れました。場所はどこでも良いです。
【SSH接続】TeraTermの設定
XserverへのSSHはTeraTermで接続することができます。
TeraTermを起動する前に、Xserverからホスト名をメモしておきましょう。
アカウント欄にある、サーバー情報をクリックします。
ホスト名をコピーしましょう。
sv数字.xserver.jpとなっている部分です。
それではTeraTermを起動していきます。
TeraTermを起動すると上記のような画面になります。
ホスト名とTCPポートを入力します。
ホスト名は先ほどコピーしたものを貼り付けます。
TCPポートは10022と入力します。
入力が完了したら「OK」ボタンを押して次に進みます
SSHの認証画面に移行しますので、ユーザー名とパスフレーズを入寮します。
パスフレーズについては、XserverのSSH設定画面で入力したパスワードです。
ユーザー名についてはわかりにくいのですが、Xserverの管理画面左上にあります、「アカウントデータ」の中にあります、「サーバーID」を入力します。
「認証方式をRSA/DSA/ECDSA/ED25519鍵を使う」のラジオボタンを選択します。
さらに右の方にあります、「…」をクリックします。
クリックすると秘密鍵を選択することができますので、Xserverから先ほどダウンロードした鍵を選択します。
鍵が表示されない場合は「秘密鍵」と表示されているタブを「すべてのファイル」に変更すると表示されるようになります。
全ての設定が完了したら、「OK」ボタンを押しましょう。
このような画面になったらSSH接続に成功しています。
サーバー側のPHPバージョンの確認と変更
PHPバージョンの確認
引き続きサーバー側の設定をしていきましょう。
TeraTermでXserverに接続したコマンド画面から
php -v
と入力します。
PHPのバージョンが7以上である場合は、PHPのバージョンを上げる必要はありません。
しかし、ここでPHPバージョンが7未満である場合、Laravelを使用することができません。
PHP7未満の場合はバージョンを上げる必要がありますので、バージョンアップしましょう。
find /opt/php-*/bin -type f -name 'php'
と入力し、使用できるPHPのバージョンを確認します。
実行結果 /opt/php-7.4.4/bin/php /opt/php-7.4/bin/php /opt/php-8.0.10/bin/php /opt/php-8.0.12/bin/php /opt/php-8.0.6/bin/php /opt/php-8.0.7/bin/php /opt/php-8.0/bin/php
というように使用することができるPHPのバージョンが一覧で表示されます。
今回は8.0.12を使用することにします。
使用したいPHPのバージョンへシンボリックリンクを貼る
任意のPHPのバージョンを使用するために、バージョンアップを行うのかと思うかもしれませんが、実はシンボリックリンクを使用するだけでOKです。
シンボリックリンクとは、オペレーティングシステム(OS)のファイルシステムの機能の一つで、特定のファイルやディレクトリを指し示す別のファイルを作成し、それを通じて本体を参照できるようにする仕組み。
Windowsでは「ショートカット」、macOSでは「エイリアス」と言います。
シンボリックリンクを貼る前にHOMEの直下にbinディレクトリを作成します。
mkdir $HOME/bin
次に実際に使用するPHPのバージョンを指定して、シンボリックリンクを貼ります。
ln -s /opt/php-8.0.12/bin/php $HOME/bin/php
.bash_profileを変更する
シンボリックリンクを作成できたら、viコマンドを使用し、.bash_profileを変更していきます。
vi ~/.bash_profile
.bash_profileを開いたら、
//変更前 PATH=$PATH:$HOME/bin
を
//変更後 PATH=$HOME/bin:$PATH
に変更します。
vコマンドで開いたファイルはキーボードのAを押すと編集モードに移行することができます。
保存してviモードを抜けるにはキーボードの「ESC」ボタンを押した後に「:wq」を入力し、エンターキーをおしましょう。
参考情報ですが、基本的なviモードでの終了方法を記載しておきますので、参考にしてください。
コマンド | 機能 |
---|---|
:q | 終了 |
:q! | 変更を保存せずに終了 |
:w | 上書き保存 |
:w! | 強制上書き保存 |
:wq | 保存して終了 |
プログラミングを行う上でviコマンドを扱うことが多いので、できるだけ覚えておきましょう。
最後にパスを通します。
source ~/.bash_profile
「source」コマンドでパスを通していきます。
sourceコマンドは、ファイルの内容を実際に反映させるコマンドです。
PHPバージョンの確認
バージョンアップの手順は上記で終了です。
php -v
上記コマンドを打って、指定したPHPのバージョンが通っているか確認してください。
PHP8.0.12という形で指定したPHPが確認できれば、バージョンアップが完了しています。
Composerのインストール
Laravelを触っている人ならお馴染みのComposerをインストールしていきます。
XserverではComposerが最初からインストールされている場合もあります。
composer -V
Composerをインストールする前に上記コマンドで確認してみましょう。
Composer version 1.9.1 2019-11-01 17:20:17
上記のように表示された場合は、すでにインストールされているため、新たにインストールする必要はありません。
Composerがインストールされていない場合は
curl -sS https://getcomposer.org/installer | php
こちらのコマンドで、インストールをしておきましょう。
nodebrewのインストール
npmを実行するために、Node.jsをインストールしていきます。Node.jsはバージョン管理ツールのnodebrewを使用すると管理が容易になりますので、そちらをインストールします。
XserverではNode.jsがインストールされていませんが、一応
nodebrew -v
こちらのコマンドを叩いてnodebrewがインストールされているか確認します。もしインストール済みでしたらこちらの手順は省略可能です。
インストールされていない場合は、
-bash:nodebrew:コマンドが見つかりません
と表示されます。コマンドが見つかりませんと表示されたらインストールの手順を踏みましょう。
nodebrewのダウンロード&インストール
wget git.io/nodebrew
上記コマンドでnodebrewのダウンロードを行います。
コマンドラインにダウンロードの進捗が表示されます。
※一部抜粋
HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 24696 (24K) [text/plain] `nodebrew' に保存中 100%[======================================>] 24,696 --.-K/s 時間 0.002s 2022-02-08 09:15:04 (13.4 MB/s) - `nodebrew' へ保存完了 [24696/24696]
「nodebrewへ保存完了」と表示されたらダウンロードが完了となります。
perl nodebrew setup
上記コマンドでnodebrewのインストールを行います。
Fetching nodebrew... Installed nodebrew in $HOME/.nodebrew ======================================== Export a path to nodebrew: export PATH=$HOME/.nodebrew/current/bin:$PATH ========================================
と表示されたらインストール完了です。
nodebrewのパスを通す
ログにも表示されていますがnodebrewのパスを通す必要があります。
再びviコマンドで.bash_profileを変更します。
vi ~/.bash_profile
上記コマンドを打ちまして、.bash_profileを開きます。
PHPの際にPATHを通した記述の一行下へ
PATH=$HOME/.nodebrew/current/bin:$PATH
を追記して保存します。
再度
source ~/.bash_profile
を打ちまして、.bash_profileの変更を反映させましょう。
nodebrew -v
とコマンドを打ちます。
# install nodebrew install v8.9.4 # use a specific version number nodebrew use v8.9.4
という表示がされていればnodebrewのインストールに成功していますので、次の手順へ進みます。
Node.jsのインストールと使用バージョンの指定
Node.jsのインストールNo
引き続きnodebrewを使用して、Node.jsをインストールしていきます。
インストールするNode.jsですが、公式サイトにバージョン情報があります。
私が確認した時には、16.13.2が安定板としてありましたので、こちらをインストールしていきます。
記事をご覧の方も一度ご自身でNode.jsの安定板のバージョンを確認してみてください。
私が確認した際の最新版である16.13.2をインストールするコマンドは次の通りです。
nodebrew install v16.13.2
ご自身の入れたいバージョンに合わせてv以下は変更してインストールを行います。
Node.jsの使用するバージョンの指定
インストール後は、使用するnodebrewのバージョンを指定します。
バージョンを指定する場合にはnodebrew useを使用します。
nodebrew use v16.13.2
上記コマンドで使用するバージョンを指定することができます。
nodeとnpmの動作確認
Node.jsが正しくインストールされ、nodeコマンドとnpmコマンドが実行できるか確認しましょう。
node -v
npm -v
上記のコマンドを実行し、バージョン情報が出力されれば正しく使用できる状態となっています。
「コマンドが見つかりません」などと表示される場合はuseコマンドは実行したか?インストールを行ったか?コマンドは正しく入力したか?などを確認しましょう。
Github経由でLaravelのWEBアプリのデプロイ
今回は独自ドメイン下へのデプロイを行う想定でいきます。
独自ドメインの取得方法や、Xserverとの連携は別記事で後々まとめていきたいと思います。(ここで説明するとあまりにも長くなってしまうため)
今回は独自ドメインを取得し、Xserverとの連携が終わっている状態として解説をしていきます。
ディレクトリの移動をする
プロジェクトコピーの前に、プロジェクトをデプロイするディレクトリに移動します。
dir
このコマンドで現在いるディレクトリ内のファイルとサブディレクトリを一覧として確認することができます。
cd hoge.com
次にcdコマンドを使用して、ディレクトリを移動します。hoge.comは例ですので、ご自身のディレクトリに合わせて変更してください。
git cloneでプロジェクトのコピーを行う
まずは、githubの公式サイトにアクセスします。
公式サイト上のCodeタブをクリックすると下記のような表示がされます。
赤色で囲ったhttpsから始まるURLをコピーします。
次に次にgit cloneコマンドを使って、githubからプロジェクトをコピーしましょう。
git clone 【ご自身のプロジェクトURL】
と入力すると、githubからご自身のXserver上のディレクトリにコピーが始まります。
MySQLデータベース作成とユーザー作成
git cloneではデータベースが移行されませんので、データベースの設定をする必要があります。
データベースの設定はXserverの管理画面上で行います。
データベース欄にある「MySQL設定」をクリックします。
「MySQL追加」タブをクリックして、MySQLデータベース名を決めます。
MySQL名は任意の名前でOKです。特に決まりはありませんので、ご自身のプロジェクトに合ったわかりやすい名前が良いと思います。
名前を入力したら、「確認画面へ進む」をクリックして内容に間違いがないか確認し、データベースを作成します。
データベースを作成したら、MySQLユーザー追加を行います。
「MySQLユーザー追加」をクリックします。その後「MySQLユーザーID」を入力し、「確認画面へ進む」をクリックしていきユーザーを作成します。
MySQLデータベースと、MySQLユーザーを設定できたら、次はその2つのアクセス権を関連付けます。
まず「MySQL一覧」をクリックしMySQL一覧を出します。
こちらに先ほど作成したデータベースがあるはずです。
先ほど作成した、データベースと同じ行の「アクセス権未所有者ユーザー」のプルダウンボックスをクリックして、先ほど追加したMySQLユーザーを選択し、「追加」をクリックします。
これで、MySQLデータベースと、MySQLユーザーのアクサセス権の関連付けが完了しました。
.envファイルの修正
git cloneでは.envファイルがコピーされませんので、手動で修正していきます。
まずは、cdコマンドでプロジェクトに移動します。
cd ドメイン名/Laravelプロジェクト名
ここで注意したいのは、ドメイン名の直下ではないことです。
ドメイン名の下にあるLaravelプロジェクト名まで移動するようにしましょう。
Laravelのプロジェクト名はGithubで設定したプロジェクト名になっているはずです。
composer install
Laravelのプロジェクト名のディレクトリまで移動したら、上記コマンドでcomposerをインストールします。
Package manifest generated successfully.
と表示されたら、composerのインストールが完了です。
cp .env.example .env
その後、デフォルトである「.env.example」をコピーして、「.env」を作成します。
vi .env
上記コマンドで、新しく作成した.envを開きます。
下記の部分を修正していきます。
APP_NAME=アプリケーション名を入力 APP_ENV=production //localを削除しproductionにする APP_KEY= //空白。後でコマンドを使い設定します。 APP_DEBUG=false //trueをfalseに変更する APP_URL=https:// //ドメイン名を指定する LOG_CHANNEL=stack //ここはそのまま DB_CONNECTION=mysql DB_HOST=〇〇.xserver.jp //XserverのMySQL上で確認する DB_PORT=3306 DB_DATABASE=〇〇 //さきほど作成したデータベース名 DB_USERNAME=〇〇 //さきほど作成したMySQLユーザー名 DB_PASSWORD=〇〇 //さきほど作成したMySQLパスワード
APP_DEBUGでは、trueのままだとエラー画面がそのまま出てしまうので、本番環境ではfalseが良いと思います。
APP_URLではhttpsでSSL化に対応させておいた方が良いでしょう。
DB_DATABASE
DB_USERNAME
DB_PASSWORD
この辺りは先ほどXserverの管理画面で作成したものですので、もし忘れていたらXserver管理画面で確認しましょう。
特に注意したいのは、
DB_HOST
です。こちらはXserverのサーバーIDやホスト名ではなく、MySQLのホスト名です。
Xserverのサーバーのphpmyadminから確認することができます。
こちらをクリックすると、MySQLのデータベース名とパスワードを聞かれますので、先ほどご自身で設定したものを入力し、ログインします。
データベースのホスト名の確認はこちらの赤い部分となります。
こちらの赤い部分をコピーしてDB_HOSTへコピーしてください。
編集を終えたら、「ESC」キーを押して「:wq」で保存してvimモードを終了します。
アプリケーションキーの設定
先ほどAPP_KEYを空白のままとしましたが、コマンドを使い設定していきます。
php artisan key:generate
このコマンドを使い.envファイル内に値を追加します。
Application key set successfully.
と表示されたら追記が完了となります。
マイグレーションを実行しデータベース構築
マイグレーションを実行する前に.envファイルのキャッシュを削除しておきましょう。
php artisan config:clear
上記のコマンドを使用してキャッシュを削除します。
Laravelプロジェクトのデータベースの内容をmigrateコマンドで反映させます。
php artisan migrate
シンボリックリンクの作成
メインドメインにアクセスしたときに、Laravelのpublicディレクトリを参照するようにシンボリックリンクを作成します。
ln -s ~/メインドメイン/laravel(プロジェクト名)/public ~/メインドメイン/public_html/public
こちらのコマンドを実行します。
こちらもメインドメイン下のプロジェクト名という部分を間違えないようにご自身の環境に合わせて設定していきましょう。
.htaccessの設定
最後にXserverのサーバーパネルから.htaccessを編集していきます。
こちらはXserverにログインせず、viコマンドで編集もできますが、今回はサーバーパネルから設定することにします。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [QSA,L]
</IfModule>
こちらを.htaccessへ追記を行います。
動作確認
以上でXserverへのデプロイは完了です。
ご自身のURLへアクセスして、Laravelプロジェクトが表示されたら成功です。
表示がされない場合の解決策について
もし、この時点で表示されない場合はどこかでミスをしている可能性があります。
シンボリックリンクの確認
シンボリックリンクは正しく貼れていますか?
ls -l
上記コマンドでシンボリックリンクが正しくできているか確認してみてください。
PHPバージョンの変更
PHPのバージョンを変更するとうまく動くことがあります。
PHPのバージョンですが、Xserver側で表示されているものに変更を行い、さらにSSHで接続したときのPHPを「同じバージョン」に変更するとうまく動作する場合があります。
Xアクセラレータの確認
Xserver独自の高速化システムであるXアクセラレータがONになっていると、Laravelが表示されない場合があります。
XアクセラレータをOFFにしてみてください。