システム開発

Heroku+Laravel+MySQLを独自ドメインで公開する

PHPの人気のフレームワークLaravelではWebサイトの管理画面を開発することができます。

開発の手順に関しては以下の記事にて具体的に紹介をしていきました。

これらは、開発後にデプロイして利用可能な状態にしていく必要があります。

そこで本記事でHeroku+Laravelこちらの記事でFirebase+Nuxt.jsのデプロイについて解説していきます。

  • Laravelを使って構築をしたい方
  • Webサイト構築の具体的な手法が知りたい方

これらに当てはまる方におすすめの記事となっています。このシリーズを読めばLaravel6とNuxt.jsで管理画面を作成することができますよ。

Herokuを使う理由

クラウドのインフラサービスといえば、Amazon Web Services(AWS)やGoogle Cloud Platform(GCP)が有名です。
しかし、スモールスタートならばHerokuも有力な選択肢の1つです。

エンジニアがほとんどインフラを意識しないで済みますし、初期コストが安く、Hobby プランなら 7ドル/月、Professional プランなら25ドル/月から使えるからです。

サービスが上手くいって売上もユーザー数も伸び始め、スケールが気になり始めたら、エンジニアを採用してAWSやGCPに引っ越せば良いのではないでしょうか。

今回の管理画面は社内で使う想定でスケールもしないため、Herokuを使うことにしました。

Herokuコマンドをインストール

まず以下のコマンドを実行してHerokuのコマンドをインストールします。

brew tap heroku/brew && brew install heroku

LaravelアプリケーションをHerokuへプッシュ

次に以下のコマンドを実行します。Herokuのログイン画面が表示されるので事前にアカウント登録は済ませておきましょう。

heroku login

ログインが完了したら下記のコマンドでLaravel用のアプリケーションを作成します。
Herokuは全体でユニークな名前である必要があるので、各自のアプリケーション名に置き換えるようにしましょう。

heroku create admin-nuxt-laravel-api --buildpack heroku/php

作成が完了したら、Heroku用のリモートリポジトリが登録されるので、
以下のコマンドを実行してLaravelのアプリケーションをHerokuへプッシュします。

git push heroku master:master

クレジットカードの登録

HerokuでMySQLを利用する場合、Clear DBというアドオンを追加する必要があります。
無料版の場合でもアドオンの追加にはクレジットカードの登録が求められるので、こちらから登録しておきましょう。

Clear DBアドオンの設定

クレジットカードの登録が完了したら、以下コマンドでClearDBをアドオンに追加します。

heroku addons:add cleardb

以下のような無料版のClearDB MySQLが追加されていればOKです。

次に以下のコマンドを実行してClearDBのデータベース情報を確認します。

heroku config | grep CLEARDB_DATABASE_URL

結果、以下のような内容が出力されるのでメモしておきましょう。

CLEARDB_DATABASE_URL: mysql://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true

次に先程メモしておいた情報を使ってLaravelのデータベース用の環境変数を設定します。

heroku config:set DB_DATABASE=[データベース名]
heroku config:set DB_HOST=[ホスト名]
heroku config:set DB_USERNAME=[ユーザー名]
heroku config:set DB_PASSWORD=[パスワード]

これでClearDBの設定は完了です。

MySQLのインデックス用の文字列長の指定

LaravelではMySQLのバージョンが5.7.7より古い場合、インデックス用の文字列長を指定しないとマイグレーション時にエラーになります。

参考: インデックス長とMySQL/MariaDB

mysql -h <ホスト> -u <ユーザー名> -p -D <データベース名>

上記のコマンドでClearDBのMySQLのバージョンを確認できますが、最新バージョンでもMySQL5.5系のため、文字列長の指定が必要になります。

app/Providers/AppServiceProvider.php を以下のように編集すればOKです。

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
//追加
use Illuminate\Support\Facades\Schema;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */    public function boot()
    {
        //追加
        Schema::defaultStringLength(191);
    }
}

DBマイグレーション反映

