만족

[Express] Apache와 연동해 배포하기 본문

[Express] Apache와 연동해 배포하기

Backend/Express Satisfaction 2020. 11. 5. 22:07

기존 사용하던 서버에서 Apache+php 조합을 사용하고 있기 때문에 nginx를 새로 설치하기는 부담스러워

apache+express 조합으로 서비스할 것이다.

 

node/npm은 기존에 설치되었다고 가정한다.

 

설치하지 않았다면, soojae.tistory.com/25 를 참고해 설치를 진행하면 된다.

 

apache의 경우엔 단순히 

sudo apt-get install apache2

하면 된다.

 

버전 정보

Ubuntu 16.04

Apache 2.4.18

아파치 설정

sudo nano /etc/apache2/sites-avaliable/000-default.conf

를 이용해 vhost정보를 수정할 것이다.

...
<VirtualHost *:80>
        ServerName [도메인명(ex: test.com)]
        ServerAdmin [관리자 이메일]
        DocumentRoot [문서 루트 경로(ex: /var/www/html/your_express_project)]
        ProxyRequests Off
        ProxyPreserveHost On

        ErrorLog ${APACHE_LOG_DIR}/error.log

        ProxyPass / http://localhost:3000/ #기본 포트를 바꿨다면 3000을 다른 번호로 바꿔준다
        ProxyPassReverse / http://localhost:3000/ #기본 포트를 바꿨다면 3000을 다른 번호로 바꿔준다
        <Proxy *>
        	Order deny,allow
        	Allow from all
        </Proxy>
</VirtualHost>

위의 내용을 추가한 후, 필요한 모듈을 enable해준다.

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_html

sudo service apache2 restart

서버 재시작까지 완료하면 마무리된다.

 

만약 아파치 재시작 중 오류가 발생했다면 

systemctl status apache2.service
또는
journalctl -xe

위의 명령어로 오류 내용을 확인하고 수정한다.

 

아마 대부분 오타 혹은 모듈 로드 실패일 텐데,

오타일 경우 위의 000-default.conf파일을 다시 확인해 주면 되고

모듈 로드 실패인 경우 어떤 모듈 로드에 실패했는지 알아보고

sudo a2enmod [모듈명]

해준 후 아파치를 재시작하면 된다.

 

Express Project 설정

프로젝트를 서버로 가져왔다면, 프로젝트 루트 경로로 이동 후 의존성을 설치해준다.

cd /var/www/html/your_express_project
npm install

그리고 배포를 도와주는 forever 모듈을 설치한다.

npm install forever -g

설치가 완료되면 forever를 이용해 express를 실행한다.

forever start bin/www

배포가 완료되었다.

 

forever 모듈에서 자주 사용하는 명령어는 다음이 있다.

forever list //forever를 이용해 서비스중인 프로세스 목록
forever start [target] //target을 시작
forever stop [id/uid/pid...] //id,uid,pid를 이용해 선택한 서비스 종료

만약 해당 명령어를 치기 귀찮다면

package.json의 script에 다음처럼 deploy를 추가할 수 있다.

  "scripts": {
    "start": "node ./bin/www",
    "debug": "nodemon ./bin/www",
    "deploy": "forever start ./bin/www"
  },

 

 

아 노드너무좋다....

 



Comments