SlackbotをHerokuにデプロイする方法
こんにちは、湊川あいです。
わかばちゃん.icon 楽しかったー!
この本は、Slackbotを作りながら、オブジェクト指向で書けるようになっていくという内容になっています。
https://gyazo.com/89e4b74963c1f7689ba8013112649494
https://gyazo.com/5a4887fb6d9516ec8f55bb28beacfeb0
わかばちゃん.icon でもパソコン動かしてないとbotも止まっちゃうんだけど!?
そうなんです。ローカルサーバーで動いているだけの状態だと、パソコンの電源を落としてしまえばbotは止まってしまいます。
パソコンを閉じても、botには動き続けていてほしいですよね。
というわけで、Herokuにデプロイして動かすことにしましょう。
Herokuってなに?
イケてるホスティングサービス
開発したWEBアプリケーションを10分程度で全世界に公開することができ、そのままサービスを本格運用することもできる
Python/Java/Go/PHP/Node.JS/Ruby on Railsに対応
HerokuはPaaS型
PaaS = Platform as a Serviceの略。ネットワーク、OSがすでに整った状態で利用できる
わかばちゃん.icon たった10分でできるの!? すごっ! やってみよ
leaf.icon流れ
1、Herokuのアカウントを作ろう
2、Herokuをコマンドで操作できるツールをインストールしよう
3、ターミナルからHerokuにログイン
4、Procfileを作る
5、いよいよデプロイ
6、環境変数を設定しよう
7、workerプロセスを起動しよう
leaf.iconHerokuのアカウントを作ろう
Herokuのトップページから「無料で新規登録」をクリックし、名前やメールアドレスを登録します。
認証のためのメールが届くので、記載のURLをクリックしたら登録完了です。
https://gyazo.com/005ac90d6b895bcd746f1c3d142c17d5
leaf.iconHerokuをコマンドで操作できるツールをインストールしよう
heroku toolbeltをインストールします
code: terminal
$ brew tap heroku/brew && brew install heroku
もしくは公式ページから直接ダウンロードします
https://gyazo.com/73f2cce0b381187346858f22fcd95413
leaf.iconターミナルからHerokuにログイン
toolbeltのインストールが完了したら、ターミナルからHerokuにログインします。
$ heroku loginと打ち込むと、どれかキーを押してねと言われるので、適当にキーを打ちます。
ブラウザ上でログインし、ターミナルにLogging in... doneと表示されたら完了です。
code: terminal
$ heroku login
heroku: Press any key to open up the browser to login or q to exit:
Logging in... done
Logged in as sample@sample.com
leaf.iconProcfileを作る
ローカルで「Procfile」という名前のファイルを作ります。
Procfileは、Herokuデプロイ後に実行されるファイルです。
プロセスタイプ: 実行するコマンド という形式で記述します。
プロセスタイプとは?
Procfileの中身はこう書きます。
エディタで新規ファイルを作成し、次の1行だけ書いて、拡張子はつけずに「Procfile」というファイル名で保存します。
code: Procfile
worker: bundle exec ruby kuronekobot.rb
わかばちゃん.icon あっ。このコマンド、botを実行するときに使ってたコマンドと同じじゃん
わかばちゃん.icon そっか、Procfileにコマンドを書いておくと、Heroku上でこのコマンドが叩かれるってことか!
leaf.iconいよいよデプロイ
デプロイしたいアプリケーションディレクトリに移動します。
Gitでコミットをしておきます。
$ git init
$ git add .
$ git commit -m "heroku deploy test"
Heroku Buildpack for Rubyを利用してrubyアプリケーションをデプロイするための環境を整えます。
https://gyazo.com/2a26472788e17a99e56bcef5b5c67a26
このように表示されればOK
ではプッシュします。
code: terminal
$ git push heroku master
Counting objects: 10, done.
:
:
remote: -----> Launching...
remote: Released v4
remote:
remote: Verifying deploy... done.
このようになれば成功です。
⚡️llminatoll.iconエラー例⚡️
Gemfile.lockがないよと言われてプッシュできなかった場合
https://gyazo.com/b09f3a8a0a9ca7d039613d5d2cf1fe90
解決策: $ bundle install を実行することで「Gemfile」を元に「Gemfile.lock」が作成されます。
その上で再度Gitでコミットし、プッシュ $ git push heroku masterしましょう。
🐈llminatoll.icon黒猫先生のワンポイントアドバイス🐈
gemを新しく追加するときの流れ
1、Gemfileを更新
2、bundle installを実行
3、Gemfile.lockが自動的に更新される
Gemfile.lockの役割
実際にインストールしたgemの具体的なバージョンを記述する
Railsアプリに実際にインストールされたgemを依存関係にあるgemも含めて一覧で表示する
leaf.icon環境変数を設定しよう
これを教えてあげないとHeroku側からSlackアプリケーションにアクセスできません。
以下のコマンドを実行して、権限を与えてあげましょう。
環境変数の設定
$ heroku config:set SLACK_API_TOKEN=XXxxXXXxxx(slackのtoken)
$ heroku config:set GITHUB_USERNAME=wakabachan(githubアカウント名)
$ heroku config:set GITHUB_PASSWORD=hogehoge(githubパスワード)
環境変数の確認
$ heroku config
https://gyazo.com/477e8d1496cff5bba13cd56f5f998614
leaf.iconworkerプロセスを起動しよう
$ heroku scale worker=1
https://gyazo.com/32c0876ebfabdc82fe9dd3ae060c801e
プロセス確認
$ heroku ps
https://gyazo.com/23678e83d95003be24ad55644c766264
このようにworker.1: upと表示されれば動いています。
Slackで確認してみると動いているはずです。
⚡️llminatoll.iconエラー例⚡️
https://gyazo.com/65d2c340b5f534d6afa5119a6edaa33b
worker.1: crashedと表示されています。何らかの原因でうまく立ち上がらなかったようです。
この原因は、Procfileの中で、存在しないファイルを指定していたからです。
code: Procfile
worker: bundle exec ruby kuronekobot.rb
動かしたいプログラム(kuronekobot.rb)をタイプミスなく指定しているか、階層構造を間違えていないか今一度確認しましょう。修正したあとはコミット・プッシュも忘れずに。
手順は以上です!llminatoll.icon
おめでとうございます🎉
おわりに
https://gyazo.com/461cc5ff2a3f012e4a3e9bae4b778ea4 https://booth.pm/ja/items/1573974
わかばちゃんと学ぶシリーズ
湊川あい(著)
https://gyazo.com/126e9f1ca7a6b3bd745e07866e0a118a
湊川あい (著) / DQNEO(監修)
https://gyazo.com/936b08717df2eec6c22fca00601b94de
湊川あい (著)
https://gyazo.com/ea1c0aaeeb787405a7e5b032c51d09e8
沢渡 あまね (著), 湊川 あい (著)
https://gyazo.com/ea62d1dac64539c1866d066bf06608db
マンガでわかるScrapbox Kindle版 無料
Web連載
参考にさせていただいた記事:ありがとうございますmm