기본 콘텐츠로 건너뛰기

cloudflare+openshift 조합으로 무료 node.js https 서버 구축하기

요즘은 *.meteor.com 호스팅도 없어지고
기존 서비스들이 무료로 쓰기엔 시간 제한 같은 것들이 생겨서 간단하게 뭔가 만들어 보여주는 목적으로 쓸만한게 점점 줄어들고 있다.

하지만, 대인배 RedHat에선 PaaS 를 아직 무료로 제공하고 있다.
https://www.openshift.com/pricing/plan-comparison.html

24시간동안 놀리고 있지만 않으면 된다. 이거야 방법이 여러가지 있으니 생략하고.

일단 만들어 본다. 가입하고
https://openshift.redhat.com/app/console/applications 를 접근하면 새로운 앱을 만들 수 있다.
무료 계정은 Gear 라는 것을 3개까지 쓸 수 있는데 node.js / python 같은 언어도 1개. DB도 1개. jenkins도 1개씩 먹으니 잘 생각해서 계획을 짜야한다.
가령, node.js와 mongoDB를 각각 선택하면 2 gear를 사용하지만 둘을 합친 MEAN 을 사용하면 1gear만 사용한다.
대신, MEAN은 node.js/mongoDB 버전이 낮으므로 ecma2016이나 wiredTiger같은 최신 기술을 사용할 수 없다.

내 경우는 일반 js를 쓰는 것이 너무 괴로와서 https://github.com/icflorescu/openshift-cartridge-nodejs 커스텀 카트릿지로 생성했다.
그리고 이건 P짱O꿀W꿀E팁R! 인데 생성 후 https://openshift.redhat.com/app/console/applications 에서 방금 생성한 node.js 앱을 선택 후 해당 앱 상세에서 Or, see the entire list of cartridges you can add 이 부분을 클릭.
Choose a cartridge to add to your application. 화면에서 맨 아래로 스크롤 한 뒤.
Install your own cartridge 에서 텍스트 입력창에
https://raw.githubusercontent.com/icflorescu/openshift-cartridge-mongodb/master/metadata/manifest.yml (https://github.com/icflorescu/openshift-cartridge-mongodb 의 mongodb 카트릿지) 를 추가하면 최신 wiredTiger 를 지원하는 mongodb 3.2.x 버전을 설치할 수 있는데 Gear 소모가 0이다!

이제 도메인쪽 이야기를 하면 DNS용으로 cloudflare를 선택한 것은 정적 자원의 캐슁이랑 HTTP SSL 때문인데 openshift에선 HTTP SSH이 유료 옵션이라 죽이 척척 맞는다.

세가지만 신경써 주면 되는데
첫째, 도메인 서비스를 받는 곳에 Name server 설정을 도메인을 구매한 곳에 업데이트한다.
aragorn.ns.cloudflare.com
wally.ns.cloudflare.com
이런 식으로 두 개를 넣어주면 끝.
둘째, openshift에서 도메인과 연결할 App이름 오른쪽 옆에 조그맣게 써있는 change를 선택하고 다음화면에서 도메인 명을 넣어준다. sub-domain이 아닐 경우 nake domain 을 위해 www.yourdomain.com 과 www가 없는 yourdomain.com 식으로 두개를 써준다. (아마 두 번 들락날락 해줘야할 것이다.)
SSL Certificate 부분은 쿨하게 무시. 안쓸거다.
셋째, cloudflare 로 가서 DNS 쪽에 A를 선택하고
A  yourdomain.com xx.xx.xx.xx (nake domain을 안쓸거면 생략 가능)
A  www                         xx.xx.xx.xx

이와 같이 두개를 입력한다. 여기서 xx.xx.xx.xx는 해당 앱의 최초 Alias인 xxx-yyy.rhcloud.com 형식인 도메인의 IP를 ping을 때리던가 해서 찾아서 넣으면 된다.

여기까지 완료되면 http와 https로 각각 접속해보자. www가 있고 없고 다 잘되는지 확인해보고 이쁜 녹색 자물쇠(크롬기준)이 떴는지도 체크해보자.

이 블로그의 인기 게시물

Mac 주의 - 약간 빡치는 git 대소문자 변환 파일명 변환(renaming)하는 법

Mac에서 종종 화나는 일 중 하나가 파일 시스템이 대소문자를 구분하지 않는 점이다.
가령, A.png를 a.png로 바꿔야할 경우 HFS 기준으론 전혀 바뀐 점이 없는 걸로 인식하는데 다소 화가난다.
하지만, 방법이 없는 것은 아닌데

