Let's Chat과 Hubot을 연결
최근 프로젝트를 위한 개발 기반 환경을 갖추었고, 그 일환으로 채팅 앱을 살펴보면 Let's Chat을 발견했다. (정말은 Slack라든지 서비스를 사용하고 싶지만, 좀처럼 그렇게도 가지 않는다…)
당시 Kandan을 사용해 환경 정돈했지만, 상당히 번거롭거나 늦거나 불만도 상당히 있었다. 그래서 Let's Chat에서 환경을 정돈해 보았다.
결과를 먼저 써 두면, 환경 구축은 비교적 간단하고, UI도 모던하고 응답도 좋았으므로 추천.
환경 구축
도커 , 에 6 , Vagrant 과 순서가 실려 있지만, 사내에서 이용하기 때문에 Local installation 를 참고로 구축.
이번에는 CentOS6.5에 구축했다.
Node.js 설치
nodebrew에서.
$ wget git.io/nodebrew
$ perl nodebrew setup
export PATH=$HOME/.nodebrew/current/bin:$PATH
를 path 에 추가하라고 하기 때문에 추가한다.
현재 최신v0.12.4
을 설치합니다.
$ nodebrew ls-remote
$ nodebrew install-binary v0.12.4
$ nodebrew use v0.12.4
MongoDB 설치
MongoDB 리포지토리 추가
/etc/yum.repos.d/mongodb.repo[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
설치
$ yum -y install mongodb-org
시작
$ service mongod start
Python2.7 설치
표준으로 Python2.6이 들어 있었지만, Python2.7 이상이 필요하므로 넣어 둔다.
$ yum -y groupinstall "Development tools"
$ yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libicu-devel.x86_64
$ curl -O https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
$ tar zxvf Python-2.7.6.tgz
$ cd Python-2.7.6
$ ./configure --prefix=/opt/local
$ make && make altinstall
# 元から入っていたPythonをリネームしておく
$ mv /usr/bin/python /usr/bin/python2.6.6
$ ln -snf /opt/local/bin/python2.7 /usr/bin/python
$ python -V
Python 2.7.6
원래부터 들어 있는 Python의 버전을 올리면 yum이 움직이지 않게 되므로, 리네임한 Python을 보도록, 이하와 같이 수정한다.
/usr/bin/yum- #!/usr/bin/python
+ #!/usr/bin/python2.6.6
import sys
try:
import yum
except ImportError:
print >> sys.stderr, """\
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
.
.
Let's Chat 설치
$ git clone https://github.com/sdelements/lets-chat.git
$ cd lets-chat
$ npm install
시작
$ npm start
> [email protected] prestart /opt/lets-chat
> migroose
> [email protected] start /opt/lets-chat
> node app.js
██╗ ███████╗████████╗███████╗ ██████╗██╗ ██╗ █████╗ ████████╗
██║ ██╔════╝╚══██╔══╝██╔════╝ ██╔════╝██║ ██║██╔══██╗╚══██╔══╝
██║ █████╗ ██║ ███████╗ ██║ ███████║███████║ ██║
██║ ██╔══╝ ██║ ╚════██║ ██║ ██╔══██║██╔══██║ ██║
███████╗███████╗ ██║ ███████║ ╚██████╗██║ ██║██║ ██║ ██║
╚══════╝╚══════╝ ╚═╝ ╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝
Release 0.4.0
http://localhost:5000에 액세스하면 로그인 화면이 표시됩니다.
port 번호나 가입 허가 등은 settings.yml
로 행한다. Kerberos나 LDAP등의 인증에도 대응하고 있는 모양.
멋진 로그인 화면이다.
Init script를 만들고 서비스를 시작할 수 있도록 허용
npm start로 기동하는 것은 싫기 때문에, 서비스 기동할 수 있도록 한다.
Let's Chat의 daemon화는 forever를 사용하여 행하므로 설치해 둔다.
$ npm install -g forever
다음 용으로 Init script를 작성한다. 경로는 각 환경에 맞추어야 한다.
/etc/init.d/lets-chat#!/bin/sh
#
# Note runlevel 2345, 86 is the Start order and 85 is the Stop order
#
# chkconfig: 2345 86 85
# description: Description of the Service
#
# Below is the source function library, leave it be
. /etc/init.d/functions
# result of whereis forever or whereis node
export PATH=/home/tenten0213/.nodebrew/current/bin
# result of whereis node_modules
export NODE_PATH=$NODE_PATH:/home/tenten0213/.nodebrew/current/lib/node_modules
SERVICE_NAME="Let's Chat"
cd /opt/lets-chat
start(){
forever start app.js
}
stop(){
forever stop app.js
}
restart(){
forever restart app.js
}
case "$1" in
start)
echo "Start service ${SERVICE_NAME}"
start
;;
stop)
echo "Stop service ${SERVICE_NAME}"
stop
;;
restart)
echo "Restart service ${SERVICE_NAME}"
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
init.d/lets-chat 및 app.js에 실행 권한 부여
$ chmod a+x /etc/init.d/lets-chat
$ chmod a+x app.js
이제 다음과 같이 서비스를 시작할 수 있습니다.
$ service lets-chat start
Hubot과의 협력
Hubot 설치 및 구축에 대한 자세한 내용은 문서을 참조하십시오.
자신의 Hubot을 만든 디렉토리에 Let's Chat 어댑터를 설치합니다.
$ npm install hubot-lets-chat --save
Hubot에 대한 계정을 미리 만들고 인증 토큰을 얻습니다.
취득한 토큰과, 참가시키고 싶은 룸의 id( http://localhost:5000/#!/room/55825920a58fe99f7c28f232
라면 55825920a58fe99f7c28f232
)를 HUBOT_LCB_TOKEN
와 HUBOT_LCB_ROOMS
에 각각 설정한다.
export HUBOT_LCB_TOKEN=NTRiNjg5NmYyMDZiMzEwMDAwYTAxNmZiOjE0ZTg2ODMwYz...
export HUBOT_LCB_ROOMS=5279facb1015642226000011,5394ffbabdea44e815000003
Let's Chat의 프로토콜이나, 호스트명, 포트명등도 지정할 수 있다.
export HUBOT_LCB_PROTOCOL=http
export HUBOT_LCB_HOSTNAME=localhost
export HUBOT_LCB_PORT=5000
어댑터로 lets-chat을 지정해 기동하면, Hubot가 Let's Chat에 참가하게 된다.
$ ./bin/hubot -a lets-chat
일단 Hubot도 Init script 쓰고 있었다.
추가
↓ 그렇다면 제대로 움직이지 않을지도… 안된다면
기동만 run.sh
을 준비해, 멈추는 것은 forever stop
하는 느낌으로.
#!/bin/sh
#
# Note runlevel 2345, 86 is the Start order and 85 is the Stop order
#
# chkconfig: 2345 86 85
# description: Description of the Service
#
# Below is the source function library, leave it be
. /etc/init.d/functions
# result of whereis forever or whereis node
export PATH=/home/tenten0213/.nodebrew/current/bin
# result of whereis node_modules
export NODE_PATH=$NODE_PATH:/home/tenten0213/.nodebrew/current/lib/node_modules
export PATH=$HOME/.nodebrew/current/bin:$PATH
export HUBOT_LCB_HOSTNAME=localhost
export HUBOT_LCB_PORT=5000
export HUBOT_LCB_TOKEN="NTRiNjg5NmYyMDZiMzEwMDAwYTAxNmZiOjE0ZTg2ODMwYz..."
export HUBOT_LCB_ROOMS=5279facb1015642226000011,5394ffbabdea44e815000003
SERVICE_NAME="Hubot"
cd /home/tenten0213/hubot
start(){
forever start -c coffee node_modules/.bin/hubot -a lets-chat
}
stop(){
forever stop -c coffee node_modules/.bin/hubot -a lets-chat
}
restart(){
forever restart -c coffee node_modules/.bin/hubot -a lets-chat
}
case "$1" in
start)
echo "Start service ${SERVICE_NAME}"
start
;;
stop)
echo "Stop service ${SERVICE_NAME}"
stop
;;
restart)
echo "Restart service ${SERVICE_NAME}"
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
참고
$ wget git.io/nodebrew
$ perl nodebrew setup
$ nodebrew ls-remote
$ nodebrew install-binary v0.12.4
$ nodebrew use v0.12.4
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
$ yum -y install mongodb-org
$ service mongod start
$ yum -y groupinstall "Development tools"
$ yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libicu-devel.x86_64
$ curl -O https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
$ tar zxvf Python-2.7.6.tgz
$ cd Python-2.7.6
$ ./configure --prefix=/opt/local
$ make && make altinstall
# 元から入っていたPythonをリネームしておく
$ mv /usr/bin/python /usr/bin/python2.6.6
$ ln -snf /opt/local/bin/python2.7 /usr/bin/python
$ python -V
Python 2.7.6
- #!/usr/bin/python
+ #!/usr/bin/python2.6.6
import sys
try:
import yum
except ImportError:
print >> sys.stderr, """\
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
.
.
$ git clone https://github.com/sdelements/lets-chat.git
$ cd lets-chat
$ npm install
$ npm start
> [email protected] prestart /opt/lets-chat
> migroose
> [email protected] start /opt/lets-chat
> node app.js
██╗ ███████╗████████╗███████╗ ██████╗██╗ ██╗ █████╗ ████████╗
██║ ██╔════╝╚══██╔══╝██╔════╝ ██╔════╝██║ ██║██╔══██╗╚══██╔══╝
██║ █████╗ ██║ ███████╗ ██║ ███████║███████║ ██║
██║ ██╔══╝ ██║ ╚════██║ ██║ ██╔══██║██╔══██║ ██║
███████╗███████╗ ██║ ███████║ ╚██████╗██║ ██║██║ ██║ ██║
╚══════╝╚══════╝ ╚═╝ ╚══════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝
Release 0.4.0
$ npm install -g forever
#!/bin/sh
#
# Note runlevel 2345, 86 is the Start order and 85 is the Stop order
#
# chkconfig: 2345 86 85
# description: Description of the Service
#
# Below is the source function library, leave it be
. /etc/init.d/functions
# result of whereis forever or whereis node
export PATH=/home/tenten0213/.nodebrew/current/bin
# result of whereis node_modules
export NODE_PATH=$NODE_PATH:/home/tenten0213/.nodebrew/current/lib/node_modules
SERVICE_NAME="Let's Chat"
cd /opt/lets-chat
start(){
forever start app.js
}
stop(){
forever stop app.js
}
restart(){
forever restart app.js
}
case "$1" in
start)
echo "Start service ${SERVICE_NAME}"
start
;;
stop)
echo "Stop service ${SERVICE_NAME}"
stop
;;
restart)
echo "Restart service ${SERVICE_NAME}"
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
$ chmod a+x /etc/init.d/lets-chat
$ chmod a+x app.js
$ service lets-chat start
$ npm install hubot-lets-chat --save
export HUBOT_LCB_TOKEN=NTRiNjg5NmYyMDZiMzEwMDAwYTAxNmZiOjE0ZTg2ODMwYz...
export HUBOT_LCB_ROOMS=5279facb1015642226000011,5394ffbabdea44e815000003
export HUBOT_LCB_PROTOCOL=http
export HUBOT_LCB_HOSTNAME=localhost
export HUBOT_LCB_PORT=5000
$ ./bin/hubot -a lets-chat
#!/bin/sh
#
# Note runlevel 2345, 86 is the Start order and 85 is the Stop order
#
# chkconfig: 2345 86 85
# description: Description of the Service
#
# Below is the source function library, leave it be
. /etc/init.d/functions
# result of whereis forever or whereis node
export PATH=/home/tenten0213/.nodebrew/current/bin
# result of whereis node_modules
export NODE_PATH=$NODE_PATH:/home/tenten0213/.nodebrew/current/lib/node_modules
export PATH=$HOME/.nodebrew/current/bin:$PATH
export HUBOT_LCB_HOSTNAME=localhost
export HUBOT_LCB_PORT=5000
export HUBOT_LCB_TOKEN="NTRiNjg5NmYyMDZiMzEwMDAwYTAxNmZiOjE0ZTg2ODMwYz..."
export HUBOT_LCB_ROOMS=5279facb1015642226000011,5394ffbabdea44e815000003
SERVICE_NAME="Hubot"
cd /home/tenten0213/hubot
start(){
forever start -c coffee node_modules/.bin/hubot -a lets-chat
}
stop(){
forever stop -c coffee node_modules/.bin/hubot -a lets-chat
}
restart(){
forever restart -c coffee node_modules/.bin/hubot -a lets-chat
}
case "$1" in
start)
echo "Start service ${SERVICE_NAME}"
start
;;
stop)
echo "Stop service ${SERVICE_NAME}"
stop
;;
restart)
echo "Restart service ${SERVICE_NAME}"
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
Reference
이 문제에 관하여(Let's Chat과 Hubot을 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tenten0213/items/dff56549586f4c5607cf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)