Nodejs로 구현한 서비스를 Cafe24 웹 호스팅에 적용하기

웹 호스팅 신청하기

http://www.cafe24.com 사이트에 로그인 후, “Node.js 호스팅” 상품을 선택합니다. (필요하다면 회원가입도 진행되어야 합니다.

 

사용량에 따라 적절한 상품을 선택합니다.

 

계정 신청에 필요한 정보를 입력합니다. 여기서 지정하는 호스팅 아이디가 DATABASE의 계정명이자, DATABASE 이름이 됩니다. 또한 FTP,Telnet,DB 비밀번호를 반드시 기억해 두어야 합니다.

 

Node 버전과 신청 기간을 선택합니다. 버전은 가급적 높은 버전을 사용하는 것이 좋습니다. 또한 이 페이지의 아래로 스크롤을 이동하면 신청 내역에 따라 결제를 진행하는 메뉴가 표시됩니다. 선택 사항에 따라 결제를 진행해야 합니다.

 

데이터베이스 이관하기

호스팅 신청이 완료되거나 cafe24 메인 페이지의 “나의 서비스 관리”라는 링크를 통해서 호스팅 관리 페이지로 이동할 수 있습니다. 

 

사이트의 왼쪽 메뉴 중에서 “MySQL 웹어드민” 메뉴를 선택합니다.

 

페이지가 이동되면 화면 중앙의 “접속하기” 버튼을 클릭합니다.

 

팝업으로 WebMysql 이라는 페이지가 열립니다. 호스팅 아이디와 호스팅 신청시 설정한 DATABASE 비밀번호를 입력하여 로그인 합니다.

 

사이트 왼쪽에서 호스팅 계정 아이디로 된 데이터베이스로 이동합니다.

 

다음의 명령어로 로컬에서 MySQL 데이터베이스를 백업받습니다.

mysqldump -u아이디 -p –databases 데이터베이스이름 > 백업받을파일이름.sql

예를 들어서 계정 아이디가 root이고 DB이름이 mysite인 경우 다음과 같이 수행할 수 있습니다.

 

백업받은 파일을 텍스트 편집기로 열면 파일 상단에 데이터베이스에 대한 CREATE구문과 USE 구문이 있는 것을 확인할 수 있습니다. 여기에서 이 데이터베이스 이름을 웹 호스팅의 계정 아이디로 변경해야 합니다. 왜냐하면 웹 호스팅에서는 계정아이디가 데이터베이스 이름으로 사용되기 때문입니다.

만약 사용중인 MySQL 버전에서 데이터베이스 CREATE 구문과 USE 구문을 생성하지 않는다면 이 과정은 생략해도 좋습니다.

 

만약 Node에서 Mysql-session 모듈을 사용하고 있다면 백업파일에서 sessions 테이블의 구조에 사용되는 utf8mb4 관련 케릭터셋 설정 구문을 삭제해야 합니다.

 

WebMysql 사이트에서 “Import” 탭으로 이동한 후 백업받은 MySQL 데이터베이스파일을 업로드 하면 데이터베이스 복원이 완료됩니다.

 

데이터베이스 복원이 완료된 모습입니다.

 

 

소스코드에서 데이터베이스 접속정보 변경하기

Cafe24의 사이트 관리 페이지에서 “서비스 접속정보” 페이지로 이동하면 MySQL에 대한 접속정보가 표시됩니다.

 

이 정보를 확인하여 Node에서 데이터베이스 접속정보를 명시해 놓은 부분을 수정해야 합니다.

 

 

Public Key 생성, 등록하기

Cafe24의 Node서비스는 FTP를 통한 파일 업로드가 아닌 Git을 통한 파일 Push 방식으로 소스를 반영해야 합니다. 이를 위해서 Git 시스템에 인증하기 위한 Public Key 파일을 생성해야 합니다.

Github 클라이언트가 설치되어 있는 상태에서 터미널을 열어 다음의 명령어를 수행합니다.

ssh-keygen -t rsa -C “키 파일의 별칭”

키 파일의 별칭은 일반적으로 자신의 이메일주소를 사용합니다.

 

위의 스크린샷을 확인해 보시기 바랍니다.

  1. public key 파일을 생성하기 위한 명령어 입니다.
  2. public key 파일이 저장되기 위한 경로를 묻습니다. 기본경로를 사용하기 위해서 아무것도 입력하지 않은 채로 엔터를 누르면 됩니다.
  3. public key 파일의 비밀번호를 지정합니다.

 

위의 스크린샷에서는 키 파일의 생성이 완료되면서 “/Users/leekh/.ssh/id_rsa.pub” 경로로 파일이 생성되었다고 표시됩니다. 실제로 그 경로로 이동하면 아래와 같이 파일이 존재하는 것을 확인할 수 있습니다.

 

