본문 바로가기

~ 공부 ~/Computer

드디어 성공!! Meteor deploy 하기!!

ㅎㅎㅎㅎㅎㅎㅎ 성공했슴다 ㅎㅎㅎㅎㅎㅎㅎㅎ   거의 3일간 했는데 성공!!  처음으로 AWS 아뒤 마들고 free tier로 instance 만들고 nvm, mongodb, passenger + nginx 해서 미티어 성공했슴다!!  
  정말 여러 error 상황들을 많이 봤는데.. (이런 ㅅㅂㅁㅈ;ㄷ루ㅐㅓㅣ퉂ㄷ개ㅓ뭋피ㅏㅓ 같으 상황이 많았습니다.) 일단 처음 linux(ubuntu) 쓰면서 여러가지 고려해야 될게 많았는데 참 어이 없게 마지막에 성공한거 같기도 하네요..


일단 우려된 상황들

 -1. 발단은 언젠가 해야지 라는 생각도 있었지만 c9.io/ nitrous.io를 삽질해도 무슨 미티어 깔고 react하고 몇개만 깔면 disk          quota 넘어서 아무것도 못해서 빡춰서 시작 했습니다.(예전에는 public 이면5GB 까지 줬는데 뭘해도 지금은 2GB 까지인        듯요 ㅠ.ㅠ)

  0. 저는 여태까지 윈도우만 썼습니다. 리눅스 처음. 그렇게 많이보던 sudo 처음 써봤습니다.

       0.1 여담으로 vim이 낑왕짱이라고 해서 써볼려다가 나오질 못해서 못썻습니다.. (그 돌아다니는 짤방과도 같은 상황.. 그               래서 nano 썼읍니다)

  1. ubuntu 16.04 xenial을 썼습니다. (튜토리얼도 많고 가장 안정적일것 같은 14.04를 버리고 이걸로 했습니다.. 결과적으로        이것때문에 문제인건 없었네요. mongodb 다운할떄 뺴고 )

  2. nvm 쓰고 nodejs 버전을 쎄삥인 v4.4.7로 했습니다(제가 알기론 미티어 1.4 부터 이버전 지원되고 몽고도 그렇게..)

  3. mongodb 3.2 이여서 wiredTiger 쓰게됬습니다(다른 튜토리얼 보다가 smallfiles, replica set등등 여러개 있었는데 ipport등 많이 삽질하다가 걍 지금은 replica set 안쓰고 가장 기본으로 했습니다)

 

크게는 이렇게 들인데 삽질한 부분들은

0. 제 윈도우 노트북에서 최근(7/29 일이었나 마지막 10무료 업글기회가 끝난다고해서 하루전인가 했습니다) 10으로 업글 했습니다. 또한 1.3.xxxx 의 미티어 버전을 쓰고 있었는데 1.4나와서 업글했습니다. 여기서 부터 문제인가.. 1.4 meteor-tool 다운만 수백년 걸리고 안됨. 그래서 이것저것 찾아서 해결(맨처음 이거 봤으면 봐로 했을텐데 이것저것 순서 뒤죽박죽으로 하다가 운좋게 됬습니다)

  1. npm install --global --production windows-build-tools

  2. meteor npm install --global --production windows-build-tools

  3. npm install -g node-gyp


사실 다운 안된게 처음도 아니고 다운되도 meteor run 안될떄도 몇번 있었고 아무리 찾아도 해결 안되면 강제 다운그레이드 하고 뭐 별짓 한 기억이 있어서.. 언제나 마음의 준비(?) 되있으나.... 그래도 안되면 짜잉 나네요.


1. mongo다운 방법도 아주 다들 제각각 이여서 하다가 밀고 하다가 밀고 conf 파일들 등등  replica set 한다고 디렉토리 만들고 포트 여러개 열고 rs.add('xxxxxx') 에서 좌절하고 그 외에도 수많은 error 인해서  일단 가장 기본으로 다운받고 난후 그대로 해놓고


2. /etc/nginx/sites-enabled/xxxxx.conf   에서 설정 때문에 헷갈리는게 좀 있었습니다. 


3. 맨처음 튜토리얼 보고 할때는 standalone이 처음이면 쉽고 하다고 해서 이거 따라 하다라 나중에 nginx하는거 해서 nginx만    따로 다운로드 했습니다. 거기서 passenger, nginx 잘 설치 됬는지 확인하라는거 다 했고 둘다 문제 없었는데 하며 nginx는      뜨는데 passenger는 제목만 뜨고 아무것도 안되서 고민하다가 걍 다 밀고 다시 nginx 버전으로 하니 잘됬습니다.


4.  "nginx서버 잘된다 근데 니 앱은 뭔가 이상있는듯" 메세지하고  error였나 not found 였나 permission denied 였다   504, 503몇번 보고 internal server 어쩌구 저쩌구 하는 니 망했음요 하는 문구나와서 하라는대로 해서 친절한 passenger_friendly_error_page on; 으로 해서 보면 더 멋있구요.


5. adduser 하는거 있는데 그것들 따라하다가 root에서는 node도 못찾고 뭐 못하고 nginx에서도 permission denied 됬다고 해서 chown, chmod 삽질하고 비번은 또 뭔지. 저는 putty 써서 해서 나도 모르느데... 하튼  그래서 걍 adduser 안하고 root 하고 ubuntu(이건 당최 언제 만들었는지도 모르겠슴다. 내가 만든건지 자동으로 만들어진건지. 내가 이름을 써서 저거를 만들어진건지 정체불명입니다. 만들었다면 분명 ec2 instance 만들떄 했을텐데 까먹었슴다)


