로보몽고, 몽고뷰를 아마존에 설치된 몽고디비에 연결하려는 환경세팅이 필요했다.

그런데 연결이 되지 않았다. 구글에서 찾은 방법으로 되지 않아 몽고뷰(mongovue)로 툴을 바꾸어서 시도해보았다.

역시나 안되었다. 그래도 다행히 몽고뷰 사이트에서 이 문제에 대한 원인과 해결방법을 정리해놓았다. 

http://www.mongovue.com/2011/08/04/mongovue-connection-to-remote-server-over-ssh/

여기에 자세히 스텝이 정리되어있다. 

대충 설명해보자면 

AMAZON AWS와 같은 클라우드 인프라에서는 보안 상의 이유로 FTP를 통해 몽고뷰나, 로보몽고에서 바로 연결을 안 되게 해놓았다는 것 이다. 그래서 FTP를 로컬 디비 포트와 서버의 디비 포트를 연결하는 방법을 통해 꼼수(?),,, 인지는 모르겠지만 특정 방법을 통해 연결을 가능하게 했다. 

mongovue-use-ssh-tunnel-on-putty

주의 해야 할 점은 나는 로컬에서 12707이라는 포트로 로컬디비서버를 돌리고 있었으므로 몽고뷰 웹사이트에서 설명하는 다음의 방법을 연결하는데 충돌이 났다. 이 것으로 거의 반나절을 고생했던 듯 하다. 좀 더 원리를 이해하고 했다면 이 같은 문제를 줄일 수 있지 않았을까 싶다. 


Putty를 통해 터널링에서 로컬 디비 포트를 올려주는 방법이라는 설명과 함께 다음과 같은 방법으로 실행이 가능하다.

PuTTY SSH Tunnel screen

1. Connection >> SSH >> Tunnels 를 실행하여


Configure local port and destination info

2. Source port 를 5151, Destination을 127.0.0.1:27017로 설정하고 IPv4 라디오버튼을 클릭해 놓고

Add버튼을 누른다.


Enter remove server IP

3. Session 탭으로 복귀하여 aws의 IP주소를 입력하고 

ec2에 주어지는 인증키 pem파일을 불러와 putty gen 이라는 곳에서 ppk 파일로 변환하여

ppk라는 파일을 통해 연결에 대한 인증을 수행하고

Session을 Open한다. 


4. 포트번호를 적고 기본적인 정보를 입력(입력 안해도 되는 것 같음, 경고창 뜨면 그 부분만 입력해주면 된다.)

하고 접속을 시작한다. 

Enter your port number plus auth info


5. 연결이 성공하여 몽고db를 GUI로 관리 할 수 있는 mongovue를 실행 할 수 있게 되었다. 

로보몽고도 이 같은 문제가 발생했던 듯하다. 


** 내가 하루종일 안 됐던 이유는 로컬 몽고디비의 로컬 포트와 

위의 동작에서 연결하는 포트가 같아서 충돌이 일어났던 듯 하다. ㅜㅜ

그래서 로컬몽고디비의 포트를 default포트(27017)이 아닌 다른 포트로 바꾸어 주었다. 



로보몽고(robomongo)에서도 같은 방식으로 접근하면 된다는 것을 알았다!!








'Amazon AWS' 카테고리의 다른 글

Amazon AWS 리눅스 설치  (0) 2015.03.02
Posted by slender ankles
,
  1. Now you have the db folder.  Then go inside the folder to create a subfolder "data" for holding the actual mongo Data
    /home/ubuntu$ cd db
    /home/ubuntu$ mkdir data
몽고디비에서 실제 적으로 데이터가 적재 될 경로를 생성해준다. 
그러한 후에 노드를 깔기 전에 먼저 몽고를 설치한다. 다음의 명령들을 따르면 된다. 

http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

1. 간단히 말해, 다음과 같이 하면 된다.
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
$ echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee
/etc/apt/sources.list.d/10gen.list
$ sudo apt-get update
$ sudo apt-get install mongodb-10gen

몽고 디비를 가져와서 update시키고 몽고 설치를 진행하면 된다. 

2. 몽고가 설치가 끝나면 몽고는 실행한다. 하지만 몽고를 지정한 경로로 재실행 필요가 있기 때문에 다음과
같이 몽고를 STOP 끄면 되겠다.
$ sudo service mongodb stop

3. 우리가 지정한 DB의 데이터 위치 home/ubuntu/db/data로 경로를 지정하여 다시 몽고를 실행하겠다.
$ sudo /usr/bin/mongod --dbpath /home/ubuntu/db/data


AWS에서 필요한 몽고와 PC측에서 접근하여 접속하는 방법을 다루는 것이 필요하겠다. 

Posted by slender ankles
,

컬렉션의 배열에서 해당하는 원소를 찾아내는 조건문

유용한 사용 구분은 $eleMatch 부분이다. JSON형태의 배열이 아니면 찾아지지 않는다는 점을 알았고, 그래서 일부러 배열의 형태를 JSON형태로 만들었다. 몽고의 초기버젼에는 지원하지 않는 부분이라고 한다. 


위 JSON배열에서 각 객체에 printedlist란 배열에서 asdfasdf란 user_id를 포함하는 객체들만 골라서 리턴해주는 쿼리문을 짜고 싶었다. 

다음과 같이 수행하면 된다.

find_statement = {"printedlist" : {$eleMatch : {"userId" : "asdfasdf"}}};

collection.find(find_statement).sort(sort_statement).toArray(function(err, items){

            필요한 callback 명령

}

'mongodb' 카테고리의 다른 글

ubuntu에서 mongodb 설치하는 방법  (0) 2015.03.04
Posted by slender ankles
,

indexOf

Javascript 2015. 3. 4. 01:52

배열이나 string에서 

특정 원소 또는 문자열이 있는지 검사하는 하고 

있다면 그 인덱스를 반환하고 없다면 -1을 반환한다.


예를 들어

var array = ["samsung""apple""lg""hankuk"];
if(array.indexOf("samsung"!= -1){
console.log("삼성이 있다");
}
cs


Posted by slender ankles
,