見出し画像

Laravel を Heroku にデプロイする方法

最近Laravelを利用することが多くなってきました。個人でもチームでも。
そこでせっかく作ったものはデプロイしてみたいと思い、今回はHerokuにアップする方法を説明します。

まずは前提条件。

前提
・すでにローカルでLaravelは構築されていること
(Laravelのローカルでの構築手順はtadakenさんのこちらのブログが詳しいです。)
・Laravelのバージョンは 5.7.20 です
・Herokuのアカウント登録済み
こちらよりアカウント登録をお願いします。)

次に今回の目次です。

それでは実際に行なっていきましょう。

Heroku CLIインストール

まずはHeroku CLIをインストールします。こちらよりインストールできます。
またはmacの場合、下記コマンド実行でインストール可能です。

brew install heroku/brew/heroku


Herokuに新規アプリ作成

Herokuに新規アプリを作成します。まずはHerokuにログインします。下記コマンド実行します。

heroku login

すると、下記のようなメッセージが表示されます。

heroku: Press any key to open up the browser to login or q to exit: 

これは、「q」以外のコマンドをクリックするとブラウザでherokuのページが開くという意味です。Enterをクリックします。すると、下記のようなページが表示されます。

画像1

「Log in」をクリックします。すると、下記画面が表示されログインされます。

画像2

一旦ターミナルに戻ります。すると下記のように表示されていると思います。

Logging in... done
Logged in as [Herokuに登録したメールアドレス]

これでHerokuにログインできているので、新しいアプリを作成します。下記コマンド実行します。

heroku create

すると、下記のように表示されます。

Creating app... done, ⬢ [herokuアプリケーション名]
https://[herokuアプリケーション名].herokuapp.com/ | https://git.heroku.com/[herokuアプリケーション名].git

これで新規アプリが作成されました。こちらのURLにアクセスすると、下記のようにHerokuのデフォルト画面が表示されます。

画像3


PostgreSQLの追加

次にPostgresSQLを追加します。PostgresSQLはHerokuのダッシュボードから追加していきます。下記よりHerokuダッシュボードにログインします。

ログインすると、下記のようにアプリ一覧が表示されます。先ほど作成したアプリをクリックします。

画像4

次に、メニュータブより「Resources」をクリックします。

画像5

「Add-ons」の検索ボックスに「postgres」と入力すると「Heroku Postgres」が表示されるので、こちらを選択します。

画像6

すると、下記モーダルが表示されるので、「Hobby Dev - Free」が選択されていることを確認し、「Provision」をクリックします。

画像7

すると、「Add-ons」に「Heroku Postgres」が追加されています。

画像8

以上でデータベースのアドオンが完成です。

次に、データベース接続の設定を行います。下記コマンドを実行します。

heroku config:get DATABASE_URL

こちらはデータベースの接続情報を確認するコマンドです。(Heroku Postgres を追加した時点で、接続情報は設定されています)
こちら実行すると、下記のように表示されます。

postgres://aaabbb:cccddd@ec2-abc-def-ghi.compute-1.amazonaws.com:5432/xyz123

こちらがデータベースの設定内容になります。ここにデータベース名データベースユーザ名パスワード等が記載されています。

それぞれをconfig:setコマンドにてセットしていきます。下記実行します。

heroku config:set DB_CONNECTION=pgsql
heroku config:set DB_HOST=ec2-abc-def-ghi.compute-1.amazonaws.com
heroku config:set DB_DATABASE=xyz123
heroku config:set DB_USERNAME=aaabbb
heroku config:set DB_PASSWORD=cccddd

以上でデータベースの設定は完了です。


Herokuにデプロイする

それではいよいよHerokuにデプロイします。
まず Procfile という 設定ファイルを作成します。Laravelのルートディレクトリに移動し、下記実行します。

vi ./Procfile

するとファイル作成画面になるので、下記記入し保存します。

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

次にファイルをHerokuにアップします。HerokuへのアップロードはGitを利用します。

Laravelルートディレクトリにて、下記実行します。

git init
heroku git:remote -a [herokuアプリケーション名]
git add .
git commit -m "first commit"
git push heroku master

これでファイルがHerokuにアップロードできました。

次にAPP_KEY の設定を行います。下記実行します。APP_KEYはセキュリティ等の機能で暗号化に利用される設定項目です。
(APP_KEYがないと Laravel は動かないようです。)

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

最後にデータベースのマイグレーションを行います。下記実行します。

heroku run "php artisan migrate"

途中で下記のように聞かれますので、 「yes」と入力しEnterをクリックしてください。

Do you really wish to run this command? (yes/no) [no]:

マイグレーションが開始します。マイグレーションが終了したら完成です。


デプロイしたサイトを確認する

それではデプロイしたサイトを確認してみましょう。下記実行します。

heroku open

すると、ブラウザが開きサイトが表示されます。

以上で対応完了です。お疲れ様でした!


おまけ:ファイル更新時の対応方法

今後ローカルで開発したファイルをHerokuにアップした場合は、GitにてプッシュすればOKです。下記実行にてHerokuにアップされます。

git add .
git commit -m "メッセージ"
git push heroku master

以上です。


注意1:複数アプリケーション利用の場合

複数Herokuのアプリケーションを持っている方は、アプリ切り替えのオプションを指定しる必要があります。

heroku コマンド --app アプリ名

例として、コマンドは「heroku open」アプリ名を「sample-app」とする場合は下記となります。

heroku open --app sample-app


以上です。

読んでいただきありがとうございます。