Laravel

Dockerで開発したLaravelのWebサイトをgitでXserverにデプロイする

本記事では、Docker環境で開発したLaravelのWebサイトをXserverの初期ドメインにデプロイする手順を解説します。デプロイするサーバーは、Xserver以外でもほぼ同様の手順でできます。

また、本記事はBitbucketからデプロイしましたが、GitHubやGitLabでも同様の手順でデプロイできます。

 

STEP1:XserverにSSH接続

XserverにLaravel環境をデプロイするには、コンソールからXserverにログインして、コマンドラインを実行する必要があります。そのために、SSHを使ってXserverにログインしていきます。

 

XserverでSSH設定

SSHの有効化は、Xserverのサーバーパネルで行います。

まずは、Xserverのサーバーパネルからログインします。

ログインしたら、サーバーパネルのトップより、「アカウント」>「SSH設定」という項目をクリックします。

xserver サーバーパネル ssh設定

 

デフォルトでは「OFFにする」が選択されているので、「ONにする」を選んで、「設定する」をクリックします。

xserver サーバーパネル SSH設定 ON

 

「SSH設定の変更を完了しました。」と表示されたら、SSHの有効化は完了です。

xserver サーバーパネル SSH設定 有効化

 

Xserverで公開鍵認証用鍵ペアを生成

SSH接続に必要な公開鍵認証用鍵ペアの生成をXserverのサーバーパネルで行うことができます。

「SSH設定」>「公開鍵認証用鍵ペアの生成」で、パスフレーズを入力します。このパスフレーズは任意のもので決めて問題ありません。このパスワードは、コンソールでXserverにSSH接続する際に使用します。

入力ができたら、「確認画面へ進む」をクリックします。

xserver 公開鍵認証用鍵ペアの生成

 

「生成する」をクリックします。

xserver 公開鍵認証用鍵ペアの生成

 

下記の画面が表示されたら公開鍵認証用鍵ペアの生成は完了です。

xserver 公開鍵認証用鍵ペアの生成

 

公開鍵認証用鍵ペアの生成が完了すると「サーバーID.key」という名前でローカルに保存されます。名前は変更せずに、Downloadsフォルダに保存しておいてください。後ほど、適切なフォルダに移動します。

 

SSH接続するための設定

SSH接続するための設定をしていきます。

.sshディレクトリの作成

まずは、先ほどダウンロードした「サーバーID.key」ファイルを.sshディレクトリへ移動させます。

ターミナルで、下記コマンドで.sshディレクトリを作成します。

mkdir ~/.ssh

 

.sshディレクトリに鍵を移動

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

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

 

パーミッション(権限)の変更

最後に、下記コマンドでパーミッション(権限)の変更を行います。

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

 

XserverにSSH接続する

XserverへのSSH接続は、ターミナル上で下記のコマンドを実行します。

ssh -l サーバーID -i ~/.ssh/サーバーID.key サーバーID.xsrv.jp(ドメイン名) -p 10022

 

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

ログイン時刻が表示され、コマンドライン入力の左側がサーバーIDに切り替わったらXserverへのSSH接続は成功です。

 

STEP2:PHPのバージョン確認・変更

LaravelはPHP7以上でないと動作しないため、XserverのPHPのバージョンを上げます。

注意点として、XserverのPHPのバージョンはドメイン毎にも設定されているため、ドメイン毎のPHPのバージョンと、SSH接続した状態で確認するPHPのバージョンは異なります。

そのため、Xserverのサーバーパネルでのバージョンアップと、SSH接続した状態でコンソール上での設定を行います。

 

XserverのサーバーパネルでPHPのバージョンを上げる

XserverのPHPのバージョンは、Xserverのサーバーパネルの「PHP Ver.切替」から確認、切替ができます。

xserver php バージョン切替

「PHP Ver.切替」をクリックすると「ドメイン選択画面」が表示されます。PHPのバージョンを確認したいドメインの「選択する」をクリックします。

この記事作成時のPHPのバージョンは5.4.16でした。

変更後のバージョンをクリックして、推奨と記載のあるPHP7以上のバージョンを選択し、「変更」をクリックします。

この記事作成時のPHPの推奨バージョンは7.4.13でした。

 

SSH接続した状態でPHPのバージョンアップと設定

次に、SSH接続した状態で、コンソール上でPHPのバージョンを上げていきます。

まずは、HOME直下にbinディレクトリを作成します。

mkdir $HOME/bin

 

使用可能なPHPのバージョンを調べます。

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

 

使用したいPHPバージョンへのシンボリックリンクを貼ります。

「php-7.4.13」の部分は、Xserverのサーバーパネルで設定したバージョンに合わせておきます。

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

 

シンボリックリンクが間違ってしまった場合は、下記のコマンドで削除できます。

unlink $HOME/bin/php

 

次に、binディレクトリにパスを通します。

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

vi ~/.bash_profile

 

「.bash_profile」ファイルを開いたら、下記のように書き換えます。

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

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

 

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

source ~/.bash_profile

 

これで、PHPのバージョンアップは完了です。

最後に、バージョンアップできているか確認してみましょう。

php -v

 

STEP3:Composerをインストール

Composerをインストールします。

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

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

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

 

「successfully installed」と表示されたらインストールは完了です。

下記のコマンドでComposerのバージョンが表示されたらインストールされた確認ができます。

composer -V

 

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

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

今回は、バージョン管理ツール「nodebrew」を使ってNode.jsをインストールします。

nodebrewをインストール

下記のコマンドでnodebrewをインストールします。

wget git.io/nodebrew

 

次に、「nodebrew」を使えるようにセットアップします。

perl nodebrew setup

 

セットアップが完了すると、ログが表示されます。