이 중에서 확장자가 “.pub”인 파일을 텍스트 편집기로 열어서 모든 내용을 복사합니다.

 

Cafe24의 사이트 관리에서 “Public key 관리” 페이지로 이동한 후 새로운 키를 등록합니다. 이름은 직접 지정하는 별칭이고 “Public key 입력”이라는 공간에 미리 복사해 둔 파일의 내용을 붙여넣으면 됩니다.

 

 

App 생성하기

Cafe24 사이트 관리 페이지에서 “앱 생성/관리” 메뉴로 이동합니다. 생성할 App의 이름을 지정하고 “만들기” 버튼을 클릭합니다.

 

앱이 생성되면 해당 앱을 선택하고 “Key 할당” 버튼을 누릅니다.

 

생성된 키를 왼쪽에서 오른쪽으로 이동시켜 등록합니다.

 

 

Cafe24 Git에서 저장소 복제하기

Cafe24 Node 호스팅은 앱을 생성할 때 Git 저장소를 함께 생성합니다. 이 저장소의 주소는 생성된 앱 리스트에서 “저장소”라는 항목에 표시되는 주소를 통해서 확인할 수 있습니다.

 

빈 폴더를 하나 생생하고 터미널에서 해당 폴더의 위치로 이동합니다. 이 폴더 안에 Cafe24의 저장소를 복제해야 합니다. 저장소 복제를 위해서 다음의 명령어를 입력합니다.

 

저장소 주소는 Cafe24의 앱 리스트 목록에서 “저장소”로 표시되는 문자열중 앞부분의 “git”이라는 단어를 제외한 값 입니다. 위의 명령어들을 수행하면 아래와 같이 cafe24에 생성된 저장소를 내 PC로 복제합니다. 하지만 이 단계에서는 아직 호스팅 서버에 아무런 소스코드도 등록되어 있지 않은 단계이므로 다운로드 되는 파일들이 없을 것 입니다.

저장소가 복제되는 과정에서 비밀번호를 입력해야 합니다. 비밀번호는 Public Key를 생성할 때 지정한 비밀번호 입니다. 

“fatal: Couldn’t find remote ref master” 라는 메시지는 현재 서버에 업로드 된 소스코드가 하나도 없다는 의미입니다. 지금 최초로 소스를 업로드 하는 과정이므로 당연히 지금은 업로드 된 소스코드가 하나도 없을 것 입니다.  무시하고 다음 과정으로 넘어가도 됩니다.

 

이제 완성한 소스코드를 복제된 저장소 폴더 안으로 옮깁니다. 이 때 주의할 점은 node_moduels 폴더는 필요 없다는 부분과 package.json 파일은 반드시 존재해야 한다는 점 입니다. 또한 프로그램을 구동시키기 위한 시작 파일의 이름을 web.js 로 변경해야 합니다.

 

 

소스코드 수정하기

소스코드를 commit 하기 전에 포트번호와 소스상에 명시된 절대경로가 있다면 cafe24의 경로로 변경해야 합니다.  포트번호와 도메인은 cafe24의 App리스트에 명시되어 있습니다.

 

Express 서버를 구동시키기 위해서 명시해 둔 포트번호가 있다면 이 값을 소스에서 수정합니다. 여기에서는 별도의 설정파일(_config.js)를 만들어 두었기 때문에 해당 파일을 수정했습니다.

 

또한 소스코드 어딘가에 사이트의 절대 경로를 명시하고 있는 값이 있다면 이 값들을 cafe24에서 발급받은 도메인으로 수정해야 합니다. 이 때 프론트에서 접근하기 위한 주소에서는 포트번호를 명시하지 않습니다.

 

 

소스코드 업로드 하기

변경사항을 스테이지에 올리고 커밋을 수행하기 위해서 다음의 명령어를 차례로 입력합니다.

 

마지막으로 변경된 소스코드를 서버에 전송하기 위하여 다음의 명령어를 입력합니다.

업로드가 진행되는 과정에서 비밀번호를 두 번 입력해야 합니다. 첫 번째 비밀번호는 Public Key를 생성할 때 지정한 비밀번호이고 두 번째는 Cafe24에서 호스팅을 신청할 때 입력한 서버 계정의 비밀번호 입니다. 서버 계정 비밀번호는 DATABASE 비밀번호와 동일합니다.

 

 

결과 확인하기

Cafe24의 앱 리스트에서 앱을 재실행(중지 > 실행)합니다. 

 

이제 cafe24에서 발급한 도메인을 통해서 서비스에 접속해 봅니다. 서비스에 접속할 때는 포트번호는 생략합니다.

댓글 남기기