とりあえずログイン
heroku login
プロジェクトを作る(自分はbias-check)という名前でプロジェクトを作りました。その都度変えて実行して下さい。あと、実行したいディレクトリで以下コマンド実行します。
heroku create bias-check --buildpack heroku/php
Laravelプロジェクトがあるとしてコミットします。
git add .
git commit -m "first-commit"
これ結構大事なんですが、リモートリポジトリを追加して下さい。
git remote heroku https://git.heroku.com/bias-check.git
一応 git remote
しておきます。
git remote
heroku https://git.heroku.com/bias-check.git (fetch)
heroku https://git.heroku.com/bias-check.git (push)
いいと思います。
クレジットカードの登録
HerokuでMySQLを利用する場合、Clear DBというアドオンを追加する必要があります。
無料版の場合でもアドオンの追加にはクレジットカードの登録が求められるので、以下URLから登録しておきましょう。
登録が完了したら以下を実行します。無料枠ですね。
heroku addons:add cleardb
Dashboard/apps
の一覧を確認すると以下が表示されます。
データベースの接続先を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=[パスワード]
MySQLのインデックス用の文字列長の指定
よくわかんないですけど、これやんないとダメみたいです。
バージョン確認すると5.5系なので文字列長の指定が必要になります。以下のコマンドでは自分の場合zsh: command not found: mysql
となりました、、
mysql -h <ホスト> -u <ユーザー名> -p -D <データベース名>
兎にも角にも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);
}
git push heroku master:master
heroku run php artisan migrate
とりあえずこれでmigration完了。
続きましてwebサーバーの設定となります。
Apacheの設定
herokuでApacheを利用するにはProfileが必要となります。
ファイルはプロジェクト直下に配置するといいと思います。
Procfile
web: vendor/bin/heroku-php-apache2 public/
※これだけでapacheの設定ができるのでとても簡単なのでいいですね。詳細は割愛します。
しかしアクセスするもこのままだとファイルを表示してくれません。
要約すると管理者はheroku logs --tail
で確認してみろよーて事でしたので、
早速確認してみるとheroku-php-apache2
が無いという事らしい。
bash: vendor/bin/heroku-php-apache2: No such file or directory
考えてみるとvendorフォルダって.gitignoreでgitの管理下に置かれないからpushできないじゃん、、
pushされて無いってことはないのか、無いなら作ってしまえばいいですねはい。
とりあえずherokuコマンドcomposer
を実行すればvenderが作られるなり更新するなりするだろうという希望的観測です。
heroku run composer update
composer.jsonのconfig内に以下があるか追加されているか確認して下さい。
"bin-dir": "vendor/bin",
Laravelのダッシュボードを確認すると追加されているのもわかりますし、接続もできます。( Laravelのwelcomeページかっけー)
apache2はclear dbの下らへんにあります。
デプロイ方法は以上です。エラーが出ると面倒ですが慣れれば簡単ですね。vpsなどと違って楽でいいです。