Laravelで作ったWEBアプリをXserverにデプロイする方法

このページではレンタルサーバー「エックスサーバー」にLaravel環境で作ったシステムをデプロイする方法について紹介します。

created by Rinker
秀和システム
¥3,300 (2020/08/06 12:25:23時点 Amazon調べ-詳細)

全体の流れ

まずデプロイするまでの全体の流れですが、以下のようになります。

  1. エックスサーバーにSSH接続
  2. PHPのバージョンアップ
  3. Composerのインストール
  4. Node.jsのインストール
  5. Laravelプロジェクトのデプロイと設定

1〜4はデプロイするまでの環境設定で、5で実際にデプロイします。

STEP1:エックスサーバにSSH接続

作業を行っていくには、ターミナルでエックスサーバーにSSH接続して行います。

やり方は、以下の記事で詳しく説明しているので、こちらを参考にしてください。

エックスサーバーにSSH接続する方法

STEP2:PHPのバージョンアップ

1. 現在のバージョン確認

Laravelを使うにはPHPのバージョンが7以上である必要があります。

注意

これはサーバーパネルの「PHP Ver.切替」で確認できるバージョンとは異なるので注意。

こっち側だけ、Ver7になっていてもダメです。

以下のコマンドを実行してphpのバージョンを確認しましょう。

php -v

上記の場合は、バージョンが5.4.16なので、バージョンを上げる必要があります。

2. 使えるPHPのバージョンを確認

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

find /opt/php-*/bin -type f -name 'php'

すると、こんな感じで使えるバージョンがズラーっと表示されます。

2020年1月時点では、エックスサーバーの推奨は7.2.17なので、今回はこのバージョンを使うことにします。

3. PHPのバージョンを上げる

ホーム環境にbinディレクトリを作成します。

mkdir $HOME/bin

作成したbinディレクトリにシンボリックリンクを作成します。

ln -s /opt/php-7.2.17/bin/php $HOME/bin/php

viコマンドで/.bash_profileファイルを開きます。

vi ~/.bash_profile

ファイルを開いたら次の「変更後」のように「変更前」の内容を書き換えて保存します。

//変更前
PATH=$PATH:$HOME/bin

//変更後
PATH=$HOME/bin:$PATH

やり方は「a」キーを押してインサートモードにし、記述内容を修正、「esc」キーでインサートモードを解除、「:wq」で変更したファイルを保存、終了します。

変更できたら、新しく作ったパスを反映させます。

source ~/.bash_profile

これでバージョンが変わっているはずです。

以下のコマンドを実行して確認しましょう。

php -v



STEP3:Composerのインストール

ComposerはPHPのパッケージを管理するソフトで、Laravelをインストールするために必要なものです。

以下のコマンドを実行してComposerをインストールします。

curl -sS https://getcomposer.org/installer | php

正常にインストールできると、「successfully installed」といったメッセージが表示されますが、以下のコマンドでも確認できます。

composer -V

これはcomposerのバージョンを確認するコマンドで、バージョンが表示されればインストールされていることになります。

STEP4:Node.jsのインストール

npmを使えるようにするためにNode.jsをインストールしていきます。

ただし、Node.jsをそのまま入れるとバージョンの管理に手間がかかるため、バージョン管理ツール「nodebrew」を使ってNode.jsのインストールを行ます。

1. nodebrewのインストール

以下のコマンドでnodebrewをダウンロードします。

wget git.io/nodebrew

ダウンロードできたら、セットアップします。

perl nodebrew setup

パスを通すために/.bash_profileファイルに以下のコマンドで追記します。

echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bash_profile

変更した内容を反映させます。

source ~/.bashrc

これで、nodebrewのインストール作業は完了です。

以下のコマンドを打って、きちんとインストールされているか確認しましょう。

nodebrew -v

2. Node.jsのインストール

続いて、nodebrewを使って、Node.jsのインストールを行います。

まず、最新のNode.jsのバージョンを確認してみましょう。

nodebrew ls-remote

確認できたら最新の物をインストールを実施します。

nodebrew install-binary latest

以上で、Node.jsのインストールは完了です。

MEMO

※もし、バージョンを指定してインストールしたい場合は、次のようにしてコマンドを実行します。

nodebrew install インストールするバージョン

3. Node.jsを使うための設定

まずは以下のコマンドで、インストールしたNode.jsを確認をします。

nodebrew list

今回の場合は、バージョン「13.7.0」がダウンロードされているので、これをアクティブにします。

nodebrew use v13.7.0

アクティブにしたら、最後にnodeのバージョンを確認します(ついでに、npmのバージョンも)。

node -v 
npm - v

これでNode.jsのインストール作業は完了です。



STEP5:Laravelプロジェクトのデプロイと設定

ここまで来て、ようやくLaravelで作ったプロジェクトをデプロイできるようになります。

1. git cloneを使ってプロジェクトをコピーする

コピー先は人によって異なると思いますが、今回は「メインドメイン」の直下とします。

なので、このサイトを例に挙げると、「naoya-ono」配下になります。

cdコマンドで、ディレクトリを移動したら、以下のコマンドでgithubからプロジェクトをコピーします。

