aws
■ AWS

[AWS] 아마존 웹 서비스에 Dokku (Mini Heroku)를 설치해보자! pt. 1 (3)

이제 도메인 연결을 통해서 고정ip로 접속하는 것이 아닌 우리가 보기 쉬운 도메인으로 접속하도록 만들어 보겠습니다.

따라서 도메인설정을 위해서 AWS의 서비스중 Route53을 이용해 보도록 하겠습니다.

이번엔 대시보드에서 Route53을 선택합니다.

 

18

 

 

이어 Hosted Zones를 선택합니다.

 

19

 

해당 서비스로 들어오게 되면 Create Hosted Zone 버튼이 있습니다. 해당 버튼을 이용해서 IP <-> mydomain.com 과 연결시켜 보도록 하겠습니다.

20

 

그럼 이제 rankting.com (mydomain.com)이라는 Hosted Zone으로 들어올 수 있습니다. 이어서 Create Record Set이라는 버튼을 통해서 레코드를 만들어보겠습니다. 여기서 만들 레코드는 A레코드란 것입니다. 이것은 해당 도메인을 통해 아이피를 반환하는 레코드입니다.

21

 

아래 54.199.164.57 이라는 Elastic IP (고정IP)와 rankting.com을 연결합니다. 또한 subdomain을 *로도 연결시킵니다.

 

22

이제 rankting.com으로 접속하면 54.199.164.57로 접속이…될까요?

 

아닙니다.. 아직 접속은 되지 않습니다. 그것은 rankting.com을 구입한 registrar에 Route53을 등록해주어야 최종 접속이 완료된 것입니다.

위 그림에서 보면 Route53의 NS는

ns-1769.awsdns-29.co.uk.
ns-36.awsdns-04.com.
ns-1296.awsdns-34.org.
ns-962.awsdns-56.net.

이렇게 4가지로 나와있습니다. 해당 registrar에 위 주소를 입력하면 됩니다.

하루이틀 있으면 해당 도메인이 연결될 것입니다.

다음으로는 Dokku가 rankting.com이라는 도메인을 알아야 합니다. 즉 Dokku에 원하는 도메인이 연결되도록 설정해 보도록 하겠습니다.

앞서 Dokku설치확인을 위해

/home/dokku 라는 폴더로 들어갔었습니다. 해당 폴더안에는 VHOST, HOSTNAME등의 파일이 있을 것입니다. 이 파일들의 내용을 변경해주면 됩니다.

VHOST, HOSTNAME두 파일에 vi 혹은 cat 리다이렉션을 통해서 rankting.com 이라고 입력해줍니다.

23

이런식으로 sudo 를 통해 권한을 가지고 수정합니다.

다음으로 서버와 클라이언트의 인증을 동기화 시키도록 하겠습니다. 앞에서 ssh프로그램을 통해서 EC2에 접속했었습니다. 하지만 배포할때 git를 이용하기 때문에 인증시 해당 pem파일이 없이도 접속이 가능해야 합니다.

cat ~/.ssh/id_rsa.pub | ssh -i <pem파일받은경로>/<pem파일이름.pem> ubuntu@rankting.com “sudo sshcommand acl-add dokku progrium”

이런식으로 입력해줍니다. 중요한 것은 이것은 현재 클라이언트(ubuntu서버가 아님)에 있는 공개키를 ssh와 pem파일을 통한 인증을 통해서 해당 서버가 앞으로 접속할 클라이언트를 알게 하고 인증이 되었다는 것을 말해주기 위함입니다. 마지막으로 해당 dokku와 클라이언트의 인증이 잘 동기화 되었는지 확인합니다.

ssh dokku@rankting.com

24

위와 같이 접속후 바로 닫혀버리면 성공한 것입니다.

다음으로는 실제 Dokku에 배포를 해보도록 하겠습니다.

Standard
■ AWS, ■ Linux

[AWS] EC2, MEAN Stack 설정

1. AMI을 설정.
bitnami 의 MEAN STACK AMI설치.

https://aws.amazon.com/marketplace/ordering?ref=cns_srchrow&productId=8d2e2f09-c4e2-49a6-ab98-60221ebc1d35

만약 my-key.pem 파일의 권한을 주지 않았다면 sudo chmod 400 k.pem 을 줘야한다.

 

2. 아파치 종료
bitmani폴더를 기준으로 ./stack/ctlscript.sh (start|stop|restart) apache를 통해 stop 옵션으로 제거. * 몽고디비는 켜져있음.

 

3. 80 port -> node서버 port 리다이렉션

