Node.js | Node.js 사용 준비 | Heroku 운영 환경

이제 로컬 환경에서 Node.js를 실행하는 방법은 알았다. 그럼 이를 서버에 배포하고 공개해 보자.

운영 서버

Node.js 프로그램을 운영하는 경우, 먼저 일반 렌탈 서버에서는 사용할 수 없다. 서버 안에 Node.js의 프로그램이 실행되지 않으면 안되기 때문이다. 단순한 Web 서버가 사용할 수 있는 것만으로는 서비스가 되지 않는다.

그래서 등장하는 것이 “클라우드 서비스"이다. “PaaS"라든지 “IaaS"라는 것으로, Node.js에 대응하는 서비스를 찾아서 사용하는 것이 가장 좋다. 현재 Node.js에 대응하고 있는 주요 클라우드 서비스로는 다음과 같은 것들이 있다.

여기에서는 Heroku를 이용하기로 한다. Heroku는 Ruby on Rails를 사용할 클라우드 서비스로 유명하지만, 현재는 다른 언어도 지원하고 있으며, Node.js도 사용할 수 있다. 그럼 이용 단계를 정리해 보겠다.

Heroku 등록 작업

1. Heroku 계정 등록

우선은 위의 Heroku 사이트를 방문하여 계정을 만든다. 화면 오른쪽 하단에 보이는 “Sign Up"버튼을 클릭하면 가입 페이지로 이동한다. 여기에 등록 계정 정보인 이름 및 이메일 주소 등을 입력하고, “Create Free Acount"버튼을 누른다.

2. 암호 설정

등록 메일 주소로 “Confirm your account on Heroku"라는 등록 메일이 도착한다. 이 이메일에 있는 링크를 클릭하면 브라우저가 열리고 “Welcome to Heroku"라는 Web 페이지가 표시된다. 여기에 등록 이메일 주소로 비밀번호를 설정한다. 이제 등록이 완료되었다.

완료되면, “Heroku Dashboard"라는 화면이 표시된다. 이는 Heroku에서 공개하고있는 Web 애플리케이션 관리 화면이다. 일단 지금은 사용하지 않기 때문에 브라우저를 닫는다.

Heroku Toolbelt 설치

3. 다운로드 페이지로 이동

이어사 “Heroku Toolbelt"라는 프로그램을 설치한다. 이는 Heroku를 이용하기 위해 필요한 프로그램 (Ruby, Git 등)을 세트로 함께 설치 해주는 것이다. 다음 주소를 방문하여, 각 플랫폼의 Heroku Toolbelt를 다운로드한다.

https://toolbelt.heroku.com/

4. 설치

Heroku Toolbelt 전용 설치되어 있습니다. 커멘드 혹은 다운로드하여 프로그램을 설치를 한다(윈도우는 다운받아 설치하는거 밖에 없다). 다운받아서 설치 하는 경우는 기본적으로 기본 설정을 그대로 진행하면 문제없이 설치할 수 있는 것이다.

이것으로 Heroku를 이용하기위한 준비가 되었다. 그러나 아직 배포되지 않았다. 그 전에 필요한 파일 준비한다.

Heroku 배포에 필요한 파일 준비

Heroku는 클라우드 서비스이다. 로컬 환경과 달리 직접 조작 할 수 없다. 따라서 클라우드 환경에서 이루어져야 할 각종 처리는 미리 정해진 형식의 파일로 준비하고, 그 안에 정보를 작성해 두어야 한다.

Node.js 응용 프로그램을 Heroku에서 실행하기 위해서는 “package.json"과 “Procfile"라는 2개의 파일이 필요하다. 또한 작성한 Node.js 스크립트의 일부를 수정해야 한다. 이에 대해 정리해 하겠다.

package.json 만들기

만든 Web 응용 프로그램의 루트(폴더를 열어 바로 위치)에 배치한다. 이것은 JSON 형식의 앱 정보를 기술해 두는 것이다. 다음과 같이 작성해 둔다.

package.json

{
  "name": "... 앱 이름 ..."
  "version": "버전 이름"
}

name에는 각각의 응용 프로그램 이름을 작성하면 된다. version에는 버전 번호 (0.0.1 라든지)를 적당하게 작성한다. 이 package.json에는 그 밖에도 다양한 정보를 작성할 수 있지만, 우선 필요한 것은 이것뿐이다.

Procfile 만들기

이것도 Web 어플리케이션의 루트에 배치한다. 확장자가 없이 단지 “Procfile"라는 이름으로 작성한다. 여기에는 다음의 문장만을 작성한다.

Procfile

web : node sampleapp.js

이것으로 지정된 스크립트가 실행되도록 한다. Node.js의 앱은 이처럼 “web : node 스크립트 파일” 형태로 작성을 한다. 이것으로 클라우드 측에서 “node sampleapp.js"가 실행되고 Node.js 서버가 기동된다.

sampleapp.js 수정

마지막으로 또 하나 앞에서 만든 Node.js 스크립트 파일(sampleapp.js)의 코드를 수정해야 한다. 스크립트 파일을 확인하고 다음 문장을 바꿔준다.

