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
これで引っ越し完了!
・・・と思ったらこいつ常駐化しない∑(゚д゚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