Laravel Vue で作ったサイトをHeroku デプロイ

  • heroku

前提

github リポジトリで管理済み、HerokuCli使える状態
プロジェクトフォルダの直下にProcfileファイルを作る  

touch Procfile
(下記を貼り付ける)
 web: vendor/bin/heroku-php-apache2 public/ 
 

Herokuにlogin

//herokuログイン
$ heroku login

//Herokuアプリ追加
$ heroku create {アプリケーション名}
※アプリケーション名を入れなければ自動で付けられます(後でも変更可能)

//buildpack入れる
$ heroku buildpacks:set heroku/php -a {アプリケーション名}
$ heroku buildpacks:add heroku/nodejs -a {アプリケーション名}

//Heroku APIキー生成(またはHerokuのSettingsに直接APP_KEYを設定)
$ heroku config:set APP_KEY=$(php artisan key:generate --show) -a {アプリケーション名}

Mysqlを使えるようにする

1 プロジェクトフォルダ側
app\Providers\AppServiceProvider.phpに以下を追加する。

use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}

2 heroku

//herokuのアドオンにcleardbを作成する
$ heroku addons:add cleardb

$ heroku config | grep CLEARDB_DATABASE_URL

# 結果: メモしよう
CLEARDB_DATABASE_URL: mysql://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true

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

その他もろもろのenvの設定はコマンドより、HerokuのSettingsからの方が楽だ!!

Github連携する(自動)

Gitリポジトリへソースコードをpushすることでアプリケーションを deployできる

ダッシュボードの「Deploy」→Deployment method欄
Heroku Gitは git push heroku master で deployする時の状態なので
「GitHub」をクリック、Connect to GitHub」ボタンをクリック。GitHubでの認可画面で「Authorize heroku」→nameへ入力し「Search」→Automatic deploys

ちなみに下記でもHerokuへのデプロイが開始される

$ heroku git:remote -a herokuのアプリケーション名
//以下が表示
set git remote heroku to https://git.heroku.com/herokuのアプリケーション名.git
//以下のGitコマンドを実行
$ git push heroku master

実行

//migrate
$ heroku run php artisan migrate
// Class 'Faker\Factory' not found エラーが出たとき(fakerを使用している場合)fzaninotto/fakerをインストールする
$ composer require fzaninotto/faker
(本番環境備忘録)
//デバッグモードを無効に
$ heroku config:set DEBUGBAR_ENABLED=false
//production modeにする
$ npm run prod

その他Herokuコマンド

//herokuログイン
$ heroku login
//Herokuアプリ描画
$ heroku open -a アプリケーション名 #App指定する場合
//追加したaddon一覧
$ heroku addons
//デプロイ時のログをターミナル上に表示
$ heroku logs
//heroku上のデータベースを設定
$ heroku run コマンド
//アプリを削除する(確認なし)
$ heroku apps:destroy --app アプリ名 --confirm アプリ名

スリープ対策

定期的に自動でサイトにアクセスしてくれる(無料) UptimeRobot

Home