/ meteor

Deploying Meteor apps in DigitalOcean

DigitalOcean(디지탈오션)

  • https://www.digitalocean.com
  • 클라우드 호스팅 중에서 가장 저렴하고 좋다. ($5/mo)
  • 위 링크로 들어가면 $10를 충전해준다.

meteor up

Create Droplet


Droplet Hostname - 서버 구분용 이름을 지어준다.


Select Size - size 는 추후에 변경 가능하니 제일 작은 걸로 시작한다.


Select Region - 지역은 그나마 가까운 싱가포르를 선택한다.


Available Settings - 추후 설정 가능하다. 그냥 비워둔다.


Select Image - Ubuntu 14.04 64bit가 기본이다.


Add SSH Keys (Optional) - 이거는 꼭 등록 해둔다. 패스워드 없이 접속하기 편하다.

1분 이내로 생성이 완료된다.

nodejs apt-get list update

curl -sL https://deb.nodesource.com/setup | sudo bash -
  • 위 명령어는 apt-get의 리스트를 업데이트 해준다.
  • 기본으로 설치가 되는 버전이 v0.10.25인데 위 명령어를 실행시키고 나면 v0.10.38을 설치 할 수 있다.
  • 참고로 meteor up은 v0.12.x 를 지원하지 못하고 있다.

install server programs

apt-get install nodejs npm nginx mongodb
  • meteor는 nodejs플랫폼 위에서 구동이 된다.
  • npm도 따로 설치가 필요하다.
  • nginx를 이용해서 여러 meteor앱을 구동시킨다.
  • mongodb도 설치 해준다.

npm update

npm install npm -g
  • npm을 최신 버전으로 변경한다.

install wait-for-mongo

npm install -g wait-for-mongo

add firewall rule and enable

ufw allow 22/tcp
ufw allow 80/tcp
ufw enable
  • 외부 공격에 노출 되지 않도록 간단히 문단속을 한다.

add nginx conf

vi /etc/nginx/sites-enabled/link.conf
service nginx reload
  • nginx 설정에 meteor앱 정보를 다고 있는 설정을 추가한다.

local side

deploy meteor app

mup setup
mup deploy
  • mup.json파일이 있는 폴더에서 위 명령어를 내린다.

files

mup.json
{
  "servers": [
    {
      "host": "do.niceilm.net",
      "username": "root",
      "pem": "~/.ssh/id_rsa"
    }
  ],
  "setupMongo": false,
  "setupNode": false,
  "nodeVersion": "0.10.38",
  "setupPhantom": false,
  "appName": "link",
  "app": "~/Projects/meteor/link/backend",
  "env": {
    "PORT": 40003,
    "ROOT_URL": "http://link.niceilm.net",
    "MONGO_URL": "mongodb://localhost/link",
    "METEOR_ENV": "production",
    "CLUSTER_WORKERS_COUNT": "auto"
  },
  "deployCheckWaitTime": 15
}
  • apt-get을 이용해서 서버프로그램을 미리 설치 했기 때문에 setup관련 부분은 모두 false로 해두었다.
link.conf
server {
  charset utf-8;
  server_name link.niceilm.net;

  access_log /var/log/nginx/link.access.log;
  error_log /var/log/nginx/link.error.log;

  location / {
    proxy_pass http://127.0.0.1:40003;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwarded-For $remote_addr;
  }

    location /gen {
      root /opt/link/app/programs/web.browser/app;
    }

    location /img {
      root /opt/link/app/programs/web.browser/app;
    }
}
  • vhost 정보를 정의한다.