PHP 사이트에 노드 앱 추가

June 16, 2018 11:42 AM

이 사이트는 Ubuntu에 Apache-PHP에서 돌리고 있는데 일부 페이지를 노드 기반으로 바꾸려고 서버에 노드를 설치해봤다. 우선 node, npm, pm2를 설치한다. 그냥 apt-get으로 설치하면 버전이 낮을 거 같아서 PPA를 써봤다. 최신 버전(latest)을 설치할까도 생각했지만 안정 버전(stable)이 있는 이유가 있을 거라는 생각과 안정 버전에서도 될 건 다 된다는 생각에 그냥 8.x대를 선택했다.

curl -sL https://deb.nodesource.com/setup_8.x -o nodesource_setup.sh

이거 하고 nodesource_setup.sh 내용을 확인하라는데 너무 길어서 잘 모르겠고 주석 보니 가짜는 아닌거 같아서 그냥 설치했다.

sudo bash nodesource_setup.sh

그러면 apt-get으로 최신 안정 버전을 설치할 수 있다.

sudo apt-get install nodejs

Node와 npm 버전을 확인하고 서버의 로컬호스트로 헬로월드 앱을 만들어서 실행하고 curl로 확인해보니 잘 작동한다. 여기까지는 개발 환경 설정하고 비슷해서 특별한 것이 없다.

아파치의 특정 디렉토리를 이 로컬호스트로 연결하고 싶은데 아파치의 ProxyPass를 사용하면 된다. 내 경우는 proxyproxy_http가 활성화 되어 있지 않아서 이를 활성화 해줘야 했다.

sudo a2enmod proxy
sudo a2enmod proxy_http

문서에는 httpd.conf에서 설정을 바꾸라고 되어 있는데 생김새를 보니 버추얼 호스트에서 설정해줘도 될 것 같아 보인다. 찾아보니 버추얼 호스트에서 설정하는 경우도 있어서 버추얼 호스트 설정에 아래 내용을 넣었다.

ProxyPass /node/ http://localhost:3000/

이렇게 해주니 외부에서도 페이지에 접근이 가능해졌다. 이제 껐다 켰을때 자동으로 올라오게 하면 되는데 pm2가 이걸 해주는것 같았다. Pm2가 뭔지 찾아보니 아웃사이더님 글을 찾을 수 있었고 끝까지 읽어보니 더이상 궁금해 하지 말고 그냥 pm2를 쓰면 되겠다는 강한 믿음이 생겨서 더이상 알아보지 않았다.

두가지를 더 해줘야 하는데 재부팅 했을 때 pm2가 실행되어야 하고 pm2가 어떤 앱을 실행할지 등록을 해줘야 한다. 링크된 글에는 베이그런트부터 시작해서 장황하게 설명이 되어 있는데 내 경우에는 pm2 startup해보니 시스템이 upstart라고 나와서 아래처럼 등록해줬다.

pm2 startup upstart

근데 위의 명령어 결과가 pm2 startup했을때의 결과와 매우 유사해서 그냥 한번만 해주면 되지 않을까 의심하고 있다. 그 다음에 앱 디렉토리로 가서 pm2로 앱을 실행한다.

pm2 start app.js

그러고 이 상태를 저장해서 다음에 pm2가 다시 실행할 수 있게 한다.

pm2 save

상태 저장이 생각보다 간단해서 마음에 든다. ~/.pm2/dump.pm2가 생성되는데 열어보면 생각보다 긴 json 파일에 이것 저것 정보가 들어있다. 서버를 껐다 켜보니 잘 올라온다.

이제 앱을 만들어 올리면 된다.

Comments

Post a comment

:

: 공개 되지 않습니다. Gravata를 표시 합니다.

:

: HTML 태그를 사용할 수 없습니다.