今回はherokuを使った、Laravelプロジェクトを世界に手っ取り早く公開する手順をご紹介します。
実は今回僕も初の公開作業をしながら同時にこのqiitaを書いている
ので、これが公開されているということは動作は保証されます笑
herokuとはPaaS(Platform as a Service)と呼ばれるサービスで、アプリケーションを実行するためのプラットフォームです。
もう少しわかりやすく説明すると、サーバやOS、データベースなどの「プラットフォーム」と呼ばれる部分を、インターネット越しに使えるようにしてくれるサービスの一つです。
レンタルサーバーと似ていると思うかもしれませんが、レンタルサーバーとPaaSは「環境を貸してくれる」という意味では一緒なので、ほぼ同じと考えても問題はありません
herokuとは?初心者でも5分で分かる基本や特徴をまるっと紹介
大まかな流れか以下の通りです。
herokuに登録
↓
heroku CLIダウンロード
↓
herokuでアプリ作成
↓
PostgreSQLへの接続設定
↓
herokuでDBマイグレーション
↓
heroku openで世界に公開!
それではいきましょう!
環境
MacOS Mojave 10.14.5(windowsのみなさんごめんなさい🙇♂️)
Laravel5.8.x
MAMP5.3で作成したLaravelプロジェクト
herokuに登録
こちらより各自登録しておいてください。
heroku CLI
まずはherokuコマンドを入れます。
$ brew tap heroku/brew && brew install heroku
念の為バージョン確認します。
$ heroku -v
heroku/7.35.0 darwin-x64 node-v12.13.0
okですね。
ターミナルからherokuログイン
cdコマンドでlaravelプロジェクトに移動してください。
$ cd /Applications/MAMP/htdocs/kanban
kanbanは僕のプロジェクト名で、MAMPなのでhtdocs以下になっています
さあheroku CLIでログインします。
$ heroku login
以下のようなメッセージが出たらq以外を押す
heroku: Press any key to open up the browser to login or q to exit:
すると?
こんなブラウザが出てくるので、Log in
押します。
Logging in... done
Logged in as xxx@xxx.xxx
ログインできた!
HerokuのHTTPサーバー用コンフィグファイル作成
$ echo "web: vendor/bin/heroku-php-apache2 public" > /Applications/MAMP/htdocs/kanban/Procfile
ここは正直自分も行う理由があやふやです(^◇^;)
ProcfileはHerokuアプリの起動時に実行するプロセスを定義するためのファイルみたいです。
herokuでアプリを作成する
$ heroku create
前者がアプリのURL、後者がgitのプッシュ先になります。
これから使う大切なものなので、控えておきます。
ここからgitでherokuのリモートリポジトリにプッシュしていきます。
$ git init
これでリポジトリを作成します。
そして実はLaravelプロジェクト直下に.git
という隠しディレクトリができています。
これ超重要です。
$ git add .
git add .コマンドはリポジトリにコミットする前に行うステージングを全ファイル分やってくれます。
$ git commit -m "initial commit"
ステージングしたファイルをコミットしています。
そしたら、ここで一回.git/config
を開きます。
そして、先ほどターミナルに出たgitのリポジトリアドレスも確認してください。
[remote "heroku"]
url = https://git.heroku.com/lit-plateau-44850.git
これを追記しますが、
ここのアドレスは人によって違ってきます。
これがないとリモートリポジトリがどれかわからないので、fatal errorが出る
んですよね(再送2回)
では、
$ git push heroku master
herokuのmasterリポジトリにプッシュせしめるで候。
remote: Verifying deploy... done.
To https://git.heroku.com/lit-plateau-44850.git
* [new branch] master -> master
このようなメッセージが出たらherokuデプロイできています。
ここからは細々した設定をしていきます。
Herokuの環境変数
$ heroku plugins:install heroku-config
$ heroku config:set DB_DATABASE=laravel
$ heroku config:push
DB名Laravelは、僕はDBローカルのMySQLでDB名がLaravelだったので、herokuでも合わせました。
Herokuにpostgresqlを作成、接続
herokuが無料で提供しているのはPostgreSQLということなので、herokuでHeroku Postgresを作成し、接続します。
$ heroku addons:create heroku-postgresql:hobby-dev
$ php -r 'preg_match("/^postgres:\/\/(.+?):(.+?)@(.+?):(.+?)\/(.*?)$/", `heroku config:get DATABASE_URL`, $matches); `heroku config:set DB_CONNECTION=pgsql DB_HOST=$matches[3] DB_PORT=$matches[4] DB_DATABASE=$matches[5] DB_USERNAME=$matches[1] DB_PASSWORD=$matches[2]`;'
herokuでマイグレーション
それでは、herokuでマイグレーションを実行します。
$ heroku run "php artisan migrate"
その後、
Migration table created successfully.
と出たら、終了です。
先ほどターミナルに出てきたアプリのURL覚えてますか?
あれが公開URLなので、緊張の入力です...
公開できた😭
DBも機能してる。
ちなみにtechpitで作ったtrello風タスク管理アプリになります(https化し忘れた...)
画像投稿機能とかtwitter Authとか入れたかったなぁ...