ConoHa WINGでLaravelアプリケーションを公開する【PHP8・Laravel8.74.0】

今回はConoHaWINGでLaravelアプリケーションを公開するっていうことをやっていきたいと思います。ただ情報があまりなくて手探り状態でやるっていうのが正直なところ。

無駄な部分もあるかもしれないけど、ConoHaWINGで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

〇〇の部分は以下などから見ることができます。

.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アプリケーションを公開するっていうことをやってみたけど、一応サイトを表示することはできました。何かインターネットに公開したいものがある時には使ってみるといいかもしれませんね。