git clone [デプロイするプロジェクト]
[デプロイするプロジェクト]はguthubであなたのプロジェクトを開くと、右端のほうに「Clone or download」というボタンがあるので、こちらをクリックすると確認できます。

これで、メインドメイン配下にlaravelプロジェクトがコピーされます。

gitやgithubの使い方がわからないという人は以下のudemy講座がオススメです。

Git入門: ノンプログラマーのための Git

書籍なら、こちら。

created by Rinker
¥2,208 (2020/08/06 19:06:55時点 Amazon調べ-詳細)

2. Laravelの設定

git cloneでコピーした場合、.envファイルやvendorディレクトリなどがありません。

なので、これらを用意します。

composer installの実行

対象のプロジェクトのディレクトリ内でcomposer installを実行します。

composer install

これにより、vendorディレクトリが作られます。

データベースの設定 + α

続いて、データベースの設定をします。

まずは、「config/database.php」を開いて、DBの設定をしていきます。

「database」、「username」、「password」を本番公開用のDBの情報に置き換えて、「unix_socket」は削除すればOKです。

続いて、envファイルの設定をしていきますが、cloneしたプロジェクトには.envファイルがないので、「.env example」をコピーして使います。

cp .env.example .env

ファイルを開いて、変更します。

vi .env

以下の項目を本番サーバー用に変更します。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

その他、アプリ名やメールの設定などあなたの環境に合わせて変更してください。

GmailのSMTPを利用してメールを送る場合は以下の記事に書いてある設定をすることで送信できます。

【Laravel】Gmailを使ってメールを送信するための設定内容

アプリケーションキーの設定

セキュリティに使用されるキーを以下のコマンドで生成します。

php artisan key:generate

正常終了メッセージが表示されればOKです。

マイグレーションの実行

データベースのテーブルを作る必要があるので、マイグレーションファイルを実行します。

php artisan migrate
注意

事前にサーバーパネルからDBは作っておいてください。

シンボリックリンクの作成

今の段階では「メインドメイン(naoya-ono.com)」直下にlaravelプロジェクトを作っただけなので、実際にURLにアクセスしても表示されません。

アクセスできるようにするには、メインドメインにアクセスした時にlaravelプロジェクトのpublicディレクトリを見にいくようにシンボリックリンクを貼ります。

イメージにするとこんな感じです。

上のような構成でシンボリックリンクを貼るには次のコマンドを実行します。

ln -s ~/メインドメイン(naoya-ono.com)/laravel(プロジェクト名)/public ~/メインドメイン(naoya-ono.com)/public_html/public

.htaccessの設定

最後に、すべてのリクエストがlaravel(プロジェクト名)/publicを通して処理されるよう、.htaccessに追記します。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [QSA,L]
</IfModule>

以上で、デプロイ作業は完了です。

あなたのURLにアクセスして、画面が表示される確認しましょう。


サブドメインにLaravelで作ったアプリをデプロイする場合

「sample.naoya-ono.com」のようにサブドメインにLaravelで作ったアプリを作る場合、シンボリックリンクの構成が少し異なるので、追加で紹介しておきます。

1. サブドメインを作成

まずはエックスサーバーのサーバーパネルで、「サブドメイン設定」をクリックします。

あなたが所有するドメインの一覧が表示されるので、対象のドメインを選択します。

サブドメイン設定追加」をクリックします。

サブドメイン名に好きな名前を入力し登録します。

これで、サブドメインが作成できました。

上記の場合ですと「sample.naoya-ono.com」となります。

2. シンボリックリンク の作成

サブドメインにLaravelプロジェクトをデプロイする場合、次にような構成でシンボリックリンクを貼ります。

サブドメインを作ると、自動で「メインドメイン/public_html」配下に自動でサブドメイン名のフォルダが生成されるので、削除するかリネームしてください。

その後に、以下のコマンドでシンボリックリンクを貼ります。

ln -s ~/メインドメイン(naoya-ono.com)/laravel(プロジェクト名)/public ~/メインドメイン(naoya-ono.com)/public_html/サブドメイン

以上で完了です。

尚、サブドメインを利用する場合は、.htaccessの設定は不要です。

Cronを設定する場合

Xserverのサーバーパネル上に、「Cron設定」という項目があるのでこちらをクリックします。

Cron設定追加」に入力していけばOKです。

LaravelのKernel.phpですでにスケジュール設定済みであれば、「分」や「時間」には「*」を入れて、コマンドのところに、下のように書けばOKです。

/usr/bin/php7.2 /home/アカウント名/ドメイン名/Laravelプロジェクト名 artisan schedule:run >> /dev/null 2>&1

最後に

今回はLaravelで作ったアプリをエックスサーバーにデプロイする方法について紹介しました。紹介している内容で、誤りがあれば指摘いただけると幸いです。

今回紹介した方法はgitの知識があることが前提なので、使い方がわからないという人は書籍か動画で勉強しておきましょう。

created by Rinker
¥2,208 (2020/08/06 19:06:55時点 Amazon調べ-詳細)
created by Rinker
秀和システム
¥3,300 (2020/08/06 12:25:23時点 Amazon調べ-詳細)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA