今回はmixhostにLaravelアプリケーションをデプロイして動かすっていうことをやっていきたい。この前mixhostにLaravelをインストールするっていうことをやったんだけど、かなり簡単にできました。
Laravelのプロジェクトが作られるので、インストールしたらもうLaravelの初期画面を見ることができました。ただデータベースと繋げて色々やろうとするとmixhostでデータベースを作成してっていう作業が必要になってきます。
そこで今回はデータベースと繋いでLaravelアプリケーションを動かすっていうことをやっていきます。
mixhostにデプロイするLaravelアプリケーション
エックスサーバーやConoHa WINGでもLaravelアプリケーションを動かしてみるっていうことをやったりしたんだけど、そのときと同じでデプロイするのはデータベースからデータを取得して表示するだけのアプリケーション。
(コーラ・水なんかの文字列をデータベースから取得して表示しています)
環境はdockerで作って使っているimageは以下。
- nginx
- php:8-fpm
- mysql5.7
dockerの中入って確認してみるとphpのバージョンは8.1.0、Laravelは8.74.0です。これをmixhostで動かそうっていうのが今回の記事の内容です。
データベースと繋いでLaravelアプリケーションを動かしたいっていう方は参考にしてみてください。
mixhostでLaravelアプリケーションを動かす流れ
今回のmixhostでLaravelアプリケーションを動かす流れは以下。
- ドメインを追加
- ローカルにあるLaravelアプリケーションのファイル・フォルダをFTPソフトでmixhostのサーバーにアップロード
- データベースの作成
- コード上のデータベース接続情報を作成したデータベースに合わせる
- 必要なデータをデータベースに追加
変なエラーが起きなければそんなに難しいことはないと思います。
mixhostのLaravelのインストール機能は使わないの?っていうところだけど、使わなくてもファイルとフォルダ配置すれば動くんじゃないかなと思うから、使わないでやってみます。
Laravelアプリケーションを公開するドメインを追加する
ドメインを追加する方法は簡単で、コントロールパネルのアドオンドメインから行うことができる。
ドメインを追加してファイルマネージャーを見てみると追加したドメインのフォルダが作成されています。
このフォルダにLaravelアプリケーションのファイルたちを突っ込んでいきます。
ローカルにあるLaravelアプリケーションのファイル・フォルダをFTPソフトでmixhostのサーバーにアップロード
ドメインを追加してそのドメインのフォルダが作られたら、そのフォルダに作成したLaravelアプリケーションのファイルたちを追加していきます。FTPソフトを使ってやっていきますよ。
FTP接続情報の確認
mixhostへのFTP接続情報は【mixhost】 レンタルサーバーアカウント設定完了のお知らせっていう開設した時に送られてきたメールに書かれている。
この情報を入力してFTP接続を行うことができる。FTPソフトはいろいろあるけど、cyberduckを使ってやります。SFTPの方が安全なのでSFTP使える人はSFTPでやりましょ。
メールに書かれているFTP情報を入力して接続します。そしたらpublic_html/ドメイン名のフォルダにLaravelアプリケーションのファイルたちをアップロードします。
これでアップロードが完了したら次の段階に進もう。
mixhostのPHPのバージョンを変更する
これでアクセスすると場合によってphpバージョンのエラーが起きます。
どうやらphpのバージョンが8.0.2以上じゃないとcomposerが使えないようですね。環境違うとこういうバージョン違いのエラーとかまあ起きてしまうよなあ・・・
PHPのバージョンはMultiPHPマネージャーから変更することができる。
バージョンを変更したいドメインを選んで変更しよう。
ドメイン毎にPHPのバージョン変更できていいですね。ConoHa WINGだとドメイン毎にはできないから嬉しい。エックスサーバーはドメイン毎のPHPバージョン変更できる。
これでさっき出たエラーは消えると思います。ただちゃんと画面はまだ表示されないと思うから次はデータベースを作成して繋げよう。
データベースを作成する
Laravelアプリケーションが接続するデータベースを作ります。mixhostのcPaneからMySQLデータベースを選択。
新しいデータベースを作成します。
ユーザーも作成しておこう。
ユーザーをデータベースに追加して権限も与えておきます。
これでデータベースは作成できたから、Laravelから今作成したデータベースにアクセスできるようにコードをいじる。
コード上のデータベース情報を編集する
.envでDB情報を管理しているので、作成したデータベースにアクセスできるように情報を書き換えます。
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=作成したデータベース名
DB_USERNAME=作成したユーザー名
DB_PASSWORD=作成したパスワード
Terminalからmigrateする
これでうまく接続できればテーブルを作成することができるので作成しましょう。Terminalから実行します。SSH接続して実行でもいいですね。
対象のドメインフォルダまで移動してphp artisan migrateするとテーブルが作成されました。
データベースにデータを入れる
テーブルを作成したら画面に表示するためにデータを入れておきます。Seederとか用意していないから直接突っ込む。phpMyAdminからレコードを挿入しておこう。
これで表示するデータはできた。
ドメインにアクセスして表示を確かめる
アクセスしてみるとこんな感じ。
ちゃんと表示できましたね。/publicにアクセスしないと目的のページが表示されなくて嫌なので、.htaccessをちょっといじります。以下を追加する。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [QSA,L]
</IfModule>
これでとりあえずLaravelアプリケーションを動かすっていうことは確認できた。
まとめ - mixhostでLaravelアプリケーションを動かす
mixhostでLaravelアプリケーションを動かすっていうことをやってみたけどできましたね。途中エラーでうまくいかなかったりもしたけど、最後までやってみるとちゃんと画面表示してくれました。(途中エラーログとかみてみたけど何も出ていなかったりしてちょっと謎な場面もあった)
作成したものを突っ込んでDB接続をうまくやれば動くと思います。mixhostはコントロールパネルにTerminalが入っていたりして便利ですね。プログラミングちっくなことも少し試したいならmixhost良さげです。