Laravelで作成したWEBアプリをXServerでデプロイするまで

#全体の流れ
1.XserverにSSH接続
2.PHPのバージョンアップ
3.Composerのインストール
4.Laravelプロジェクトのデプロイと設定

##Step.1：XServerにSSH接続
####1.SSH設定を有効化する
XServerのサーバーパネルを開くと、「アカウント」メニューに「SSH設定」という項目があるので、こちらをクリック。

SSHの設定画面が開いたら、「ONにする」を選び、「設定する」を、クリック。

設定変更が完了したら、「公開鍵認証用鍵ペアの生成」をクリック。

任意のパスワードを設定し、「確認画面へ進む」をクリック。

確認画面が開くので「生成する」をクリック。

すると、「サーバーID.key」という名前のファイルはダウンロードされると思います。

####2.SSH接続のための設定を行う
ダウンロードしたファイル(サーバーID.key)を.sshディレクトリへ移動します。
ターミナルを開き、まず次のコマンドで.sshのディレクトリを作成します(無ければ)。

    1| mkdir ~/.ssh

続いて、ダウンロードしたファイルを、.sshディレクトリへ移動させます。

    1| mv ~/Downloads/サーバーID.key ~/.ssh/

最後に、以下のコマンドでパーミッションを変更します。

    1| chmod 700 ~/.ssh
    2| chmod 600 ~/.ssh/サーバーID.key

以上で、XServerへのSSH接続のための設定は完了です。

####3.実際に接続してみる
サーバーへの接続はターミナル上で、以下のコマンドを実行します。

    1| ssh -l サーバーID -i ~/.ssh/サーバーID.key サーバーID.xsrv.jp -p 10022

接続できると、パスワードの入力を求められるので、サーバーパネルの「SSH設定」で設定したパスフレーズを入力しEnterをクリック。

すると、ログイン時刻が表示され、サーバーへ接続出来ます。

##Step.2：PHPのバージョンアップ
####1.現在のバージョン確認
Laravelを使うにはPHPのバージョンが7以上である必要があります。
以下のコマンドを実行してphpのバージョンを確認します。

    1| php -v 

phpのバージョンが7以上でなかった場合はバージョンをあげる必要があります。

####2.使えるPHPのバージョンを確認
以下のコマンドを実行します。

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

すると、使えるバージョンが表示されます。
2020年1月時点では、XServerの推奨は7.2.17なので、今回はこのバージョンを使うことにします。

####3.phpのバージョンを上げる
ホーム環境にbinディレクトリを作成します。

    1| mkdir $HOME/bin

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

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

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

    1| vi ~/.bash_profile

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

    1| //変更前
    2| PATH=$PATH:$HOME/bin
    3|
    4| //変更後
    5| PATH=$HOME/bin:$PATH

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

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

    1| source ~/.bash_profile

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

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

    1| php -v

##Step.3：Composerのインストール
ComposeはPHPのパッケージを管理するソフトで、Laravelをインストールするために必要な物です。

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

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

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

    1| composer -V

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

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

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

####1.nodebrewのインストール
以下のコマンドでnodebrewをダウンロードします。

    1| wget git.io/nodebrew

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

    1| perl nodebrew setup

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

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

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

    1| source ~/.bashrc

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

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

    1| nodebrew -v

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

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

    1| nodebrew install-binary latest

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

####3.Node.jsを使うための設定
まずは以下のコマンドで、インストールしたNode.jsを確認をします。

    1| nodebrew list

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

    1| nodebrew use v14.5.0

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

    1| node -v
    2| npm -v

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

##Step.5：Laravelプロジェクトのデプロイと設定
ここまで来て、ようやくLaravelで作ったプロジェクトをデプロイできるようになります。

####1.git cloneを使ってプロジェクトをコピーする
コピー先は人によって異なると思いますが、今回は「メインドメイン」の直下とします。

なので、このサイトを例に上げると、「msy3a」の配下となります。

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

    1| git clone [デプロイするプロジェクト」

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

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

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

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

※XServerへ接続し、追加したいプロジェクトへ移動

    1| cd [プロジェクトフォルダ名]

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

    1| composer install

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

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

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

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


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

    1| cp .env.example .env

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

    1| vi .env

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

    1| DB_CONNECTION=mysql
    2| DB_HOST=127.0.0.1
    3| DB_PORT=3306
    4| DB_DATABASE=laravel
    5| DB_USERNAME=root
    6| DB_PASSWORD=

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

***アプリケーションキーの設定***
セキュリティに使用されるキーを以下のコマンドで生成します。

    1| php artisan key:generate

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

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

    1| php artisan migrate

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

***シンボリックリンクの作成***
今の段階では「メインドメイン」直下にlaravelプロジェクトを作っただけなので、実際にURLにアクセスしても表示されません。

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

シンボリックリンクを貼るには次のコマンドを実行します。

    1| ln -s ~/メインドメイン/laravel(プロジェクト名)/public ~/メインドメイン/public_html/public

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

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

以上で、デプロイ作業は完了です。
URLにアクセスして、画面に表示される確認をしましょう。