DigitalOcean(디지탈오션)
- https://www.digitalocean.com
- 클라우드 호스팅 중에서 가장 저렴하고 좋다. ($5/mo)
- 위 링크로 들어가면 $10를 충전해준다.
meteor up
- https://github.com/arunoda/meteor-up
- meteor app 배포하기 위한 툴이다.
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
- https://www.npmjs.com/package/wait-for-mongo
- meteor up deploy 할 때 사용된다.
- mongodb가 online이 되도록 기다리는 util이다.
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 정보를 정의한다.