ヘテムルにLaravelのサービスをデプロイしたので、備忘録代わりにやり方を書いておきます。

事の顛末

最近、Routinemakerが時々繋がらなくなっていまして。

調べたらapacheが起動してないらしい。
んで、1日がかりで色々やってみたものの復活の兆しが無く・・

もうこうなったら、Routinemakerを引っ越しさせればええんでね?
VPSで管理しているのこのサービスだけだし

レンタルサーバに持って行っても問題無いんじゃなかろうか・・

ということで
朝から手持ちのレンタルサーバーへRoutinemakerをお引っ越しさせました!

https://routinemaker.yuruknowledge-labo.com/

いやー、既にレンタルサーバーへのLaravelデプロイ経験があったお陰で割とすんなりできたわ・・

なぜヘテムルなのか

ずっと使ってるから

・・すげぇ雑な説明ですな・・(;´Д`)
いや、実際アフィリエイトをやっていた頃からだから10年以上使っているんですよ。

当時はXserver、さくら、ロリポップ、ヘテムル全部使っていたのですが
最終的に一番使い勝手が良かったのと、たまたまヘテムルに育児ブログを入れていたため
残ったサイトを全部ヘテムルに集めちゃったんですね。

ただ最近までヘテムルはPHPのバージョンの関係でLaravel5.8が入れられなかったんですが
とうとうPHP7.3に対応 (今見たら7.4になってた!いつの間に!!)したんですよね。

ネット上を見ていても、Xserverやさくらサーバーに
Laravelをデプロイしている記事はてんこもりですが
ヘテムルにLaravelをデプロイする人はまだまだ少ないようです。
そこまで有名じゃないのかなー、良いサーバーなんだけどなー(´・ω・`)

今回の環境

Laravelでの開発は終わっており、githubに上げている
ドメインとサーバの設定は終わっているものとします。
あとデータベースも先に作っておいてね!パスワードもメモるんだよ!!

ヘテムルへのデプロイ方法

ヘテムルにSSH接続できるようにする

コントロールパネルにログインしたら、右側の「SSHアカウント」をクリック。
出てきた画面で「SSHを利用する」ボタンを押せばok。

パスワードが自動生成されますので、どこかにメモっておきましょう。
忘れた場合は「パスワードを更新する」ボタンから再生成します。

SSH設定の部分にある、ユーザー名とサーバーを使ってターミナルから接続します。
ユーザー名が testdayo
サーバーが ssh-testdayo.heteml.net
なら、ターミナルで以下のように打ちます($は打たないでね!)

$ ssh -p 2222  testdayo@ssh-testdayo.heteml.net

始めて接続したときには何かyes / no と聞かれますので(大雑把)
yes と入れてReturn。
その後パスワードを入れるように言われますので
パスワードを入れるとサーバーにログインできます。

PHPのパスを通す

phpコマンドが使えるように、パスを通します。

$ echo "export PATH=\$PATH:/usr/local/php7.3/bin" >> ~/.bashrc  

$ source ~/.bashrc

上手くいったか、PHPのバージョンを表示してみましょう。

 $ php -v

これで狙ったバージョンが表示されればokです。

Composerをインストールする

ターミナルで以下のコマンドを打ちます。

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

するとじゃらじゃら入れてくれますので、終わったら

$ php composer.phar -v

と打って下さい。
Composerのバージョンが出てくればOKです。

さらにcomposerコマンドを使えるようにします。
ターミナルで以下のコマンドを上から順に打って行きます。

$ mkdir bin  

$ mv composer.phar bin/composer  

$ echo "export PATH=\$PATH:~/bin" >> ~/.bashrc  

$ source ~/.bashrc  

$ composer -v

これで、先ほどのようにComposerのバージョンが出てくればOK。

Laravelプロジェクトを持ってくる

githubに置いてあるLaravelプロジェクトを持って来ます。
公開フォルダ(ヘテムルだとwwwの中)にこのプロジェクトを置くのは
セキュリティの関係上あまりよろしくないので
今回は

/  // ターミナルでログインしたときにいる場所  

|- project  

|    |- kokodayo //Laravelのプロジェクトフォルダ  

|  

|-  web // ここが公開フォルダ  

     |- miseruyatu.domain // ドメインのフォルダ  

           |- kokodayo // サブドメインのフォルダ

こんな感じで
新しくprojectフォルダを作り、この中にLaravelのプロジェクトを入れる形にし
シンボリックリンクを貼ることで対応します。