次に以下のコマンドで修正をHerokuに反映し、マイグレーションを実行します。

git push heroku master:master
heroku run php artisan migrate

以下のように表示されればOKです。

WebサーバーにApacheを指定

以下の内容のProcfileをルートディレクトリに追加してHerokuにプッシュします。

web: vendor/bin/heroku-php-apache2 public/

これだけでWebサーバーはApacheを利用して起動するようになります。

アプリケーションキーを環境変数に設定

Laravelではcookie等の暗号化/復号化に使われるアプリケーションキーの設定が必ず必要なので、
以下コマンドで環境変数に設定します。

heroku config:set APP_KEY=$(php artisan key:generate --show)

独自ドメインの設定

今回の管理画面の認証に利用しているCookieですが、全く異なるドメイン間では送受信が出来ません。

サブドメイン間であれば可能なため、Heroku・Firebaseのデフォルトではなく独自ドメインの設定を行う必要があります。

独自ドメインを購入

まずはお名前.com等で設定したい独自ドメインを購入します。

HerokuにAPI用のサブドメインを追加

次に作成したアプリケーションのSettings > Domains の項目から、「Add domain」をクリックすると、
以下のような画面が表示されるので、購入したドメインのサブドメインをAPI用として追加します。

以下のような項目が追加されるので、
この「DNS Target」の値をCNAMEで各ドメイン事業者のDNSレコードに設定します。

お名前.comの場合は以下のような設定になります(値はサンプル用なのでダミーです)

反映後、しばらくすると設定したドメインでアクセスできるようになります。

HerokuのdynoをアップグレードしてSSLを有効化

HerokuではSSLを有効化するには有料プランにアップグレードする必要があります。
CloudFlare というCDNを利用すれば、無料でSSLを設定する方法もあるようですが、少し手間です。

Herokuは稼働分の課金制のため、すぐにfreeプランに戻せばほぼ課金されません。アップグレードしてサクッと動作確認することをオススメします。

上記の画面で、「Change Dyno Type」をクリックします。

次の画面で表示されるHobbyプランを選択してSaveします。

アップグレード後にSettings > SSL Certificates の項目を確認すると、設定が有効になっています。
証明書はLet's Encryptを利用しており自動で期限の更新も行ってくれます。

サイトを確認

設定が完了したら、https://api.独自ドメイン にアクセスしてみましょう。
SSLが有効になった状態で以下のような画面が表示されればOKです。(確認できたらDynoをFreeに戻すのを忘れずに)

おわりに

今回はHeroku+Laravel+MySQLを独自ドメイン(SSL)で公開まで行いました。
ほとんどコマンドとGUIからの操作だけでデプロイまで出来てしまいましたね。

こちらの記事で、Firebase+Nuxt.jsのデプロイを行いLaravel(API)と連携する手順を紹介しています。

合わせて確認して下さい。


本日紹介したようなものを外注してみるのはいかがでしょうか。 dehaソリューションズではオフショア開発によって低コストで迅速な開発をサポートしています。

Laravelに関して詳しくお話を聞きたい方、開発相談や無料お見積りをしたい方はこちらからご気軽にお問い合わせください。

▼ dehaソリューションへの簡単見積もりの依頼はこちら

Mai Tran

Recent Posts

CRMのタイプ別?特徴や基本機能を紹介

企業が顧客関係を管理し、ビジネスの成長を促進するために欠かせないツールのひとつがCRM(Customer Relationship Management)です。 CRMは単なる顧客管理システムではなく、営業、マーケティング、カスタマーサポートなど多岐にわたる機能を提供します。 CRMにはいくつかのタイプがあり、それぞれの目的や特徴が異なります。 そこで記事では、クラウド型CRM、オンプレミス型CRM、自社向け開発型CRMの種類と特徴、基本機能について詳しく解説します。 CRMの導入を検討されている方 業務の効率化を図りたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばそれぞれのCRMの特徴がわかるのはもちろん、導入のメリットなども丸わかりですよ。 1. クラウド型CRM クラウド型CRMは、インターネットを通じて提供されるCRMで、場所やデバイスを問わず利用できる点が最大のメリットです。 導入コストが低く、更新やメンテナンスもプロバイダー側で対応してくれるため、中小企業から大企業まで幅広く利用されています。 基本機能①アクセスの柔軟性 クラウド型CRMは、インターネット環境があれば世界中どこからでも利用できます。…

