今回はConoHaWINGでLaravelアプリケーションを公開するっていうことをやっていきたいと思います。ただ情報があまりなくて手探り状態でやるっていうのが正直なところ。
無駄な部分もあるかもしれないけど、ConoHaWINGでLaravelで作成したアプリケーションを公開したい方は参考にしてみてください。
- ConoHa WINGでデータベースの作成
- LaravelアプリケーションのDB接続情報の変更
- ローカルのLaravelアプリケーションをConoHa WINGにアップロード
- Laravelアプリケーション設定
ローカルでLaravelアプリケーションを作成して、それをConoHaWINGにアップロードして公開するっていう流れでやっていきます。
使用するConoHa WINGのプラン
今回使うConoHa WINGのプランはWINGパックのベーシックプラン。
ConoHaWINGは初期費用もなく使えるのがいいですよね。ちなみに時間単位で使うことのできる通常プランもあるから、サクッと試したいぐらいだったらそっちの方が良いかもしれない。
PHPのバージョン確認
Laravel使うにはPHPが必要だからPHPの使えるバージョンを確認しておこう。管理画面からバージョンを切り替えることができる。
ただ注意点としてPHPのバージョンの切り替えは各ドメイン単位じゃなくてサーバー単位で行われるから、全てのドメインに影響がある。
サーバー単位での切替になるため、サーバーに登録されたすべてのドメインに影響があります。
今回はPHP8.0でやりたいからPHPのバージョンは8.0にしておきます。
Laravelアプリケーションをローカルで作成する
まずはローカルでLaravelアプリケーションを作成します。Dockerを使って作るけど、nginxとphp、mysqlの構成でいきます。
phpのimageはphp:8-fpm、mysqlはmysql:5.7です。立ち上げたDockerコンテナの中に入ってLaravelのバージョンを確認すると8.74.0でした。
- Webサーバー・・・nginx
- データベース・・・mysql5.7
- phpのimage・・・php:8-fpm
- Laravel・・・8.74.0
アプリケーションは超適当で/drinksページでデータベースのdrinksテーブルから飲み物の名前を取得して表示するっていうだけのやつ。
こんなゴミみたいなアプリケーションを公開することはないだろうけど、今回はLaravelアプリケーションをConoHaWINGで動かすっていうのが目的だからこれでいきます。
データベースとユーザーの作成
ConoHaWINGの管理画面からデータベースとユーザーを作ることができるから両方作成しましょう。
DB接続情報の変更
今作ったデータベースに接続するようにコードも書き換えないといけないので書き換えましょう。今回は.envで接続情報を管理しているので、ConoHaWINGで作成したデータベースに合うように値を変更します。
DB_CONNECTION=mysql
DB_HOST=〇〇.conoha.ne.jp
DB_PORT=3306
DB_DATABASE=作成したデータベース名
DB_USERNAME=作成したユーザー名
DB_PASSWORD=作成したパスワード
ConoHaWINGにSSH接続する
SSH接続したいのでConoHaWINGの管理画面からSSH Keyを取得します。
取得したら秘密鍵がダウンロードされるからそれを使ってSSH接続する。SSH接続で使う情報はKeyを作成すると見ることができる。
これらの情報を使ってSSH接続できるか確認してみよう。
$ chmod 400 ダウンロードした秘密鍵のパス
$ ssh ユーザー名@ホスト名 -p ポート番号 -i ダウンロードした秘密鍵のパス
実行してConoHaWINGのサーバーに入れたらOKです。
FTPソフトでアプリケーションをConoHaWINGにアップロードする
今回はCyberduckを使ってConoHaWINGにアプリケーションのコードをアップロードするけど、使い慣れているものでOKです。
ConoHaWINGのCyberduckの設定に設定方法が書かれているけど、FTP接続だけしか書かれていないですね。。SFTPでやります。
接続したらLaravelのアプリケーションを公開したいドメイン配下にアップロードしておく。
migrateしてテーブル作成
アップロードしたらSSH接続してmigrateを実行します。アップロードしたLaravelアプリケーションのディレクトリでphp artisan migrate。データベースの接続情報が合っていればmigrateされると思います。
migrateを実行したら必要なデータはseederやphpmyadminから入れておくといいでしょう。
シンボリックリンクを貼る
そのままだと作成したアプリケーションの画面が表示されないので、シンボリックリンクを貼っておきます。
$ ln -s /home/〇〇/public_html/ドメイン名/src/public /home/〇〇/public_html/ドメイン名/public
〇〇の部分はConoHa WINGの以下の画面から見ることができます。
.htaccessを編集する
アクセスした時にLaravelで作成したアプリケーションのページを表示させたいので、.htaccessを少し編集します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [QSA,L]
</IfModule>
アプリケーションの.htaccessのmultiviews部分をコメントアウト
Laravelで作成したアプリケーションのpublicディレクトリ配下に.htaccessがあると思うんだけど、以下の部分をコメントアウトしないとエラーが起きて表示できませんでした。
#以下をコメントアウト
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
うーんエックスサーバーでやった時にはこんなことしなくても動いた記憶があるんだけどなあ。
ドメインにアクセスして確かめる
これでドメインにアクセスしてみると作ったものが表示されました。
データベースからも情報を取得して表示できていますね。
ConoHaWINGでもLaravelアプリケーションを公開できた
ConoHa WINGでLaravelアプリケーションを公開するっていうことをやってみましが、無事できましたね。
今回やったことは以下です。
- ConoHa WINGでデータベースの作成
- LaravelアプリケーションのDB接続情報の変更
- ローカルのLaravelアプリケーションをConoHa WINGにアップロード
- .htaccessの編集
- Laravelアプリケーション設定
ちょっと分かりづらいのが.htaccessのあたりかなと思います。普通にアプリケーション作ったらApacheやNginxの設定でLaravelアプリケーションと繋げると思うのでこんなことはしないですよね。
ただレンタルサーバーの場合はWebサーバーの設定をいじることはできないので、.htaccessで向き先を変更しています。
ちょっと面倒な部分もあるけど、もしLaravelアプリケーション公開してみたかったらConoHa WING使ってみるといいですよ。
期間指定して契約するのが怖いっていうのであれば、通常料金プランを使うといいです。通常料金プランであれば少し使うぐらいなら数十円とかで試すことができます。