前提
すでにローカルでLaravelは構築されていること
まず以下の3つがポイント
- Procfileを作る
- AppServiceProvider.phpにSchema::defaultStringLength(191);の追記
- heroku への DB情報追加の際にタイポミスがない事
###プロジェクトファイルのPathに移動する(ターミナルで実施),Dockerの外で実施
$ cd (プロジェクトのディレクトリ)
###heroku CLI をインストール
参考:https://devcenter.heroku.com/articles/heroku-cli
brew tap heroku/brew && brew install heroku
エラー
-Error: The following formula cannot be installed from bottle and must be
built from source.
heroku
Install the Command Line Tools:
xcode-select --install
エラー文の通り以下を実施し
xcode-select --install
-再度以下を実施し、通過!!
brew tap heroku/brew && brew install heroku
インストールできたら
heroku login
ブラウザが立ち上がりログインが求められる
デプロイしたいフォルダに移動して
次に
heroku create あなたのアプリ名 --buildpack heroku/php
CLI上にもアプリができます。
次にherokuとローカルを紐付けます。
heroku git:remote -a pt-app1
一旦今までの修正をherokuにpushします
git add .
git commit -m "make it better"
git push heroku master
次に開発してるアプリのディレクトリーの/直下にProcfileを作成
-touch Procfile
以下をProcfileに追記します。
web: vendor/bin/heroku-php-apache2 public/
次にvarcharの文字数を191文字にする
Procfileを追加し、herokuへpush...の前に、データベースのvarchar型の191byteに変更します。
herokuの無料プランでは、通常の文字数である255byteだと規定のデータ量を超えてしまい、マイグレーションする際にエラーが発生してしまいます。
app>Providers直下にあるAppServiceProvider.phpを以下のように編集します。
app\Providers\AppServiceProvider.php
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
public function boot(){
Schema::defaultStringLength(191);
}
git add -A .
git commit -m "Add Procfile + varchar = 191"
git push heroku master
もしここでエラーが出たら、
Procfileの追加か、
Schema::defaultStringLength(191);
の変更を一つづ git push heroku masterすると分かりやすい。
次に
データベース情報を確認
クレジットカード登録が必須です。
heroku addons:add cleardb
heroku config | grep CLEARDB_DATABASE_URL
CLEARDB_DATABASE_URL: mysql://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true
DB情報をheroku CLI https://dashboard.heroku.com/apps
に入力。ターミナルからでも可能。(私はターミナルでsetした情報がCLIに反映されていなかったので、どちらも確認するといいかもしれません)
以下実行
heroku config:set DB_DATABASE=あなたの DB名
heroku config:set DB_HOST=あなたのホスト名
eroku config:set DB_USERNAME=あなたのユーザー名
heroku config:set DB_PASSWORD=あなたのパスワード
heroku config:set APP_KEY=$(php artisan key:generate --show)
私はこれが記入されなかった。※1
$ heroku config:set APP_ENV=heroku
$ heroku config:set LANG=ja_JP.UTF-8
$ heroku config:set TZ=Asia/Tokyo
※1 heroku config:set APP_KEY=$(php artisan key:generate --show)
が通らない時は、
.env ファイルの
APP_KEY をCLIに記入する
ターミナルでherokuに追加した DB情報を確認するには
heroku config
CLEARDB_DATABASE_URLの情報とherokuへの入力内容が一致していたら
マイグレーションを実行
heroku run php artisan migrate
ここでuserがsqlに「すでにありますよのエラーが発生
heroku run php artisan migrate:fresh
マイグレーションに成功したら以下を実施
heroku open
herokuへのアップデート
次からリリースのたびにherokuにソースコードやDBをpushしたい場合は
# ソースコードをあげる
$ git add -A .
$ git commit -m "コミットメッセージ"
$ git push heroku master
# DBに変更があった場合
# マイグレーションとシーディングを実行
$ heroku run php artisan migrate --seed
補足
途中 composer updateをしてしにかけました
https://qiita.com/natsukiiiii/items/c9bbe0aeb7cbd1ad159e
参考
https://qiita.com/yukibe/items/5c1910e259ff4e6498db
https://qiita.com/youth_case/items/fb821dcb351c7542030f