今回は「GitHubでLaravelをXserver へデプロイする方法」のその2「クローン編」の解説です。クローンとは、リポジトリの複製のこと。つまり、Laravelプロジェクトをサーバーへ置くためのコマンドです。
【簡単】GitHubでLaravelをXserverへデプロイする方法その1-SSH接続編-ローカル環境
MAMP 5.3
Laravel 6.5
PHP 7.2.22
本番環境
PHP 7.2.17
MySQL 5.7
SSH接続してGithubからcloneする
まずは、前回解説した手順でXserver にSSH接続します。
【簡単】GitHubでLaravelをXserverへデプロイする方法その1-SSH接続編-Me-no-MBP:~ Me$ ssh xserver
Enter passphrase for key '/Users/Me/.ssh/id_rsa':
パスフレーズを入力し、enterキー。(パスフレーズやパスワード入力時は画面上に文字が出ません)
次に、対象のドメインディレクトリ(main.com)に移動し、git cloneをします。
[サーバーID@サーバー番号 ~]$ cd main.com
[サーバーID@サーバー番号 main.com]$ git clone https://github.com/ユーザー名/リモートリポジトリ名.git laravel
cloneするURLは、Githubのリポジトリにある緑の「clone or download」というボタンを押すと出てきます。上記のコマンドでは、URLのあとに半角の空白と「laravel」という文字がありますね。これは、main.comにlaravelというディレクトリを作って、そこにファイルをアップロードするという意味です。
Cloning into 'laravel'...
Username for 'https://github.com': ユーザー名
Password for 'https://ユーザー名@github.com':
Githubのユーザー名とパスワードを入力すると、cloneが始まります。
Composerをインストールする
さてお次は、アップロードしたLaravelプロジェクトにComposerをインストールします。実はgitで管理を始めたとき、.gitignoreによってvendor以下の様々なパッケージが管理外になっているんです。
そのため、cloneしてきたファイルの中にはこれらのパッケージが含まれていません。これがないと、認証系の設定ができないのでインストールしましょう。
[サーバーID@サーバー番号 main.com]$ cd laravel
[サーバーID@サーバー番号 laravel]$ composer install
ドメインのディレクトリからプロジェクトの入っているlaravelディレクトリへ移動し、composer installします。
DB設定・アプリケーション設定を行う
では、ローカル環境と本番環境で異なる部分の設定をしていきましょう。異なる箇所といえば、データベースとアプリのキーです。まずは.envファイルをコピペします。
[サーバーID@サーバー番号 laravel]$ cp .env.example .env
.env.exampleという名前のファイルがあるので、それを.envという名前のファイルを作ってコピペしました。
次に、viエディタを使って.envを編集していきましょう。viエディタの使い方はこちらを参照してください。
https://qiita.com/ryo2132/items/b7e312b0eb50fc449841
もっと簡単に、Xserverのファイルマネジャから直接編集もできます。
APP_NAME=sample
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=https://main.com
DB_CONNECTION=mysql
DB_HOST=ホスト名
DB_PORT=3306
DB_DATABASE=データベース名
DB_USERNAME=ユーザー名
DB_PASSWORD=パスワード
APP_KEYはこのあとターミナルでコマンドを打って作成します。DB_HOSTのホスト名ですが、こちらはXserver のphpMyAdminにアクセスすると、上の方にサーバ:と書いてあるのが見つかります。mysqlから始まるこの名前を入れましょう。
キーの生成と、DBのマイグレーションを行います。
[サーバーID@サーバー番号 laravel]$ php artisan key:generate
[サーバーID@サーバー番号 laravel]$ php artisan migrate
最後にconfig:cacheをして.envファイルの更新を反映させることを忘れないようにしましょう。
シンボリックリンクを設定する
Laravelのプロジェクトは、publicディレクトリがアプリケーションの入り口となります。つまり、ドメインmain.comにアクセスしたときに、laravelディレクトリのpublicへつなげなければなりません。
そこで出てくるのが「シンボリックリンク」です。
[サーバーID@サーバー番号 laravel]$ cd ../public_html
[サーバーID@サーバー番号 public_html]$ ln -s ~/main.com/laravel/public ~/main.com/public_html/public
まずはmain.comのpublic_htmlへ移動し、そこからlnコマンドでリンクを設定します。-sオプションは、ハードリンクではなくシンボリックリンクだよ〜という意味です。
リンクがきちんと貼れたか、lsコマンドで確認してみましょう。
[サーバーID@サーバー番号 public_html]$ ls -l
下記のような表示があれば成功です。
public -> /home/サーバーID/main.com/laravel/public
次にLaravelのプロジェクト内で画像を表示するためのシンボリックリンクを作成します。
[サーバーID@サーバー番号 public_html]$ cd ../laravel
[サーバーID@サーバー番号 laravel]$ php artisan storage:link
lsコマンドで確認し、次のようにリンクが貼れていたらOKです。
[サーバーID@サーバー番号 laravel]$ cd public
[サーバーID@サーバー番号 public]$ ls -l
storage -> /home/サーバーID/main.com/laravel/storage/app/public
.htaccessを編集する
最後に.htaccessを編集して完了です。main.com/public_htmlの中にある.htaccessファイルを次のように書き換えましょう。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1
</IfModule>
main.comにアクセスすると、アプリケーションが表示されると思います。ここからがテストですね!あと一息です。頑張りましょう!
ひとまずは、お疲れ様でした。