システム開発

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

【2025年】円安がいつまで続く?オフショア開発に与える影響

2025年8月時点におけるドル/円(USD/JPY)の為替レートは、およそ ¥146.9です。 円安傾向は続いており、過去数十年のトレンドとも重なりつつ、依然として投資・政策動向から注目を浴びています。 この記事ではそんな円安に着目してオフショア開発に与える影響を見ていこうと思います。 オフショア開発を始めたい方 社内のIT人材が不足している方 開発効率を上げたい方 これらに当てはまる方におすすめの記事となっています。これを読めばオフショア開発に円安がどう影響するのかがわかるのはもちろん、いつ始めるべきかまで丸わかりですよ。 (more…)

2 hours ago

エンタープライズ向け生成AI導入の活用事例、今後の展望

近年、生成AI(Generative AI)はビジネスの在り方を大きく変革する技術として急速に普及しています。 文章、画像、音声、コードなど、多様なコンテンツを自動生成できるこの技術は、従来の業務効率化だけでなく、新たな価値創出や顧客体験の革新にも直結します。 特にエンタープライズ(大企業)においては、膨大なデータ資産や高度なセキュリティ要件、複雑な業務プロセスを背景に、生成AIの導入が戦略的な投資対象として注目されています。 この記事ではそんなエンタープライズ向け生成AIについて具体的な活用事例や導入ステップなど徹底解説していきます。 (more…)

1 week ago

生成AIサービスの導入形態:3つのタイプと最適な選び方

近年、生成AI(Generative AI)は文章生成、画像生成、音声合成、プログラムコードの自動生成など、幅広い分野で実用化が進んでいます。 業務効率化や新しい価値創造の手段として注目され、さまざまな業種で導入が加速しています。 しかし、生成AIサービスを導入するにあたり、どのような形態で利用するかは企業の戦略や要件によって異なります。 この記事では、主な導入形態としてSaaS型の生成AIサービス、オンプレミス型生成AIサービス、API/PaaS活用型生成AIサービスに着目し、それぞれの特徴・メリット・デメリット・選び方のポイントを整理します。 生成AIサービスを導入したい方 生成AIサービスのタイプを知りたい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば生成AIサービスについてどんな特徴があるのかがわかるのはもちろん、適切な選び方まで丸わかりですよ。 (more…)

1 week ago

【2025年予測】生成AI市場展望と業務への活用動向

2025年、生成AIはビジネスと社会の在り方を大きく変えつつあります。 大規模言語モデル(LLM)、マルチモーダルAI、RAG、AIエージェントといった技術革新が進み、企業の業務効率化から新しい価値創造まで、その活用範囲は急速に広がっています。 この記事ではそんな生成AI市場について、今後の展望や業務への活用について動向などを見ていきます。 生成AIを活用したい企業の方 業務を効率化したい方 社内のIT人材が不足している方 これらに当てはまる方におすすめの記事となっています。これを読めば生成AI市場について現状と今後の展望が丸わかりですよ。 (more…)

2 weeks ago

AIエージェントの活用による弊社の成功事例をご紹介

近年、AI技術の進化とともに、業務効率化やサービス向上を目的とした「AIエージェント」の導入が急速に進んでいます。 弊社でも、この流れを受けてAIエージェントの導入を進め、多くの現場で業務の質とスピードの両立を実現することができました。 この記事では、実際に弊社が取り組んだAIエージェントの活用事例を紹介しながら、AI導入によるメリットとその可能性についてご紹介いたします。 AIエージェントが気になる方 AIエージェントの事例が知りたい方 社内の人材不足にお悩みの方 これらに当てはまる方におすすめの記事となっています。これを読めばAIエージェントの成功事例が丸わかりですよ。 (more…)

4 weeks ago

AIエージェント導入によくある課題と解決方法

近年、業務効率化や顧客対応の高度化を目的として、企業や自治体、教育機関など多くの組織で「AIエージェント」の導入が進んでいます。 AIエージェントとは、人工知能を活用して自動的に応答や処理を行うシステムの総称で、チャットボットやバーチャルアシスタント、RPA(Robotic Process Automation)などが含まれます。 しかしながら、AIエージェントの導入には多くの期待が寄せられる一方で、現場ではさまざまな課題に直面するケースも少なくありません。 この記事では、AIエージェント導入によくある課題とその解決方法について、具体的に解説していきます。 AIエージェントに興味がある方 AIエージェントの導入に不安がある方 社内の人材不足にお悩みの方 これらに当てはまる方におすすめの記事となっています。これを読めばAIエージェントの特徴がわかるのはもちろん、うまく活用するための方法もわかりますよ。 (more…)

4 weeks ago