6. 지금 바꿔서 성공한거는 nvm때문 이었슴다... 이것도 초반에 했을때는 문제없었는거 같은데.. cannot checkout session due to passenger 나오면서 main.js 못찾겠다 부터 시작해서 Cannot execute node: No such file or directory (2)를 마지막으로 해결했습니다(거기 있는데 왜 못찾니 아가야...)  제 기준으로 /etc/nginx 에는 nginx.conf 도있고 passenger.conf 도 있는데 passenger.conf 에다가 passenger_nodejs /home/ubuntu/.nvm/versions/node/v4.4.7/bin/node; 이거 해주고 됬습니다.  path때문에 그런것 같은데 참나... 


7. /var/www/앱이름/public은 아직도 몰겠네요. 저는 public폴더 자동으로 안만들어 주던데요?? 모든 튜토리얼마다 /etc/nginx/sites-enabled/앱이름.conf 에서 root 를 /var/www/앱이름/public 이렇게 하던데 뭐 이것저것 해봐도 일단 public은 없으니 error log 보고 main.js 찾는갑다 싶어서 이렇게 저렇게 하다보니  /var/www/앱이름 이렇게 하면 그 위에 폴더에서 찾더라고요 main.js 를 /var/www/앱이름/아무거나 이렇게 하면 앱이름에서 찾고요. 하튼 이상해요. 그래서 그냥 저도 그렇게 했습니다, public 까지 했어요.   추가적으로 쪽팔리지만 저같은 완전 뉴비는 passenger_env_var MONGOD_URL mongodb://localhost.27017/mydb  다들 mydb, myapp 등등 그렇게 했는데 전 저걸 몰랐습니다. "난 몽고에 이름 붙여준적 없는데??" collection name 인가 뭔가 이렇게 좀 삽질하다가 찾아봐도 안나오고 하다가 우연히 글 봐서 알아냈네요 ㅎㅎ   아무것도 안하면 저처럼 test가 정상 아닙니까? ㅠ.ㅠ 무슨 mydb가 어디있습니까.  server_name 이나passenger_env_var ROOT_URL 도 무슨 http://myserver.com 이나example.com 같은게 어디있습네까 ㅠ.ㅠ 바로 아이피죠.


8. meteor bundle deprecated 됬어도 이런저런 이유로 bundle 쓰라고 해서 했는데 이것때문에 망한건지 뭔지 또 이것저거 했습니다.. 안되는 예상 이유로는...

   1) meteor bundle --architecture linux.os.64였나 어쩌구 였나 architecture를 안 정해줘서(저는 윈도우이므로) 파일 자체가       망한 파일이다.

   2) MDG가 원하는 meteor build 로 해야하는데 bundle 이여서 어떤 이유든(업글 아해줬든 버전 업되서 엉켰던) 그게 망해서     bundle로는 어떻게 해도 안된다

   3) meteor build로 했지만 이건또 passenger 사이트의 튜토리얼 대로 진행하지 않아서 망함(build는 cordova 나 다른것들       도 다 번들된다고  해서 )

저는 그냥 meteor build로 했는데 되습니다



9. 근데 우분투는 GUI가 있는걸로 아는데 그거 어떻게 씁니까? 계속 커맨드로 삽질 하다보니 이제는 뭐 되게 편하긴 한데... ㅣ지금으로선 GUI 쓸수있다고 해도 안쓰는게 편할수도 있겠네요. 


10. 그 외에는 putty쓰는법이나 pscp나(튜토리얼들 다 scp 바로쓰고 하는데 제가 처음 쓴 순간 "scp는 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다"라는 메세지를 보고서는 "하..... 이런 ㅅㅂ.." 했습니다 ㅎㅎ) linux 명령어들 조금(전 윈도우여서 dir 같은거 썼거든요 cd..도 안되고 cd .. 이여야 되고 )


튜토리얼 한번 제대로 써봐야 겠네요 나중에 일단 지금 성공해서 너무 기분좋아서 씁니닼ㅋㅋㅋㅋㅋㅋㅋ

앞으로 해야할것

1. 가족 아뒤를 쓰던지 내꺼 하나에서 여러개 포트열어서 하던지 replica set기능 해보기(샤딩은 필요할일이.... 없을것으로 나중     에 필요해지면) + 권한등등 부여해보기

2 다른 서비스들도 해보기 DigitalOcean이나 Heroku등등 아마 DO를 해보지 않을까요 $5나 $10 짜리로. 

3. DB서버 붙이기  modulus.io나 compose.io, mlab 같은것들. 근데 가격이 다 비싸서.... 아니면 용량이 작다거나. 하여튼 실제      production에서는 저렇게 하는게 맞다고 하니 저것도 연습 해봐야겠네요.

4. 제 윈도우 노트북에서 vagrant, virtual box로 지금 aws ec2 세팅처럼 해보기.

5. deploy 자동화 한번 생각해보기. mupx나 아니면 다른것들은 어떻게 자동화 했는지(git같은 걸로 서버에서 바로바로 잘 휘리릭 휘리릭 할수있게)  업데이트 하면 db자료들은 어떻게 되고 뭐뭐는 어떻게 되는지

6. SSL 해보기 

7. 도메인은 어떻게 되는지. 얼마면 되고 어떻게 사고 뭐 어떻게 붙이고 하는지 등등


휴 이제 내일부터 파이썬 강의 들어가는데 걱정이네요 일단 환경설정 부터해야 할텐데... 진짜 열심히 살게 될듯요. 그럼 ㅂㅂ