A.png를 임의의 다른 파일로 바꾼다. (ex. A_.png)1에서 바꾼 상태에서 staging 한다. (git add A_.png)1의 파일을 다시 원래 바꾸려고 했던 파일로 바꾼다. (mv A_.png a.png)3을 다시 staging 한다. (git add a.png)commit 한다.https://stackoverflow.com/a/40307511/880991 에서 답변해준 Chris Barr 님에게 감사를.
* 추가

실제로 해보니 git mv --force A.png a.png 가 더 간단하다. 이는 바로 staging 영역에 add까지 해준다.

즐거운 Online Prototyping Tool 들

jsbin, codepen, jsfiddle 이런 것들은 일단 생략. 너무 유명한 것들이라.

https://launchpad.graphql.com - node.js 기반 graphQL 연습장. 이것만으로도 충분히 훌륭한 백엔드
https://codesandbox.io/ npm 사용이 가능한 클라이언트 사이드 연습장. webpackbin이 너무 문제가 많아서 찾아본 것.

https://scrimba.com 이건 codesandbox+ asciinema(https://asciinema.org/) 같은 느낌인데 키 녹화와 음성 녹화 기능이 추가되었다. 다 좋은데 화살표 키로 빨리감기 뒤로감기 기능이 안되고 익스포트(youtube등)으로 지원이 없는게 아쉽다.

이 둘이 만나면? https://codesandbox.io/s/jvlrl98xw3?from-embed
뭐야 이거 무서워 하지마 ㄷㄷ;  graphql+react-native-web(부왘ㅋㅋ)

https://repl.it/languages 전통을 자랑하는 REPL 도구. 지원 언어 종류가 -_-;;;;;

https://tio.run/# repl.it? 장난함? 얘는 지원 언어가 무려 386종류. J랑 아희도 있다.

https://play.golang.org/ 즐거운 go playground. 소스 포멧팅 넘 좋아.

http://decaffeinate-project.org/repl/ 최고의 coffeescript REPL. 원래 용도는 coffee를 ecma6코드로 바꾸는 것이지만...

https://scaphold.io
https://www.graph.cool/ graphql backend service. scaphold.io는 설치도 필요없는 클라우드. graphcool은 호스팅+클라우드 다있음. 둘 다 막상막하. 푸쉬서버도 되고 뭐 미친득.

https://glitch.com/ gomix에서 결국 glitch로 안착.  node.js

https://www.shadertoy.com 잘하고 싶다! 쉐이다! 오디오도 된다!

http:/…

vulcan 추천사

왜 Vulcan인가요?

유명한가요?
이걸 배워도 괜찮은 건가요?
취직은 잘 되나요?
회사에 필요한가요?
많이들 쓰나요?
앞으로 유망한가요?

항상 강의(보통 국비지원인 무료 수강)를 할때마다 자주 들었던 질문인데요.
vulcan은 제 생각엔 이 질문들에 대해 모두 "예"일수도 "아니오"일수도 있다고 생각합니다.

왜냐면 vulcan는 framework이며 제품으로 치면 반쯤은 조립이 된 제품으로 구성한 IKEA 같은 거라서 팝업 스토어나 전시실에 있는 걸 보고 구성하거나 아니면 처음부터 하나하나 자신이 구성하듯이 Apollo, AutoForm(aka. smartForm), Collection2, Email Templating, GraphQL, Meteor, MongoDB, React, Router, Server-sided rendering 등등 각각 검증된 요소들로 웹앱을 만들 수 있습니다.

질문에 대한 답을 드리자면 vulcan 자체는 "아니오"일 수도 있지만 vulcan에 들어가는 요소들은 "예"라고 할 수 있는 것들이 꽤 많습니다.

웹은 프로그래밍 분야 중에서도 제법 오래되고 안정된 분야이면서 동시에 대중적인 인기를 업고 많은 실험과 혁신을 시도하고 있는 분야이기도 합니다.
사용자 입장과 달리 만드는 사람 입장에선 눈에 보이는 부분(frontend)에서부터 보이지 않는 부분(backend)까지 세심하고 정밀하게 고려해야하고 오랜기간 웹에 노출된 노련한 사용자들은 당신이 어떤 부분이 부족한지 금방 알아차립니다.
이 부분은 만드는 사람 입장에선 꽤 괴로운 일입니다. 기술의 변화는 빠르고 학습해야할 양은 늘어나며 구현해야할 디테일은 더욱 엄격하게 평가받습니다.

Vulcan은 대부분 최신(Cutting edge) 기술들로 가득하며 각각 기술에 대해 깊은 이해가 있다면 좀 더 예리하게 만들 수 있지만 최소한의 학습양으로도 당장 작동하는 결과물을 만들 수 있습니다.
Vulcan은 Meteor Pla…