hubotをHerokuからAWSのEC2へお引っ越し、そして常駐化

前にやっていたブログから移行してきた記事です。

Herokuが課金されちゃうよ☆というメールが来るのでEC2へお引っ越しすることに。
EC2はセットアップ済みでした。

こちらを参考にしました。
Hubot を Amazon EC2 にセットアップし、Slack と連携する! - Qiita


Amazon Linuxにログインする。
hubot用のディレクトリを作成し、botのコードをgithubからpull。

Node.jsをインストール

$ sudo yum -y install nodejs npm --enablerepo=epel

※npmがないとhubotさんやCoffeScriptがインストールできない。

HubotとCoffeeScriptをインストール

$ npm install -g hubot coffee-script


botのディレクトリでnpm install

$ npm install

下記のようなエラーが出たので、node-gypをインストール

> node-gyp rebuild
Traceback (most recent call last):
  File "/usr/bin/gyp", line 15, in <module>
    import gyp
ImportError: No module named gyp
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit 
・・・
$ npm install -g node-gyp

bin/hubotで起動しようとしたらWarningが出て起動しないので、momentをインストール。

hubot> [Wed Aug 12 2015 03:14:08 GMT+0000 (UTC)] ERROR Unable to load /home/ec2-user/mybot/scripts/example: Error: Cannot find module 'moment'
  at Function.Module._resolveFilename (module.js:338:15)
  at Function.Module._load (module.js:280:25)
  at Module.require (module.js:364:17)
  at require (module.js:380:17)
・・・

※下記を参考にしました。
Node.js - throw new Error("Cannot find module '" + request + "'"); - Stack Overflow

$ npm install moment --save


無事起動!!ヽ(=´▽`=)ノ

Slack用アダプタをインストール

$ npm install hubot-slack --save


Slackのトークンを設定
一番上に貼ったQiitaの記事だとSlack側の設定画面とか内容がちょっと古いので下記を参考にしました。
SlackのHubot Integrationが知らぬ間にアップデートされてた - Qiita

$ export HUBOT_SLACK_TOKEN=Slackの設定画面で指定されたトークン


hubotを起動

$ bin/hubot -a slack

f:id:maetoo11:20160103212703p:plain

これで引っ越し完了!
・・・と思ったらこいつ常駐化しない∑(゚д゚lll)ガーン
定期的に落ちるorz

下記を参考に常駐化させます。
Hubotをインストール、hipchatと連携し、foreverでデーモン化(CentOS6.4) - Qiita

foreverをインストール

$ npm install forever -g


起動用のシェルrun.shを作成

#!/bin/bash

export HUBOT_SLACK_TOKEN=Slackの設定画面で指定されたトークン
forever start -c coffee node_modules/.bin/hubot --name hubot -a slack

botのディレクトリ直下に作成しました。

run.shを実行するとhubotが常駐化します。

$ ./run.sh