2017년 3월 16일 목요일

[Web/Node.js] Express 설치 및 웹페이지 연결시키기

Express 설치 및 웹페이지 연결시키기


1. Express 설치

express를 사용할 node.js 프로젝트 폴더로 이동합니다.
해당 폴더에서 아래 명령어를 수행합니다.
npm install express --save

설치를 하고 나면 package.json에 아래와 같은 dependency가 추가됩니다.
"dependencies": {
    "express": "^4.15.2"
  }


2. 웹페이지 연결

express를 이용해서 웹서버를 열고, 브라우저에서 접속했을 때 index.html을 나타내도록 해보겠습니다.

우선 index.html을 만듭니다. 위치는 프로젝트 루트에서 views라는 폴더를 만들고 그 안에 만들어 줍니다.
mkdir views
nano index.html

index.html의 내용을 적당히 채워줍니다. 되는지 먼저 봐야하니깐 화려할 필요는 없습니다.

그리고 npm 패키지 하나가 더 필요합니다. ejs 패키지 인데, 프로젝트 루트 위치에서 아래 명령어로 설치합니다. express 설치하는 것과 같습니다.
npm install ejs --save

ejs 패키지는 html 템플릿 엔진입니다. ejs에 대한 자세한 사항은 다음에 다시 살펴보도록 하겠습니다.

이제 메인이 되는 자바스크립트 코드를 아래처럼 작성합니다.
1 |var express = require('express');
2 |var app = express();
3 |
4 |app.set('views', __dirname + '/views');
5 |app.set('view engine', 'ejs');
6 |app.engine('html', require('ejs').renderFile);
7 |
8 |app.get('/',function(req,res){
9 |        res.render('index.html');
10|});
11|
12|var server = app.listen(80, function(){
13|        console.log("The server has started on port 80");
14|});

1번 줄은 express 패키지를 본 코드에서 사용할 수 있게 가져오는 것입니다. java에서의 import, c에서의 include와 유사합니다.
2번 줄은 express의 기능을 사용할 수 있는 객체를 가져오는 것입니다. 가져온 객체를 app이라는 이름의 변수에 담아서 express의 기능을 사용하는데 쓸겁니다.
4번 줄은 html 파일들을 위치시킨 경로를 설정하는 것입니다.
5,6번 줄은 html을 나타내는 엔진으로 ejs 패키지를 사용하다는 것입니다.
8번 줄은 '/'로 get요청이 오면 index.html 파일을 반환한다는 것입니다.
12번 줄은 80번 포트로 웹서버를 연다는 것입니다.

이렇게 작성하고 node로 자바스크립트를 실행하면 웹서버가 시작됩니다.
그리고 웹브라우저에서 해당 서버로 http 접속을 하면 index.html에 작성한 내용이 표시되는 것을 확인할 수 있습니다.
(80번 포트는 root 권한으로 웹서버를 실행시켜줘야합니다. 그래서 우분투에서는 sudo를 붙이도록 합니다.)

[Node.js] npm 프로젝트 시작하기

npm 프로젝트 시작하기


node.js에서는 내가 직접 만든 .js 파일들 뿐만 아니라 이미 다른 사람들이 만들어 놓은 .js 파일들을 사용할 수 있습니다. 보통 이런 .js파일들을 패키지 라고 부르게 됩니다.

npm은 node.js에서 사용하는 패키지 관리도구입니다. 즉, 다른 사람들이 만들어 놓은 패키지를 사용할 수 있게 도와주는 도구인것이죠.
Maven이나 Gradle 같은 부류라고 생각할 수 있을 것 같습니다.

본 포스트에서는 프로젝트를 npm 패키지로 선언하는 방법을 정리해봅니다.

1. npm 설치

npm은 node.js를 설치하면 함께 설치됩니다.
우분투에서의 node.js의 설치 방법은 아래 링크에 정리되어 있습니다.
https://walkinpcm.blogspot.kr/2017/03/webnodejs-nodejs.html


2. npm 패키지 선언