수정전

server.listen(1234);

수정후

server.listen(process.env.PORT, process.env.IP);

Node.js의 스크립트에는 반드시 listen(xx);라고 작성된 문장이 있다. 이 부분을 listen(process.env.PORT, process.env.IP);으로 수정한다.

이제 파일들이 준비가 완료되었다. 자, 이제는 배포만 하면 된다!

Heroku에 배포(deploy)

그럼, 드디어 Heroku에 Node.js 응용 프로그램을 배포를 해보자. 이 작업은 기본적으로 명령 라인에서 한다. Heroku Toolbelt를 설치하여서 Git이 포함되어 있기에, 거기에 포함되어 있는 “Git Bash"을 시작하고 이용한다. 또는 “명령 프롬프트” 또는 “터미널"을 기동해서 작업을 해도 상관없다.

공개 키 생성 및 Heroku 등록

이것은 필수는 아니다. 하지 않아도 그대로 가능 하지만, 키를 새롭게 준비하지 않으면 잘되지 않는 경우도 있으므로 설명하도록 하겠다.

$ ssh-keygen
$ heroku keys : add

SSH 공개 키를 생성하고 Heroku를 등록한다. “ssh-keygen"을 실행하면 공개 키가 만들어 진다. “어디에 어떻게 만듭니까?“라는 것을 찾아 오므로, 모두 그대로 Enter로 넘어가 된다. 또한 이미 공개 키가 있을 경우 “Overwrite (y/n)?“라고 묻는다. 이럴 경우 “y"를 입력하여 덮어 쓰기한다.

1. 현재 디렉토리 이동

cd Desktop/node.js-sample

우선은 Node.js 스크립트 파일이 있는 위치로 디렉토리를 이동한다. “cd 디렉토리"를 입력하여 이동해야 한다. 주의할 점은 경로 구분 기호(path separator)이다. Windows 사용자의 경우 명령 프롬프트에서 “cd Desktop\node.js-sample"이지만, Git bash의 경우에는 “cd Desktop/node.js-sample"과 같이 슬래시를 사용해야 한다.

2. Git 초기화

$ git init

이동한 위치에서 Git의 초기화 작업을 수행한다. 그러면 Git 관련 파일이 생성되고, 그 디렉토리에 있는 파일들을 Git으로 배포할 준비가 된다.

3. Heroku 어플케이션 생성

$ heroku create 어플케이션명

Heroku에 응용 프로그램을 제공하다. 이는 응용 프로그램을 배포하기 위한 장소로 간주한다. Heroku 측에 어플리에션 공개 장소를 확보 해두고, 거기에 파일 등을 복사해 가는 것이다. 따라서 게시 위치를 이제 Heroku 측에 제공한다.

어플케이션 이름은 뭐든지 상관 없지만, Heroku에서 이미 사용되고 있는 것이라면 안된다. 어플케이션 이름은 Heroku의 하위 도메인으로 제공되기 때문에 같은 이름의 사람이 이미 있는 경우 새로 만들 수 없다. 그러므로 반듯이 다른 사람과 중복되지 않는 이름을 해야 한다.

4. Git에 업데이트 된 파일을 추가하기

$ git add .

여기에서 부터 배포을 위한 작업이다. “git add"는 업데이트 된 파일을 Git에 추가하여 등록하는 것이다. “git add .“와 같이 마지막에 점(.)을 있으면, 업데이트 된 모든 파일을 지정할 수 있다. 처음에는 모든 새로 만든 파일이기 때문에, 점(.)을 이용해서 등록한다.

5. 커밋하기

git commit -m "...... 뭔가 코멘트를 작성 ..."

커밋합니다. 이것으로 지금까지 git add로 추가 등록해 놓은 수정 정보를 함께 전송된다. -m 후에는 이번 업데이트 프로세스에 대한 간단한 설명을 작성한다. 이것은 뭐든지 상관 없다.

6. 푸시하기

git push heroku master

커밋 수정 정보를 바탕으로 실제로 필요한 파일들을 업로드 시킨다. 이것으로 배포 작업이 실제로 행해진다고 생각하면 된다. 제법 많은 파일이 서버에 추가되어 나가기 때문에, 조금 시간이 걸린다.

이제 배포가 완료되면, 아래 주소를 방문하여 대시 보드를 확인한다. 만든 응용 프로그램 이름이 추가되어 있을 것이다.

https://dashboard.heroku.com/apps

이제 응용 프로그램 이름을 클릭하면 해당 응용 프로그램의 여러 설정하는 화면이 나타난다. 여기에서 응용 프로그램 이름의 오른쪽에있는 사각형 아이콘(윈도우 줌 상자 아이콘)를 클릭하면 새 창이 열린다 배포한 앱이 표시된다. 이것으로 로컬에서 기동했을 때 동일하게 “Hello World"가 표시되면, 배포 성공이다.

 

우선, 이것으로 Node.js를 사용한 프로그래밍의 준비가 대충되었다. 다음은 앞에서 샘플로 작성한 스크립트를 중심으로 스크립트에 대한 설명을 시작하기로 한다.