Laravelをherokuにデプロイしてみる(無料)。herokuはインストールされている前提。

とりあえずログイン

```vim
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``　しておきます。


```vim
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から登録しておきましょう。

https://dashboard.heroku.com/account/billing


登録が完了したら以下を実行します。無料枠ですね。

```
heroku addons:add cleardb
```

``Dashboard/apps`` の一覧を確認すると以下が表示されます。

![スクリーンショット 2021-07-09 2.41.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/826735/9109f13c-61f2-e9ce-df0d-d1e0f2b5533b.png)


##データベースの接続先をClearDBに指定

データベース情報を確認します。
※これ結構大事!!

```vim
heroku config | grep CLEARDB_DATABASE_URL
```

以下表示されますのでメモりましょう。

```
CLEARDB_DATABASE_URL: mysql://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true
```

環境変数を設定します。

```vim
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
 ``となりました、、

```vim
mysql -h <ホスト> -u <ユーザー名> -p -D <データベース名>

```

兎にも角にもapp/Providers/AppServiceProvider.php を以下のように編集すればOKです。
追加すれば良いようのなので実行します。

```php
<?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);
    }

```


```vim
git push heroku master:master
heroku run php artisan migrate
```

とりあえずこれでmigration完了。

続きましてwebサーバーの設定となります。

##Apacheの設定
herokuでApacheを利用するにはProfileが必要となります。
ファイルはプロジェクト直下に配置するといいと思います。

![スクリーンショット 2021-07-09 3.17.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/826735/880b286f-e6ea-e83e-db67-3078853a4680.png)


Procfile

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

※これだけでapacheの設定ができるのでとても簡単なのでいいですね。詳細は割愛します。


しかしアクセスするもこのままだとファイルを表示してくれません。

![スクリーンショット 2021-07-08 23.02.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/826735/1ef7b2ca-6af5-6f76-2c6f-a2215fe29d99.png)



要約すると管理者は``heroku logs --tail``で確認してみろよーて事でしたので、
早速確認してみると``heroku-php-apache2``が無いという事らしい。

```vim
 bash: vendor/bin/heroku-php-apache2: No such file or directory
```
考えてみるとvendorフォルダって.gitignoreでgitの管理下に置かれないからpushできないじゃん、、
pushされて無いってことはないのか、無いなら作ってしまえばいいですねはい。
とりあえずherokuコマンド``composer``を実行すればvenderが作られるなり更新するなりするだろうという希望的観測です。

```vim
 heroku run composer update
```

composer.jsonのconfig内に以下があるか追加されているか確認して下さい。

```json
"bin-dir": "vendor/bin",
```

 Laravelのダッシュボードを確認すると追加されているのもわかりますし、接続もできます。( Laravelのwelcomeページかっけー)


![スクリーンショット 2021-07-09 3.47.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/826735/7cbdfc9d-dcf1-f63c-874b-dc82c29b4925.png)


apache2はclear dbの下らへんにあります。

![スクリーンショット 2021-07-09 3.48.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/826735/5260294b-f0e8-33a7-806a-aefb68af6817.png)


デプロイ方法は以上です。エラーが出ると面倒ですが慣れれば簡単ですね。vpsなどと違って楽でいいです。