프로젝트에서 npm을 사용하려면 해당 프로젝트를 npm 패키지로 만들겠다고 선언해줘야 합니다.

이 과정은 git의 선언과 유사하다고 생각합니다.
git도 프로젝트를 git과 연결시킬때, 해당 폴더에서 git init 을 수행하지요. 그러고 나면 git 관련 파일이 생성됩니다.
npm도 유사합니다. 프로젝트를 npm 패키지로 선언하고 나면 package.json이라는 파일이 생성됩니다.

npm 패키지 선언은 아래 명령어로 시작합니다.
npm init

init 명령을 수행하고 나면 몇가지 질문이 차례대로 나옵니다.
name            : 패키지의 이름. 
version         : 패키지의 버전.
description     : 패키지 설명.
entry point     : 패키지 실행시 이 패키지를 구동시키는 자바스크립트 파일
test command    : TDD를 할 때의 명령. 빈칸으로 넘어가도 됨.
git             : 연결되는 git 주소.
keyword         : 옵션. 빈칸으로 넘어가도 됨.
author          : 옵션. 빈칸으로 넘어가도 됨.
license         : 디폴트로 넘어가도 무방.


질문에 대한 답을 입력하고나면 package.json 파일이 생성됩니다.
이 파일이 만들 패키지에 대한 개요 정도라고 봐도 될 것 같습니다.

package.json에는 앞으로 프로젝트에 외부 패키지를 설치할 때마다 해당 dependency에 대한 내용이 자동으로 추가됩니다.




[Web/Node.js] Node.js 설치

우분투(Ubuntu)에서 Node.js 설치하기



개인적인 프로젝트를 진행하는데 server-side를 새롭게 node.js로 해보고 싶은 욕심이 생겨서 설치부터 정리해봅니다.

1. Node.js 설치

node.js 홈페이지에 가면 다양한 플랫폼에 대한 node.js 설치파일이나 설치방법이 제공됩니다.
우분투에서 설치하는 방법은 아래 링크처럼 설명되고 있습니다.
https://nodejs.org/ko/download/package-manager/#debian-ubuntu-linux

지원가능한 우분투 버전도 나오는데 12.04, 14.04, 16.04가 지원되네요. 저는 14.04에 해볼 겁니다.

설치는 간단합니다. 아래 명령어 2줄만 차례대로 수행해주면 됩니다.
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
참고로 위의 방법으로는 node.js 6.x 버전을 설치합니다.
이 글을 쓰는 시점에서는 6.x 버전이 안정된 버전이고, 7.x는 최신이기는 하나 아직 안정되지 않은 버전이기 때문에 저는 6.x를 선택했습니다.

위 두줄로 간단히 설치를 마치고 나면 버전 확인으로 설치가 된것을 확인할 수 있습니다.
$node --version
v6.10.0

2. Node.js 실행

node.js는 확장자가 .js인 파일을 실행할 수 있습니다.
실행방법은 간단하게 node 명령어를 이용하면 됩니다.

예를 들어서 아래와 같이 콘솔로그를 출력하는 helloworld.js 파일을 만듭니다. 에디터는 무엇을 이용하든 무관합니다.
console.log('Hello World!');

이 helloworld.js 파일의 실행은 아래와 같이 하면됩니다.
$node helloworld.js
Hello World!
그러면 작성한 문구가 실행됩니다.


3. Express를 이용한 웹서버 실행

Express는 node.js에서 사용가능한 웹 프레임워크입니다. node.js에서 웹서버를 더욱 간편하게 구축할 수 있게 해주는 도구라고 보면 됩니다.

Express에 대한 내용은 다음 포스트에서 정리합니다. 링크를 걸어놓았습니다.
https://walkinpcm.blogspot.kr/2017/03/webnodejs-express.html

2017년 3월 8일 수요일

[Server] 가비아의 서버 모니터링 솔루션 적용해보기.

[Server] 가비아의 서버 모니터링 솔루션 적용해보기.


