안녕하세요? node 버전 의존성을 가릴때가 많이 있습니다. 8 9 10 버전에 맞게 작동되는 경우도 있습니다.
이럴 경우에 해결하는 방법은 nvm 이나 nodenv 를 쓰는 것인데요. nodeenv가 편하여 작성하고 있습니다.
1. 설치
설치방법은 다양하지만, 파이썬 패키지임으로 easy_install 을 이용해 보겠습니다.
easy_install nodeenv
2. env 생성 및 테스트
각 CPU마다 존재하는 버전이 다르기 때문에 prebuild 바이너리 버전으로 다운이 안될 수 있습니다. 컴파일은 매우 오래걸리기 때문에 아래 사이트를 참고하시어 설치하시길 바랍니다.
root@AOL-Debian:/home# nodeenv --node=10.16.3 ghconnector
* Install prebuilt node (10.16.3) ..... done.
root@AOL-Debian:/home# cd ghconnector/
root@AOL-Debian:/home/ghconnector# source ./bin/activate
(ghconnector) root@AOL-Debian:/home/ghconnector# node -v
v10.16.3
(ghconnector) root@AOL-Debian:/home/ghconnector#
latest 폴더를 보시면 굉장히 편합니다. 0.10.16.3 이지만, 입력시에는 10.16.3 으로 입력을 하시면 됩니다. latest 에는 armv7 바이너리가 있어 금방 설치가 됩니다.
node 를 IOT 에서 많이 쓰는데 특히 홈브릿지 / 아기나무집 ST 패키지를 많이 사용합니다.
1. 홈브릿지 : V9
2. 미컨넥터 : V9
3. 구글컨넥터 : V10
4. 다원컨넥터 : V9
입니다. 아직 홈브릿지는 손대보지 않았는데 234 번은 이 글에서 서술 예정입니다.
한편, 저는 설정파일 및 바이너리 등을 한 폴더에 모아 놓는 것을 좋아해서 설정 파일도 /home/ghconnector/config/gh-config.json 으로 이렇게 넣어두는 편이고 절데 npm install -g 로 글로벌 하게 설치하지 않고 --prefix 나 해당 폴더에서 install 을 하고 있습니다.
3. ghconnector 올리기
(ghconnector) root@AOL-Debian:~# tar xf ghconnector.tar
(ghconnector) root@AOL-Debian:~# cp app/* /home/ghconnector/ -R
(ghconnector) root@AOL-Debian:~# cd /home/ghconnector/
(ghconnector) root@AOL-Debian:/home/ghconnector# ls
app.js gh-config.json messages package.json public share views
bin include node_modules package-lock.json routes src
Dockerfile lib nodesource_setup.sh patch service util
(ghconnector) root@AOL-Debian:/home/ghconnector# ./bin/www
2019-09-28 02:35:14 [info]: WebSocket init
2019-09-28 02:35:15 [info]: Google TTS Init failed!!!
2019-09-28 02:35:16 [info]: No credentials.json
2019-09-28 02:35:17 [info]: Initiallize Google Calendar Service
2019-09-28 02:35:17 [error]: (node:17082) UnhandledPromiseRejectionWarning: Read Config File Error!!!!! >> SyntaxError: /config/gh-config.json: Unexpected end of JSON input
2019-09-28 02:35:17 [error]: (node:17082) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
2019-09-28 02:35:17 [error]: (node:17082) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(ghconnector) root@AOL-Debian:/home/ghconnector# which node
/home/ghconnector/bin/node
(ghconnector) root@AOL-Debian:/home/ghconnector# vim /etc/init.d/ghconnector
DESC="ghconnector"
NAME=ghconnector
PIDFILE=/var/run/$NAME.pid
COMMAND="/home/ghconnector/bin/node"
DAEMON_ARGS="/home/ghconnector/bin/www"
RUN_AS=root
(ghconnector) root@AOL-Debian:/home/ghconnector# deactivate_node
root@AOL-Debian:/home/ghconnector# service ghconnector start
Starting ghconnector: ghconnector.
root@AOL-Debian:/home/ghconnector#
4. dwconnector 올리기
root@AOL-Debian:/home# nodeenv --node=9.11.2 dwconnector
* Install prebuilt node (9.11.2) ..... done.
root@AOL-Debian:~# tar xf dwconnector.tar
root@AOL-Debian:~# cp app/* /home/dwconnector/ -R
init.d 파일은 뭐 아래와 같이 작성하면 됩니다.
root@AOL-Debian:/home/dwconnector# vim /etc/init.d/dwconnector
#!/bin/sh
### BEGIN INIT INFO
# Provides: dwconnector
# Required-Start: $remote_fs $all
# Required-Stop: $remote_fs $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: dwconnector init script
# Description: initscript by djjproject
### END INIT INFO
DESC="dwconnector"
NAME=dwconnector
PIDFILE=/var/run/$NAME.pid
COMMAND="/home/dwconnector/bin/node"
DAEMON_ARGS="/home/dwconnector/bin/www"
RUN_AS=root
d_start() {
start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS --exec $COMMAND -- $DAEMON_ARGS
}
d_stop() {
start-stop-daemon --stop --quiet --pidfile $PIDFILE
if [ -e $PIDFILE ]
then rm $PIDFILE
fi
}
case $1 in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 1
d_start
echo "."
;;
*)
echo "usage: $NAME {start|stop|restart}"
exit 1
;;
esac
exit 0
root@AOL-Debian:/home/dwconnector# update-rc.d dwconnector defaults
root@AOL-Debian:/home/dwconnector# service dwconnector start
Starting dwconnector: dwconnector.
root@AOL-Debian:/home/dwconnector# mkdir config
root@AOL-Debian:/home/dwconnector# cp dw-config.json config/
root@AOL-Debian:/home/dwconnector# vim util/config.js
8 constructor(){
9 this.configPath = "/home/dwconnector/config/dw-config.json";
10 this.config = {};
11 }
5. 마음이 편안..
한 폴더에 묶어 두어 마음이 너무 편합니다.
'IoT' 카테고리의 다른 글
HomeAssistant Core / 코콤 월패드 샤오미 공기청정기 연동하기 / Elfin EW11 / RS485 (0) | 2020.04.18 |
---|---|
IOT 시동 프로젝트 (일단 시작하고 보자!) 의 끝 (2) | 2019.09.29 |
[IOT프로젝트] 4. gh-connector on AoL (0) | 2019.09.26 |
[IOT프로젝트] 3. HomeBridge on AoL (0) | 2019.09.08 |
[IOT프로젝트] 2. mi-connector on AoL (0) | 2019.09.08 |
댓글