apache + node.js 연동

| 2019년 5월 30일 | 0 Comments

안녕하세요 기술지원팀 박찬혁입니다.

오늘은 apache와 node.js 설치 및 연동법에 대해서 글을 작성하겠습니다.

node.js란 서버사이드 자바스크립트 기술입니다.

기존의 자바스크립트들이 전부 브라우저에서 실행하는 형태였다면
node.js는 서버사이드에서 실행되는 자바스크립트 입니다.

그래서 웹 서버나 SMTP 서버 등과 같은 서버 프로그램을 작성할 수 있고 http://expressjs.com/ 과 같은 웹 프레임워크도 있습니다.

자바 스크립트가 HTML5의 등장으로 웹 개발의 비중이 높아져서 이로인한
프론트엔드 개발 수준, 높은 개발이 요구됨에 따라 자바스크립트가 발전 되었는데

node.js의 등장으로 백엔드까지 자바스크립트로 제어가 가능해져
한 가지의 언어로 서버와 클라이언트를 개발 할수 있어 훨씬 높은 생산성을 가지는 장점이 있습니다.

테스트한 서버 환경은 CentOs 6, apache 2.4.3, node.js는 v10.15.3 입니다.

node.js는 대게 npm 설치로 진행하지만 이번 글에서는 node.js 소스 설치로 진행하였습니다.

1. [root@onlypch src]# wget http://nodejs.org/dist/latest-v10.x/node-v10.15.3.tar.gz

2. [root@onlypch src]# tar zxvf node-v0.10.24.tar.gz

3. [root@onlypch src]# cd node-v10.15.3

4. [root@onlypch node-v10.15.3]# ./configure

5. [root@onlypch node-v10.15.3]# make

6. [root@onlypch node-v10.15.3]# make install

7. [root@onlypch node-v10.15.3]# node -v

v10.15.3

 

 

node.js configure 시 CentOS 6에서 제공하는 gcc version이 낮아 gcc 버전을 업그레이드를 진행 해야됩니다.

업그레이드 순서는 다음과 같습니다.

1. [root@onlypch node-v10.15.3]# yum install centos-release-scl
2. [root@onlypch node-v10.15.3]# yum install devtoolset-8-gcc devtoolset-8-gcc-c++
3. [root@onlypch node-v10.15.3]# scl enable devtoolset-8 bash

다음은 node.js 연동 설정 부분입니다.

우선 서버 내부 방화벽과 외부 방화벽에 포트 open을 시켜줍니다.

포트는 3000번으로 설정하였습니다.

vi /usr/local/apache/conf/extra/httpd-vhost.conf

<VirtualHost *:80>
DocumentRoot “/home/pch”
ServerName 도메인 명
ErrorLog “logs/dummy-host2.example.com-error_log”
CustomLog “logs/dummy-host2.example.com-access_log” common
ProxyRequests off
<Proxy *>
AllowOverride All
Require all granted
</Proxy>
<Location />
ProxyPass http://도메인명:3000/
ProxyPassReverse http://도메인명:3000/
</Location>
</VirtualHost>

다음은 연동 시 httpd.conf에 설정해 줄 내용입니다. 

vi /usr/local/apache/conf/httpd.conf

아래의 두 내용을 주석해제 해줍니다.

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_module modules/mod_proxy.so

모든 설정을 완료 후 연동 테스트를 위해 test.js를 만들어 테스트를 진행합니다.

[root@onlypch pch]# vi test.js

var http = require(“http”);

http.createServer(function(req, res) {

res.writeHead(200, {“Content-Type”: “text/plain”});

res.write(“Hello\r\n”);

res.write(“World\r\n”);

res.end();

}).listen(3000);

[root@onlypch pch]# node test.js

[root@onlypch pch]# netstat -nltp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1414/mysqld
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1072/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1047/sshd
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 27356/node
tcp 0 0 :::80 :::* LISTEN 726/httpd
tcp 0 0 :::22 :::* LISTEN 1047/sshd

 

테스트 결과입니다.

 

감사합니다.

Category: 솔루션/IT기타

About the Author ()