가비아에서 무료로 사용할 수 있는 서버 모니터링 상품을 내놓았습니다.
가비아에서 자체 개발한 SaaS형 서버모니터링시스템(SMS)라고 합니다.
(링크 : https://event.gabia.com/s_event_170221?utm_source=facebook&utm_medium=banner&utm_term=20170221_idc_%EC%84%9C%EB%B2%84%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81&utm_campaign=%EC%84%9C%EB%B2%84%ED%98%B8%EC%8A%A4%ED%8C%85 )


서버를 운영하면 현재 상태가 어떤지 확인하는 것은 필수적이죠.
본 포스팅에서는 가비아의 서버모니터링시스템을 적용하는 과정을 정리해보고 어떤 서비스를 어떻게 제공하고 있는지 확인해 보겠습니다.

우선, 링크에서 설명되는 가비아 SMS의 특징은,
 1. 간편한 에이전트 설치(가이드 제공)
 2. 저장 장치 사용량, I/O Read/Write 모니터링
 3. 네트워크 사용량(In/Out bps, In/Out pps) 모니터링
 4. CPU, 메모리, Swap 등의 성능 모니터링
 5. 항목별 임계치 설정, 이벤트 스탭샷 등 이력관리
 6. 사용자 인터페이스 극대화 최적의 UI 제공

기본적인 사항들에 대한 모니터링은 지원하는 것 같습니다.

또한, 에이전트만 설치하면 무료로 계속 사용할 수 있고, 가비아가 아닌 외부 서버에도 설치할 수 있고(단, 가비아 회원 가입이 필요합니다.), 서버 대수의 제한도 없고, 정식 오픈 이후에도(지금은 베타에요) 현재 제공하는 기능은 계속 무료로 제공한다고 합니다.

참고로, 데이터 수집 주기는 1분이며 이 데이터는 최대 60일간 보관 및 조회할 수 있다고 합니다.

그럼 이제 에이전트를 설치해보겠습니다.

> 가비아 서버 모니터링 시스템(SMS) 이용 방법

크게 순서를 보면
 1. 가비아 회원 가입 & 로그인
 2. 관리툴 페이지 접속
 3. 에이전트 설치 후 서비스 이용

간단합니다.

1. 가비아 회원 가입 & 로그인

가비아 홈페이지에서 회원가입을 합니다.
네이버와 페이스북 로그인을 지원하는데, 저는 그냥 가입해서 해보겠습니다.

가입 절차는..뭐 굳이 정리할 것도 없이 간단합니다.
아이디, 비밀번호, 이름, 이메일, 핸드폰 번호 적고 인증하고 하면 끝나네요.


2. 관리툴 페이지 접속

로그인 후에 관리툴 페이지로 접속합니다.
가비아 홈페이지에서 메뉴를 찾으려 했는데 못 찾겠어서 그냥 링크를 타고 들어갔습니다.
링크 : http://xms.gabia.com

3. 에이전트 설치 후 서비스 이용

관리툴 페이지에 들어가니깐 바로 에이전트 설치 방법이 친절하게 설명됩니다.

지원 OS는 Ubuntu, CentOS/Fedora, Windows입니다.
각 운영체제별로 지원 버전도 바로 나타납니다. 저는 우분투를 쓰는데 제가 사용하는 14.04 LTS도 지원하고 있습니다.

(1) apt repository 추가.
설치도 매우 간단하네요.
apt를 이용해서 설치하게 되는데, 기본적인 apt repository에 포함되어 있는 패키지가 아니기 때문에 먼저 repository를 추가합니다.

wget http://monrepo.gabia.com/repo/debian/gabiarepo.gpg -O - |sudo apt-key add -
wget http://monrepo.gabia.com/repo/debian/gabiamon-repo_1.0.0-1_all.deb
sudo dpkg -i gabiamon-repo_1.0.0-1_all.deb
sudo apt-get update

(2) apt-get으로 에이전트 설치
apt-get install 명령으로 가비아 SMS 에이전트를 설치합니다.

sudo apt-get install gabia-mond

설치 과정에서 2가지 질문이 나옵니다.
- User? : 기본적으로 root가 선택되어 있는데, 저는 따로 만들어 놓은 계정을 적었습니다.
- Use "sudo"? : root계정이 아닌 계정을 선택해서 그런지 sudo를 쓸거냐고 묻네요. y를 선택합니다.

설치를 하고 났는데 아래처럼 intall 완료라고 뜨면서 그 다음줄에는 찜찜하게 오류가 있는듯한 메세지가 뜨네요..

Install completed...
/etc/init.d/gabia_mond: 6: [: sudo: unexpected operator

베타버전의 버그인건지.. 문의메일이나 넣어봐야겠습니다.

(3) 키 발급 & 스크립트로 에이전트 실행
관리툴 페이지에서 설치 가이드를 따라가다보면 [Key 발급] 버튼이 있습니다. 이 버튼을 눌러서 Key를 발급받습니다.
긴 문자열도 아니고 다소 짧은 문자열로 키가 바로 옆에 표시됩니다. 이것을 복사해 둡니다.
(참고로 Agent Key는 모니터링 페이지에서 확인할 수 있으니 별도로 저장해둘 필요는 없습니다.)

서버에서 아래 명령어로 위에서 설치한 에이전트를 실행시킵니다.

sudo env PATH=$PATH:/usr/local/gabia_mond/bin gabia_mond --start --key

그러면 Agent Key를 묻는데 방금 복사한 키를 입력합니다.
아래와 같은 시작 메세지가 뜨면서 모니터링이 시작됩니다.

gabia_mond[1599] has started
Gabia Server Monitoring Agent Start

시작되고 나면 터미널 창에서 커맨드 입력 라인이 안 뜨는데 엔터한번 치면 나타납니다.

(4) 모니터링 확인
관리툴 페이지의 좌측 사이드 메뉴에서 '모니터링' 메뉴를 선택하면 현황을 볼 수 있습니다.
처음 에이전트를 설치하고 난 뒤에는 데이터를 수집하는데 몇분이 소요되는 듯 합니다.

기본적인 CPU상태나 메모리 사용량을 확인하는데는 충분하지 싶습니다.
개인적으로 모니터링 부분을 깊게 알지 못하여서 이 정도도 만족스럽네요.

아! IP 주소가 표시되는데 저는 AWS의 EC2에 설치한 우분투에서 진행해서 그런지 IP가 Public IP가 아니라 Private IP가 표시됩니다. EC2 우분투에서 ip를 확인하면 Private IP만 나타나는데 그래서 그런가봅니다.

상단의 탭들을 선택하면 각각에 대한 좀 더 자세한 현황을 볼 수 있습니다.


2017년 2월 21일 화요일

[Web] Atom에서 git-plus 설치하기

Atom에서 git-plus 설치하기

(부제 : git-plus 에러 시행착오)

1. git-plus 설치

Atom의 상단 메뉴에서 'Packages'-'Settings View'-'Install Packages/Themes'를 선택합니다.

그 다음, git-plus를 검색해서 Install합니다.
설치는 끝입니다.(너무 간단)

2. git-plus 설정

사실 이 부분이 난관이었습니다.

처음 Atom을 접하고 여러 패키지들을 설치했는데, 아무것도 따로 설정을 해줄 필요는 없었습니다.
그래서 git-plus도 설치하고 아무런 설정을 해주지 않았죠...
이게 실수였습니다.

Atom뿐만 아니라 git을 사용하는 어떤 프로그램이든 git프로그램의 위치를 알아야 git을 수행합니다.
그래서 git-plus도 자신이 사용할 git프로그램이 어디있는지 경로를 알아야 정상적으로 동작합니다.

위에서 git-plus를 설치하고 나면 바로 'Install'이 있던 자리에 'Settings' 버튼이 생깁니다.
Setting에 들어가면 Git Path를 설정 할 수 있는데, 여기에 자신이 사용하는 git프로그램의 경로를 입력해주면됩니다.



git-plus가 사용할 git프로그램의 위치를 모르면 아래와 같이 텍스트가 깨진 상태로 어쩌고저쩌고 에러가 발생합니다.


2016년 12월 25일 일요일

[AWS] AWS EC2에 Elastic IP 연결하기

[AWS] AWS EC2에 Elastic IP 연결하기


AWS EC2는 중지되었다가 다시 시작하면 Public IP가 변경됩니다.
그래서 Public IP로 SSH접속을 하거나 DNS에 연결시켜 놓기가 불편합니다.
이런 불편함을 없앨 수 있는 방법이 AWS Elastic IP를 사용하는 것입니다.
Elastic IP는 EC2 인스턴스의 상태와 관계없이 고정적으로 유지되는 IP주소라고 볼 수 있습니다.
그리고 다행히 AWS에서는 EC2 인스턴스 하나당 EIP(Elastic IP) 하나를 무료로 사용할 수 있게 해줍니다.
이번 포스팅에서는 EIP를 만들고 EC2 인스턴스에 할당하는 방법을 정리해 봅니다.

1. Elastic IP 메뉴로 이동
AWS EC2 서비스에서 왼쪽 Elastic IP 메뉴를 선택합니다.
그리고 'Allocate new address'를 누릅니다.




2. Elastic IP 생성
우측의 'Allocate' 버튼을 누릅니다.



3. 생성된 Elastic IP 확인
바로 Elastic IP가 생성됩니다.
딱히 기록할 필요는 없습니다. 언제나 확인할 수 있습니다.



4. EC2 인스턴스와 연결
다시 Elastic IP 메뉴로 돌아오면 생성된 EIP가 보입니다.
해당 EIP를 선택하고 위의 'Actions'메뉴에서 'Associate address' 옵션을 선택합니다.



5. EC2 인스턴스 선택
EIP를 연결할 EC2 인스턴스를 선택합니다.
EC2 인스턴스를 선택하면 아래에 Private IP도 자동으로 선택됩니다.
EIP는 한개의 EIP가 한개의 Private IP와 매핑되어야합니다.
그래서 EC2 인스턴스에 여러 Private IP가 있다면 그중 하나를 선택하는 것 같습니다.
선택이 완료되면 하단에 'Associate'를 누릅니다.


6. 끝
끝났습니다.
이제 인스턴스 목록에 가서 EIP를 연결한 인스턴스의 정보를 보면 EIP가 잡혀있고, Public IP가 생성한 EIP로 변경되어 있을 것입니다.





2016년 11월 14일 월요일

[AWS] AWS Route53에서 도메인 등록하기

[AWS] AWS Route53에서 도메인 등록하기

1. 도메인 등록 시작

'Register Domain' 버튼을 눌러서 도메인 등록 과정을 시작합니다.

2. 도메인 검색

등록하고자 하는 도메인을 (1)에 입력하고 (2)에서 확장자를 선택하고 (3)을 클릭하여 등록하고자 하는 도메인이 등록 가능한지 확인합니다.

3. 도메인 선택

검색한 도메인을 사용할 수 있다면 'Add to cart'를 눌러서 선택합니다. 오른쪽 (2)에서 선택한 도메인들과 금액을 확인할 수 있습니다.
모두 선택했으면 (3)을 눌러서 다음으로 넘어갑니다.

4. 등록자 정보 입력

등록자에 대한 정보를 입력합니다.
자신의 정보에 맞게 입력합니다.

5. 등록 완료

(1)에 체크하고 (2)를 누르면 등록이 완료됩니다. 등록 완료후에는 등록자의 이메일로 입력한 이메일로 확인 메일이 갑니다.
이메일에서 확인을 누르고 조금 있으면 등록한 도메인을 사용할 수 있게 됩니다.
사용 예로, AWS Route53의 'Hosted Zone'에서 등록한 도메인과 AWS EC2 인스턴스의 고정 IP를 연결시켜서 사용할 수 있습니다.