0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravelで作ったAPIを外部サーバーにおいて公開する話

Posted at

#はじめに
なぜ開発中のAPI外部サーバーにおいて公開することにしたのか。
なぜなら遠隔でフロントとバックの開発を同時並行で円滑に進めていくためです。

しかし、外部サーバーなど一度も使ったことがなかったのでいろいろ大変でした。

#welcome画面を表示させるまで
Procfileを作成します。

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

intlを有効化します。

アプリのホームディレクトリ
$ composer require ext-intl:*

ここからherokuの環境変数を設定していくわけなんですが、ここでまず詰まりました。

$ heroku config:set
 ›   Error: Missing required flag:
 ›     -a, --app APP  app to run command against
 ›   See more help with --help

はい、configを開こうとするとエラーが出ました。

$ heroku git:remote -a アプリ名

今までgithubと連携してそこからデプロイをしていたのですが、それが原因だったみたいです。herokuに直接デプロイすることで解決しました。
(他にも解決法はあると思います)

さあ、これでやっとwelcome画面が表示されるようになりました。

#DB問題
ローカルではsqliteを使って開発していました。
herokuについて何も知らなかったのでそのままデプロイしたら使えるのだろう、と甘くみていました。
しかーし、何を試してもAPIを使おうとするとエラーを吐かれてしまいます。

なぜなら、答えは簡単「herokuはsqliteに対応していない」
herokuのDBはpgsqlだということです。
pgsqlは触ったことがなかったので、変更するならせめて触ったことのあるmysqlが精一杯でした。

どうやらherokuでもadd-onをインストールすればmysqlが使えるようになるらしいとの情報を入手。
それがこちらのClearDB
スクリーンショット 2020-04-06 0.27.37.png
このコマンドで無料版をインストールします。

$  heroku addons:create cleardb:ignite

ここでもエラーが出ました。

$ heroku addons:create cleardb:ignite
Creating cleardb:ignite on ⬢ アプリ名... !
 ▸    Please verify your account to install this add-on plan (please enter a credit card) For more information, see
 ▸    https://devcenter.heroku.com/categories/billing Verify now at https://heroku.com/verify

クレジットカード情報を入力することでこのエラーは解決します。

次にホスト名などを取得します

$ heroku config:get CLEARDB_DATABASE_URL

ここで返される値の内訳は以下の通りです。

mysql://[ユーザ名]:[パスワード]@[ホスト]/[DB名]?reconnect=true

ここで得た値をもとに環境変数を設定していきます。

$ heroku config:set \
> DB_CONNECTION=mysql \
> DB_HOST=[ホスト] \
> DB_DATABASE=[DB名] \
> DB_USERNAME=[ユーザー名] \
> DB_PASSWORD=[パスワード]

それではmigrate&seedをしていきます。

$ heroku run php artisan migrate --seed

ここでエラーが頻発しました。

  • uesrsテーブルのmigrateで問題発生

今回のAPIではusersテーブルは使用しなかったので、migrationファイルをコメントアウトして無効化するという強行策で解決。

  • どうやらmigrationの宣言の部分で問題発生

こちらも強行策で解決させました。

MySQLWorkbenchをインストールして、手動でテーブルを作成していきました。笑
スクリーンショット 2020-04-06 0.44.29.png
そして最後にseedでテストデータを入れます。

$ heroku run php artisan db:seed

これでやっとAPIが使えるようになりましたー!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?