エックスサーバーへのLaravelのデプロイは詳しいサイトが沢山ありますが、
カラフルボックスへのLaravelのデプロイ情報ってまだまだ少ないですよね。
先日、ColorfulBoxサーバーでLaravelが動くかテストしてみた所、
苦戦しつつも、ちゃんとデプロイできたので、共有していきます。
ColorfulBoxにLaravelをデプロイする手順
基本的にはXサーバー/wpXシンにLaravelデプロイ完全図解の手順通りなのですが、一部変更しないとカラフルボックスだと表示されないので、解説していきます。
上のリンク先の記事も見ながらやってください。
手順としては、
- アドオンドメインでドメイン作成
- ColorfulBoxにSSHで接続
- PHPのバージョン確認(基本変更しなくて大丈夫)
- Composerのインストール(ていうか多分入ってる)
- Node Brewのインストール
- GITHUBからLaravelをデプロイ
- データベースとの接続
- シンボリックリンク作成(ここ落とし穴)
0. アドオンドメインの作成
まず、Laravelをインストールするドメインを作成します。
基本的にはアドオンドメインって奴を使います。サブドメインの場合はサブドメインを選んでください。
上記のような感じに入力して、ドメイン追加を押せば、public_html配下に、ドメインが作成されます。
Laravelをインストールするディレクトリはこんなイメージです。
1 + 2. SSH接続してPHPのVr確認
次にColorfulBoxにSSH接続します。
これは公式サポートページにやり方が書いてあります。
https://help.colorfulbox.jp/manual/ssh-use/
次に、SSH接続したら、そのまま php -v と打ってみてください。
PHPのバージョンが分かります。当方の場合はPHP 7.4.19 と出てます。
これがインストールするLaravelで使えるバージョンかを確認してください。
自分の使うLaravelで使えないPHPバージョンなら、バージョンを変更します。
バージョン変更のやり方
PHPバージョンを変更する方法ですが、home/ユーザー名/のディレクトリにbinというフォルダを作ります。FTPから作っても良いですし、mkdir $HOME/bin というコマンドを打って作る事もできます。
次にシンボリックリンクを作るコマンドを打ちます。
ln -s /opt/cpanel/ea-php80/root/usr/bin/php $HOME/bin/php
例えば、このea-php80というのは、バージョン8.0を意味してます。
cPanelのMultiPHPマネージャーから確認できます。
この中から必要な番号に書き換えて、使ってください。
これで、今作ったbinというフォルダ内に、phpというリンクができます。
次に.bash_profileというフォルダを開きます。
中に、
PATH=$HOME/bin:$PATH
と追記して、上書き保存します。
最後に反映させるために、次のコマンドを打ちます。
source ~/.bash_profile
これで、もう一回 php -v で確認すると、変わってるはずです。
3 + 4. ComposerとNodebrewのインストール
ComposerとNodebrewをインストールします。これもやり方はこちらの記事へ。
「どのディレクトリにインストールすればいいの?」という疑問が出ると思います。
自分は、〇〇.com直下のディレクトリにインストールしました。
単純にpublic_html直下でも大丈夫なはずです。
もし、nodebrewのインストールでつまづいたら、この記事が参考になりますよ。
5. GITHUBからLaravelをデプロイ
すでにPC上、もしくは他のサーバー上にあるLaravelをGIT経由でクローンします。
で、このクローンする場所ですが、
先程も出しましたが、〇〇.comの直下です。そこにLaravelフォルダをまるっとクローンします。
クローンの仕方がよく分からんという場合は、こちらの記事
→ GITでレンタルサーバーにアップロード。やり方とコマンドを完全解説!
vendorフォルダのインストール
で、クローンだけだと、vendor フォルダがない状態なので、
Laravelフォルダ内にCDコマンドで移動して、composer install を再度やります。
composer install でエラーが出る場合
自分の場合も何度かエラーが出たんですが、
Class 'hogehoge' not found みたいなエラーが出た場合、クローン元で入れてたパッケージがたぶん入ってないんだと思います。
その場合、ネット検索して、必要なパッケージをインストールし直すと大抵直ります。上の画像なら、Jenssegersというパッケージが足りなかったので、Jenssegersの公式へ行き、そこに書かれたインストールコマンド
composer require jenssegers/mongodb を打ってインストールし、またcomposer install を再度実行した所、エラーがなくなりました。
それでも、パッケージのインストール自体が失敗したり、キャッシュ削除などを繰り返してもエラーが消えない場合は、
Laravelフォルダ直下にあるcomposer.lockをまるごと削除します
(念の為、コピーを取っておきましょう)
削除後、もう一回、composer install をやると直ります。
こちらのフォーラムに書いてあった方法です。
6. データベースと接続
で、これがちょっとXサーバーとは異なります。
まず、データベースを作成します。
カラフルボックスのCPanelにログインして、MySQLデータベースウィザードに行きます。そこで新しいデータベースを作成してください。(データベース名、ユーザーネームとパスワードをメモっておく)
次に .envファイルをクローン元からコピーしてきます。
App keyはもう一度作り直すので、空欄にしておきます。
で、DB_HOSTはlocalhost にします。
「え?localhost!? サーバーなのに!?」と心配になったと思うんですが、実際にColorfulBoxのphpMyAdminにログインしてみてください。
localhostって出てるはずです。なぜかというと、unix socketっていう接続方法だかららしいです。
で、ポートはここに出てる番号、3306。
あとは、今作成したデータベース名、ユーザーネーム、パスワードを入れて、
これで保存、FTPなどでLaravelフォルダに保存してください。
(特に.envにunix socketに関する記述は不要です。これだけで接続できます)
APP_KEY再生成
ここまでできたら、またSSHで、
php artisan key:generate
と打てば、先程消したAPP_KEYが生成されます。
Migrationする
次にphp artisan migrate と打ちます。(ディレクトリはLaravelフォルダ内)
これで、データベースにテーブルが全部できてるはずです。
後は、データベース内のデータがすでにある場合は、phpMyAdminからエクスポート→インポートでコピーしましょう。
→ phpMyAdminでデータベースの一部テーブルのみインポートのやり方。初心者でも分かるように解説。
→ phpMyAdminでデータベースを丸ごとインポートのやり方。初心者でもできるように解説。
7. シンボリックリンク作成(ここ落とし穴)
Laravel自体のインストール、データベースの設定と、一通り終わりました。
この時点で、https://〇〇.com/ laravelフォルダ名/ public とブラウザに打てば、Laravelサイトは表示されると思います。
と言っても、まだドメイン自体をColorfulBoxに紐づけてないでしょうから、
その場合は、ColorfulBoxが提供してるサブドメインか、hostsファイルをイジる事で、表示させる事ができます。
でも、500 internal server error とか 404 not found とか出るかもしれませんが、
現時点では大丈夫です。
先程の解説ブログの最後の手順「シンボリックリンクの作成」をやっていくんですが、Xサーバーと同じ書き方をしても、500番エラーでこれがうまく作動しません。
まず、シンボリックリンク作成コマンドを打ちます。
ln -s /homeからpublicまでのパス /homeから〇〇.comまでのパス
という感じにします。例えば、下のような構成なら、
ln -s /home/nebi/public_html/nebikatsu.com/nebikatsu/public /home/nebi/public_html/nebikatsu.com/
こうなります。
これでシンボリックリンクができます。
ただ、これでブラウザから〇〇.comにアクセスしても、500 internal server errorできっと表示されません。
ここで、さらに2つの.htaccessを編集する必要があります。
1. publicフォルダ内に.htaccessを設置
まず、Laravelフォルダ/publicの中に、.htaccessファイルがあるか確認してください。
「え?そんな所にないでしょ?」と思いますか?必要なんです!
無いなら作成します。
コピーしました
コピー
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</ifModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</ifModule>
これをそのまま、コピーして、.htaccess としてpublicフォルダに保存します。
こちらのサイトを参考にさせて頂きました。
2. 〇〇.com直下の.htaccessを編集する
さらに今度は、〇〇.com直下に.htaccessがあるか確認してください。
あれば、それを開いて追記。無ければ作ります。
コピーしました
コピー
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ /home/nebi/public_html/nebikatsu.com/nebikatsu/public/$1 [QSA,L]
</IfModule>
このRewriteRuleの所のパスをご自身のパスに書き換えてください。
ここ、Xサーバーだったら、publicとだけ書けばいいんですが、ColorfulBoxだと、フルパスを書かないと500エラーになります。
これで、保存し、ブラウザから〇〇.comにアクセスしてみてください。
ちゃんと表示されれば、Laravelサイトの設置完了です。
Storageフォルダがない場合
Storageフォルダが移行できてない場合は、
php artisan storage:link コマンド
をした後、StorageフォルダをFTPでアップロードすればOKです。
ColorfulBoxへのLaravelデプロイ、かなりハマりましたが、
ちゃんと使えますのでご安心を。