表示されたログの通りに、下記のコマンドで「.bash_profile」にパスを通します。

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

 

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

source ~/.bash_profile

 

下記のコマンドで、バージョンが表示されたらnodebrewのインストールは完了です。

nodebrew -v

 

Node.jsをインストール

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

下記のコマンドで、Node.jsの最新のバージョンをインストールできます。

nodebrew install-binary latest

 

インストールしたNode.jsのバージョンを確認します。

nodebrew list

 

この記事作成時でのバージョンはv16.9.0です。

Node.jsを使用できるようにするためにアクティブにします。「v16.9.0」の部分は、さきほど確認したバージョンを指定してください。

nodebrew use v16.9.0

 

アクティブにしたら、最後にnodeのバージョンを確認します。

node -v

 

さきほど指定したバージョンが表示されたら、Node.jsのインストール作業は完了です。

ここで、LaravelプロジェクトをXserverにデプロイするための準備が終わりました。

 

STEP5:git cloneでXserverにLaravelプロジェクトをデプロイする

いよいよ、Laravelプロジェクトをgitを使ってXserverにデプロイしていきます。

SSH接続した直後のディレクトリでlsコマンドを実行すると、独自ドメインやXserverの初期ドメインが表示されます。

デプロイしたいディレクトリに移動して、gitコマンドでデプロイします。Bitbucketの場合はパスワードを求められるので、入力してEnterキーで実行しましょう。

cd *.xsrv.jp(ドメイン名)

git clone httpsから始まるURL

 

エラーが出ることなくcloneされたらデプロイは完了です。

また、Bitbucketを更新して、サーバーのプロジェクトを更新したい場合には下記コマンドを使用します。「master」の部分は、pullしたいブランチ名を指定します。

git pull origin master

 

 

STEP6:Laravelを使用するための設定

Laravelプロジェクトを動作させるために、データベースとユーザーの作成と、「.env」ファイルと「vendor」ディレクトリを作成していきます。

 

Xserverでデータベースとユーザーを作成する

Xserverのサーバーパネルから、「データベース」>「MySQL設定」をクリックします。

xserver データベース mysql設定

 

MySQL追加

タブの「MySQL追加」をクリックして、データベース名を入力し、「確認画面へ進む」をクリックします。データベース名は任意で大丈夫です。

xserver データベース mysql設定

MySQLユーザー追加

次に、「MySQLユーザー追加」をクリックします。

「MySQLユーザID」と「パスワード」を入力して、「確認画面へ進む」をクリックします。

xserver mysqlユーザー追加

 

アクセス権所有ユーザーの追加

追加できたら、タブの「MySQL一覧」をクリックします。

先ほど追加したデータベースの「アクセス権未所有ユーザ」から、先ほど追加したユーザーを選択して「追加」をクリックします。

 

これで、データベースとユーザーの作成は完了です。

 

vendorディレクトリとenvファイルを作成

git cloneでプロジェクトをコピーすると、「.env」ファイルと「vendor」ディレクトリが存在しないので作成していきます。

vendorディレクトリ作成

デプロイしたLaravelプロジェクト名のディレクトリに移動します。

この記事のLaravel開発環境はDockerで、メインディレクトリを「src」としているので、さらに一階層下の「src」ディレクトリに移動します。

cd ~/ドメイン名/デプロイしたLaravelプロジェクト名/src

 

下記のコマンドを実行するとvendorディレクトリが作成できます。

composer install

 

.envファイル作成

下記のコマンドで「.env」ファイルを作成します。

vi .env

 

下記をコピペして、「//追記」と記載した行を修正します。

その他の記述に関しては、今回のデプロイに影響がないため、適当に記述してます。

APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://ドメイン名 //追記

LOG_CHANNEL=stack
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=Xserverのサーバーパネルの「MySQL設定」の画面下に記載 //追記
DB_PORT=3306
DB_DATABASE=作成したデータベース名 //追記
DB_USERNAME=作成したユーザー名 //追記
DB_PASSWORD=作成したパスワード //追記

BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=

 

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

「.env」ファイルの「APP_KEY=」の部分を設定します。

php artisan key:generate

 

STEP7:マイグレーションを実行

テーブルなどを作成するためにマイグレーションを実行します。

php artisan migrate

 

テーブルの更新等をする場合は、下記のコマンドが便利です。

php artisan migrate:refresh --seed

 

また、Laravelの開発でテスト動作させるために、テーブルにテストデータを入れたり、configファイルを作成したりすることがあります。その場合は下記コマンドを実行しましょう。

php artisan cache:clear

php artisan config:clear

 

 

STEP8:シンボリックリンクを作成

現段階では、ドメイン配下にLaravelプロジェクトを設置しただけで、実際にURLにアクセスしてもドメインのデフォルトのページが表示されます。

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

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

ln -s /home/ユーザーID/ドメイン名.xsrv.jp/Laravelプロジェクト名/src/public /home/ユーザーID/ドメイン名.xsrv.jp/public_html

 

STEP9:メインドメイン/public_htmlに.htaccessを設置

メインドメインにアクセスされたら、全てのリクエストがLaravelプロジェクトのpublicディレクトリを通って処理するように「.htaccess」を作成します。

vi .htaccess

 

そして、下記を記述してください。

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

 

URLにアクセスしてみましょう。

LaravelのWebサイトが表示されたらデプロイ作業は完了です。

お疲れさまでした。

 

 

ABOUT ME
りん
フロントエンドエンジニア / 趣味ブログ / 沖縄から東京に就職1年SE→ 1年フリーランスSE→ 沖縄移住2年Webデザイナー → 福岡移住1年目フロントエンドエンジニア / HTMLCSS大好物 / JS / PHP / Laravel / WordPress / VScodeでVim使う人