以前さくらサーバでやったときと同じ方法です(*´ω`*)

projectフォルダを作ったのは
今後個人開発したプロジェクトも一緒にここに放り込んだら整理されてええやーん!というだけの理由ですw

ということで、まずターミナルでホームディレクトリに移動します。

$ cd ~/

移動したら、projectという名前のディレクトリを作成します。

$ mkdir project

で、このprojectフォルダに移動して

$ cd project

githubからプロジェクトをcloneしてきます。
プロジェクトのリポジトリにCodeという緑のボタンがありますので、そこからURLをコピペしてはっつけて実行。

$ git clone [githubから持って来たURL]

これでプロジェクトがダウンロードされました。

composerでインストールする

composerを使って、必要なファイルをインストールします。
今回はさくらサーバの時みたいに
「上手いこといかんからFTPで全部上げちまえ」をせずにすんだよ!

プロジェクトフォルダ内に移動し、installコマンドを打ちます。

$ cd kokodayo  

$ composer install

これだけ。なんて楽なんだ・・(前回の苦労が蘇る)

パーミッションを変更する
一部ファイルのパーミッション変更が必要です。
プロジェクトフォルダ内で以下のコマンドを打って下さい。

$ chmod -R 777 storage  

$ chmod -R 775 bootstrap/cache

シンボリックリンクを貼ろう!

ヘテムルのドメイン設定で、先にこのドメイン(今回はサブドメインだけど)の公開フォルダを

/ web / miseruyatu.domain / kokodayo / public

にしておきます。

で、今回は

kokodayo.miseruyatu.domainにアクセス→/web/miseruyatu.domain/kokodayo/public を見に行く→/project/kokodayo/publicを見に行くんだな!

となるようにシンボリックリンクを貼ります。

ln -s ~/project/kokodayo/public ~/web/miseruyatu.domain/kokodayo

これを打ち込めばOKです。

.envを書き直す

これは本番用に合わせて書き直して下さい。
データベース名は作成したデータベース名の前に _ が付くので注意。

APP_NAME=kokodayo  

APP_ENV=production  

APP_KEY=  

APP_DEBUG=false  

APP_URL=http://miseruyatu.domain  

  

DB_CONNECTION=mysql  

DB_HOST=(作成したデータベースのサーバー名)  

DB_PORT=3306  

DB_DATABASE=(作成したデータベースの名前)  

DB_USERNAME=(作成したデータベースユーザの名前、データベース名と一緒)  

DB_PASSWORD=(作成したデータベースのパスワード)

おなじみの呪文を唱える・・その前に

さぁphp artisanの呪文を唱えよう、と言いたいところなのですが
実はヘテムルのmysqlは5.6。
このため、Laravel5.8で作成したデータベースだとusersテーブルのマイグレーションで

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t
oo long; max key length is 767 bytes (SQL: alter table users add unique
users_email_unique(email))


SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t
oo long; max key length is 767 bytes

と怒られちゃうんですよ・・orz
767byte以上の文字列はあかんって言われるようです。

なので、767byte以上の文字が入らないようにapp\Providers\AppServiceProvider.phpに以下のものを加えます。

use Illuminate\Support\Facades\Schema;  

  

public function boot()  

 {  

     Schema::defaultStringLength(191);  

 }

これで「文字列はデフォルトだと191文字までしか入らないよ!」となりますので解決。

後はいつものやつを唱えておしまいです。

//プロジェクトフォルダへ移動  

cd ~/project/kokodayo  

  

// APP KEYを作る  

php artisan key:generate  

  

// マイグレーションと一緒にシーディングもやっちゃう  

php artisan migrate:fresh --seed  

  

//画像置き場(storage)にシンボリックリンクを貼る  

php artisan storage:link 

終わりに

Laravelのデプロイもこれで4回目。
レンタルサーバは2回目、かつ初めてのヘテムルでしたが何とかなるものですねぇ(*´ω`*)
だんだん慣れてきているのを感じます。

ぶっちゃけさくらサーバーより楽だから、ヘテムルはいいぞ(仲間を増やしたい人)

参考文献

ヘテムルの話は少なかったから、めっちゃ助かりました!
いつもながらauthorの皆様ありがとうございます。

https://www.ninton.co.jp/archives/4093

https://warpbutton.com/blog/tips/883/

https://qiita.com/beer_geek/items/6e4264db142745ea666f