sudo iptables -A PREROUTING -t nat -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 8080

sudo iptables -A PREROUTING -t nat -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 8080

 

4. 권한주기.

sudo chmod 777 /home/bitnami
connect EC2 as FTPS

http://gomp.tistory.com/172

* 권한을 주면 ssh서버 설정을 다시 해야한다.

 

5. git를 통해 clone한다.
sudo git clone {repositoty path} 를 통해 앱을 가져온다.

 

6. starting node server.
forever -w start server.js & watch 옵션인 -w 를 쓰면 nodemon 기능 수행.
&기호는 백그라운드로 실행
sudo netstat -ap 를 이용해 process id를 확인하고
sudo kill psid로 없앨수 있다.

 

7. 몽고디비 비번설정.

http://wiki.bitnami.com/Components/mongoDB

mongo admin –username root –password MY_PASS

로 접속가능.

Standard
■ AWS, ■ Linux, ■ Node.js

[AWS] Node.js 설치 시 유용한 링크 모음

AWS, 혹은 리눅스 시스템에 node.js를 구축하는데 유용한 사이트들을 링크하였다.

 

1. installing node.js at the linux system. (RedHat)

http://guruble.wordpress.com/2014/04/12/linux-%EC%97%90%EC%84%9C-node-js-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/

 

2. installing node.js at the linux system. (Ubuntu)

http://blog.naver.com/sungback/90195379759

http://coolkim.tistory.com/472

 

3. connect EC2 as FTPS

http://gomp.tistory.com/172

 

4. set git at the linux system.

http://blog.naver.com/mannunt/70176286698

 

5. Total solution.

bitnami 의 MEAN STACK AMI설치.

https://aws.amazon.com/marketplace/pp/B00GXYEEA4

Standard
■ AWS, ■ Node.js

[AWS] 아마존 웹 서비스에 Node.js 서버 구축 방법

AWS에 Node.js 서버를 구축하기 위해선 여러가지 절차가 필요하다.

먼저 개략적으로 큰 플로우는

1. AMI를 통한 EC2 인스턴스 생성 (EBS 또한 생성)

2. 보안그룹을 설정. (inbound 방화벽을 기본 22포트(ssh)에서 80포트(http)를 추가한다.)

2. 인스턴스상에서 Node.js, Mongodb, imagemagick, redis, git 등을 설치한다.

3. 필요에 따라서 FTP포트를 열고 80포트를 Node.js 메인 서버의 포트로 설정한다

4. 고정IP를 할당한다. Route53을통해 도메인을 연결한다.

5. S3를 필요에 맞게 세팅하고, CloudFont를 통해 CDN을 만든다.

6. mongodb의 admin을 설정한다. 사용자 계정 및 비번등을 설정한다.

7. mongodb replica set 및 sharding을 설정한다. (이땐 여러개의 EC2인스턴스가 필요하다.) 규모에 따라서 샤딩은 하지 않을수도 있으나 replica set은 필수로 한다. 또한 이때는 EC2의 인스턴스를 같은 region내에서 available zone을 다르게 해야한다.

이상 다음과 같은 플로우를 통해 기본적인 설정을 마칠수있다.

여기서 알아야할 부분은 EBS인데 EC2연동 여부와 상관없이 과금된다는 점과, 같은 region내에서 available zone (이하 az)가 다른 경우라도 전용선으로 서로 연결이 되어있기 때문에 내부 az간 통신은 과금되지 않는다.

추가적으로 알아볼 것은 EC2인스턴스와 EBS의 관계이다.

EC2인스턴스는 말그대로 인스턴스이다. 프로그래밍으로 치면 클래스를 통해 만든 인스턴스 변수와 같다는 말이다. 이뜻은 EC2인스턴스는 휘발성으로서, 영구적인 데이터는 저장하지 않고 그대신 EBS를 통해서 저장해야한다. EBS는 Elastic Block Store란 가상 하드디스크를 의미한다.

간단히 말하면 EC2에 무엇인가 저장했다면 그것은 휘발성인 메모리에 저장한 것이고, EBS를 통해 저장했다면 EBS라는 하드디스크에 저장하여 영구적으로 보존이 가능하다는 의미이다.

다음으로 AMI이다. 이것은 Amazon Machine Image라는 것으로 말그대로 우리가 윈도우 불법 복제를 통해 ISO등으로 구울때 사용했던 것과 비슷한 맥락이라고 보면된다. 즉 AMI를 미리 세팅하고 바로 내가 원하는 EC2인스턴스를 생성할수 있다는 의미이다.

Standard