4 hours ago

2025年の崖:その後の課題と企業が取るべき対策

「2025年の崖」とは、2018年に経済産業省が発表した「DXレポート」において示された概念です。 2025年には企業の基幹系システムの約6割が導入から21年以上経過し、適切な対策を講じなければ年間最大12兆円の経済損失が発生する可能性があると指摘されました。 この警鐘を受け、多くの企業がレガシーシステムの刷新やERP(Enterprise Resource Planning)の導入を進めました。 しかし、2025年を迎えた現在、単なるシステムの更改では企業の競争力向上には不十分であることが明らかになっています。 この記事では、「2025年の崖」を乗り越えた企業が直面する新たな課題と、それに対する具体的な対策について詳しく考察します。 2025年の崖に対する具体的な課題や解決策を知りたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば2025年の崖が現状どのような状況なのかやその対策などが丸わかりですよ。 (more…)

5 days ago

MESとERFの違い?

製造業において、生産管理の効率化は競争力を維持するために欠かせません。 その中でも、MES(Manufacturing Execution System)とERF(Enterprise Resource Planning for Factories)は重要な役割を果たします。 この記事では、そんなMESとERFについて、それぞれのシステムの概要、特徴、利点、そして違いについて詳しく解説します。 MESとERFについて気になる方 製造業の方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばMESとERFについてそれぞれの特徴がわかるのはもちろん、も分かりますよ。 (more…)

1 week ago

MESシステムとは?特徴、役割やメリットを紹介

MESシステムは製造業において、生産現場の管理などを行うシステムです。MESシステムを導入することで、生産効率や品質の向上が期待されます。 本日はそんなMESシステムについて、どのような特徴があるのかやその役割やメリットなど徹底解説していきます。 MESシステムが気になっている方 製造業の方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばMESシステムについて詳しくなるのはもちろん、導入の際に気をつけるべきことまで丸わかりですよ。 (more…)

1 week ago

【2025年版】オフショア開発で発生しがちな認識のズレを埋めるプロトタイプツール7選

オフショア開発は安価で高品質の開発ができる開発手法ですが、コミュニケーションの問題が発生しがちです。 そんなコミュニケーションロスの問題を解決するツールとして、今回紹介したいのがプロトタイプツールです。 プロトタイプツールを利用することで、会話型のコミュニケーションから視覚的なコミュニケーションに移行することができ、よりわかりやすく情報を共有することができるのです。 この記事ではそんなプロトタイプツールのおすすめ7つを紹介していきます。 オフショア開発に興味がある方 プロトタイプツールを詳しく知りたい方 オフショア開発のコミュニケーションの問題に悩まれている方 これらに当てはまる方におすすめの記事となっています。これを読めば、オフショア開発のコミュニケーション問題を解決する方法がわかりますよ。 (more…)

2 weeks ago

2025年注目のモバイルアプリ開発フレームワーク 5選

スマートフォン市場がますます進化する中で、モバイルアプリの開発技術も飛躍的に向上しています。 特に、クロスプラットフォーム開発の重要性が増し、開発スピードやコスト削減を実現するフレームワークが次々と登場しています。 この記事では、2025年に注目されるモバイルアプリ開発フレームワークを5つ紹介し、それぞれの特徴やメリットを詳しく解説します。 モバイルアプリ開発を行いたい方 モバイルアプリ開発フレームワークについて最新情報を知りたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めばモバイルアプリ開発のフレームワークについて注目のものが何なのか丸わかりですよ。 (more…)

2 weeks ago