만족
[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"
},
'Backend > Express' 카테고리의 다른 글
[Express] proxy 환경에서 클라이언트의 ip 확인하기 (3) | 2022.07.17 |
---|---|
[Express] forever로 배포한 서비스가 오류로 종료된 후 다시 시작되지 않는 현상 (0) | 2020.12.18 |
[Express] Response (res) (2) | 2020.06.28 |
[Express] Request (req) (0) | 2020.06.28 |
[Express] Handler (0) | 2020.06.28 |
Comments