はじめに
私はプログラミング歴1年の初心者です。
実務でWebサイトのコーディングを1年間行ってきました。
そろそろシステム開発もできるようになりたいということで
LaravelやReactをこれから勉強していこうと思っております。
この記事の目的
Laravelのチュートリアルを進めて行く中で
Laravelの主要な仕組みを理解することです。
この記事は前回の記事があるので、もしご覧になっていない方がいればこちらからどうぞ。
参考記事(チュートリアル記事)
こちらのTodoアプリを作成するチュートリアル記事を参考にさせていただきました。
すごく丁寧に説明してくださっているのですごく勉強になりました。
目次
(1)開発環境
(2)アプリケーション設計
(3)プロジェクト作成
(4)一覧機能
(5)作成機能
(6)編集機能
(7)認証機能
(8)エラーハンドリング
↓今回はここから(認証機能の後半から)↓
(9)デプロイ
HerokuとLaravelでデプロイ
Herokuを準備する
このページから無料でサインアップ。
このページからHeroku CLIをインストール
今回の環境
ポイントは
○デプロイは構築した環境によって、方法が変わってくるということ。
○つまり先にどのように環境構築していくかを決めておくことが大切になる。
デプロイはHeroku
フレームワークはLaravel
DBはMySQL
Herokuでアップしたいので、gitを使おう。
ポイントは
○Herokuにアップするのに、gitを使うと便利なため、gitHubにアップする。
まずはローカルリポジトリを作成してGit管理化に置く
// ローカルリポジトリを作成
$ cd todoapp2
$ git init
// addとcommitをする
$ git status
$ git add -A ←// 変更のあったすべてのファイルをインデックスにaddする
$ git commit -m 'first commit' ←// ローカルリポジトリにcommitする
``
#### 次にリモートリポジトリを作成する
以下のリンクからgitHubにログイン
https://github.com/join/customize
「New Repository」で新しいリモートリポジトリを作成する。
#### その次にローカルをリモートにPushする。
```terminal
// リモートリポジトリURLをoriginという名前で登録する
$ git remote add origin <RemoteRipositoryURL>
// ローカル(master)をリモート(origin)にアップする
$ git push origin master
次にHerokuの設定をする
まずはHerokuサーバーを立ち上げる
// herokuCLIにログインする。
$ heroku login
// herokuサーバーを作成する。
$ heroku create todoapp2ks
次にclearDBを導入する
// clearDBを導入する
$ heroku addons:create cleardb:ignite
// Procfileを作成する
$ touch Procfile
// 以下を追記
web: vendor/bin/heroku-php-apache2 public/
// clearDBの環境変数を確認する
$ heroku config:get CLEARDB_DATABASE_URL
# URLが表示されて、こんな感じに出力される
mysql://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]?reconnect=true
// heroku環境に直接環境変数を設定する(.envではない)
$ heroku config:set DB_CONNECTION=mysql
$ heroku config:set DB_PORT='3306'
$ heroku config:set DB_USERNAME='[ユーザー名]'
$ heroku config:set DB_PASSWORD='[パスワード]'
$ heroku config:set DB_HOST='[ホスト名]'
$ heroku config:set DB_DATABASE='[データベース名]'
// 設定した内容を確認する
$ heroku config
// APP_KEYを設定する
$ heroku config:set APP_KEY=$(php artisan --no-ansi key:generate --show)
// APP_ENVを設定する
$ heroku config:set APP_ENV=heroku
// 他にも設定しておく
$ heroku config:set LANG=ja_JP.UTF-8
$ heroku config:set TZ=Asia/Tokyo
Herokuにpushをして、データベースの作成をして、Herokuでデプロイする
// Herokuにpushする
$ git push heroku master
// migrateして、データベースにテーブル作成する
$ heroku run php artisan migrate
// どうやら正しい設定をしていないからエラーが出てきた
In Connection.php line 678:
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.table
s where table_schema = heroku_ef2b49144d4507a and table_name = migrations and table_ty
pe = 'BASE TABLE')
In Connector.php line 70:
SQLSTATE[HY000] [2002] Connection refused
// 解決方法は環境変数を見直すこと
自分の場合はDB_HOSTのところをDB_HOSTNAMEとしていました。
→もう修正はしてありますが、こういうところ気をつけないと…。
// これで成功!
$ heroku run php artisan migrate
// Herokuに再度デプロイ
$ git push heroku master
// Herokuでデプロイしたアプリを確認
$ heroku open
// ここで「Forbidden」の表示が…
実は上記の流れだとだめみたいです。
→Procfileがpushされていませんでした。
→最初に作っておくとよかったです。
// 気を取り直して
$ git add Procfile
$ git commit -m 'Procfile Add'
$ git push origin master
$ heroku open
写った!
さいごに
無事デプロイ完了できてよかったです。
今回1回目と同じような流れでデプロイしたのですが、
違うところで色々とエラーが起きてきました。
同じ作業をするだけでも別のエラーと出会うことになるのですね。
2回目もすごく勉強になりました。
色々と試行錯誤していくことが重要ですね。
しっかり起きていることから目をそらさずに
どうしてこうなっているのか
一つひとつに対して紳士に向き合っていくことが重要ですね。
プログラミングの世界が理解できてくると
エラーへの対処も早くなってくるし、
正確な対処法を検索する方法もわかってきますね。
インプットとアウトプットのバランスが大切ですね!