글쓰기 메뉴

우분투 몽고DB 설치 및 부팅 시 자동 실행 - Install MongoDB on Ubuntu & Start MongoDB on system start

설치는 매우 간단하고 MongoDB 공홈에 최신 버전으로 갱신된 문서가 있어 해당 페이지를 참고하면 된다.


공홈 설치 문서 링크:

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/


GPG Key

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6


리스트파일 생성 (16.04. 기타 버전은 공홈 참조)

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list


패키지 디비 갱신

sudo apt-get update


MongoDB 설치

sudo apt-get install -y mongodb-org


근래의 대부분의 배포본은 Upstart  대신 Systemd를 사용하기 때문에 위와 같이 설치된 MongoDB 역시 init 스크립트를 제공하지 않는다.

service 커맨드로 시작, 중지, 재시작 등의 관리가 가능하나 systemctl 커맨드를 익히는게 바람직하다고 본다.


systemd 를 사용해 MongoDB 를 초기 실행 시키기 위해 다음의 파일을 작성한다.

$ sudo vi /etc/systemd/system/mongodb.service


/etc/systemd/system/mongodb.service

[Unit]
Description=High-performance, schema-free document-oriented database 
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target


Unit 섹션의 Description 은 서비스에 대한 간단한 설명을 포함한다.

같은 섹션의 After 는 네트워크 연결 후 구동하겠다는 의미


Service 섹션의 User 는 서비스 실행 사용자를 지정하고 ExecStart 는 실제 구동 커맨드를 입력한다.


Install 섹션의 WantedBy 는 실행 타깃을 구분하는데 multi-user.target 은 기존 런레벨 2,3,4 로 일반적인 부팅 시에 동작된다.


구동

sudo systemctl start mongodb


상태 확인

sudo systemctl status mongodb


정지

sudo systemctl stop mongodb


부팅 시 실행

sudo systemctl enable mongodb


systemd 의 target 에 대해 보다 자세히 알고 싶다면 아래의 링크를 참조.

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Targets.html


systemd 에 대해 보다 자세히 알고 싶다면 아래의 링크를 참조

http://lunatine.net/about-systemd/




어디서 왔지?
[["synd.kr", 23], ["www.google.co.kr", 134], ["yandex.ru", 2], ["www.naver.com", 1], ["unknown", 323], ["www.google.com", 3], ["www.baidu.com", 2]]
다른 글들
0 0

rbenv 새로운 버전의 루비 설치하기

설치가능한 루비 버전의 목록은 아래처럼 확인할 수 있지
$ rbenv install --list
목록에 없는 최신 릴리즈의 Ruby 를 설치하려 할 때 rbenv 를 업데이트하면 되지. (Git 버전)
이렇게 하고 설치가능 목록을 다시 확인하면 따단~ 하고 새로운 릴리즈가 떠야하는데 새로운 버전의 루비가 목록에 없는 경우가 있어. 그럴땐 ruby-build 를 업데이트해주자.
잘 될꺼야.
0 0

우분투 14.04 wkhtmltopdf 설치

wkhtmltopdf 는 HTML 페이지를 PDF 로 만들어주는 오픈소스 도구로 Qt WebKit 엔진을 사용한다. 자매품인 wkhtmltoimage 는 같은 방식으로 HTML 을 다양한 형식의 이미지로 변환시켜준다.
Ubuntu 14.04 에서 apt-get 으로 wkhtmltopdf 패키지를 설치할 수 있으나 Qt 가 wkhtmltopdf 에 맟춰 패치되지 않았다면 몇 가지 기능이 제한된다. 예를 들면 HTML 에 있는 링크가 PDF 에 사라지는 등의 오류가 있을 수 있다. 관련 옵션은 --enable-external-link 인데 Qt 가 패치되어 있지 않으면 해당 옵션을 켤 수 없다. 
그러니 wkhtmltopdf 홈페이지에서 컴파일되어 있는 바이너리를 다운받아 설치하도록 하자. 만사가 편하다.
* 우분투 서버를 사용하고 있을 경우 X 시스템과 폰트관련 패키지가 설치되어 있지 않다. 이럴 경우 먼저 필요한 패키지와 폰트를 설치하자.
폰트는 마음에 드는 패키지를 찾아 설치하면 되는데 별도의 설정없이 바로 사용할 수 있는 한글 폰트는 unfonts, baekmuk, nanum 정도 되겠다. 각각 패키지는 아래와 같다. (우분투위키에서 CJK 폰트 참고)
은폰트 - unfonts
백묵폰트 - baekmuk
나눔폰트 - nanum
폰트툴과 폰트가 설치 된 후 wkhtmltopdf 다운로드 페이지에서 Ubuntu Trusty (14.04.1) 버전(64-bit)의 .deb 파일을 다운받아 아래와 같이 설치한다. 
설치 후 아래와 같이 확인할 수 있다.
webpage/url 이라는 주소의 웹페이지를 save.pdf 로 변환하는 명령어 예제는 다음과 같다. 자세한 옵션은 man wkhtmltopdf 로 확인할 수 있다.
--print-media-type
스크린 타입이 아니라 프린트 미디어로 PDF를 렌더한다.
--page-size
페이지 사이즈를 지정한다. Letter, A4, A3 등의 형식으로 지정할 수 있다.
* 공식 홈페이지에서 전체 리스트 링크를 제공하고 있으나 현재 사용이 연결이 되지 않는다. 소스에서 확인한 전체 리스트는 이 곳에 적어둔다.
* --page-width, --page-height 로 페이지 크기를 지정할 수 있다 
--dpi
dpi (dots per inch) 값을 지정한다.
-T, -B, -L, -R
상(Top), 하(Bottom), 좌(Left), 우(Right) 여백을 지정한다.
요즘 웹페이지의 PDF 변환이나 이미지 캡처는 요즘 PhantomJS 를 사용한 방식이 훨씬 많이 소개되고 있다. 의존패키지에 대한 고려나 설정에 대한 부담감이 없기 때문일텐데 개인적으로 wkhtmlto* 를 오래전부터 사용하고 있어서 정리해봤다.
0 0

Ubuntu 14.04 - Apache Tika 설치

아파치 티카는 PPT, XLS, PDF 등 수천종의 파일에서 텍스트와 메타정보를 추출하는 툴킷이다.
아파치 소프트웨어 재단의 프로젝트이며 아파치 루씬의 서브프로젝트로 시작됐고 현재는 독립되었다.
티카는 Apache Maven2로 빌드가 가능하나 여기서는 바이너리를 사용한다.
소스나 바이너리 다운로드 URL은 다운로드 페이지에서 확인하자
tika-app
콘솔에서도 유틸리티처럼 사용이 가능하고 --server 옵션으로 서버모드로도 사용이 가능하다. NetCat 등의 커맨드를 사용해 처리결과를 받을 수 있다.
tika-server
보다 서버스러운(!) 서버모드로 RESTful API 를 제공한다.
구동
JRE 는 당연히 설치되어 있어야하고 -jar 옵션으로 간단하게 구동된다. 기본 포트는 9998
구동 확인
브라우저에서 9998 포트로 접속하면 URL 정보가 출력된다.

tika-server 는 PUT 메쏘드만 받으며 리퀘스트 body 로 파일만을 받는다.
Meta 
Text
HTML
추가로, 내가 쓰는 Typhoeus 에서는 아래와 같이 사용할 수 있다.
Apache Tika : http://tika.apache.org/
TiakJAXRS Wiki : http://wiki.apache.org/tika/TikaJAXRS
1 3

중국에서 Ruby Gem 설치 실패 - Connection reset by peer

중국의 정책 덕분에 중국 내부에 있는 서버들은 rubygems.org 에 접속할 수 없어. 루비젬뿐 아니라 접속안되는 해외서비스들이 한둘이 아니지. 그래서 타오바오(Taobao) 미러를 써야해.
Rails 프로젝트안에서는 Gemfile 상단에 명시된 주소를 단순히 변경해도 되고 아래처럼 bundle config 로 미러를 지정할 수도 있지.
1 1
Square

SSL 인증서 설치 및 적용
스마트폰 ssh 접속으로 5분만에 완료?!!?!
그것도 무료??!!?!??!

이건 누구의 얘기도 아닌 제 얘기. 제가 씬디에 https 를 적용하기 않고 버틸 수 있던 합리적(!) 이유들.

하지만 계속 눈에 밟히는....
그리고 괜시리 갖고 싶은 녹색 자물쇠
그리고 오늘.. Let's encrypt 와 EFF 의 Certbot 으로 인증비용없이 뻥안치고 스마트폰으로 5분만에 SSL 도입 끝.
물론 후속 설정들과 이미지, 외부 소스 등에 대한 url 점검과 설정이 필요했지만 이건 레알 신세계.
근데 이거 나만 몰랐어???
불과 몇달전에도 클라한테 인증서 구매시키고 서버세팅했었는데???
블로그 참 열심히 하시는 존경스러운 outsider 님이 2015년에 베타를 경험했던 포스팅은 여기.
이후 EFF 에서 Certbot 에 Apache, Nginx 등의 소프트웨어와 서버 OS 를 플러그인으로 개발하면서 지금은 서버설정까지 Certbot 이 완료시켜주고 있음.
설치는 EFF Certbot 페이지에 가서 자신의 서버와 웹서버를 선택하면 나오는 메뉴얼대로 (대략 5 ~ 7 커맨드) 하면 끝.
난 심지어 지하철에서 스마트폰으로 ssh 연결해서 설정 끝냈음. ㅇㅇ
내 케이스는 nginx / ubunt 14.04 LTS 로 실제 설치 커맨드 히스토리는 아래와 같음. 아래가 전부임.
이렇게 하면 1) 이메일 주소 입력하세요. 2) 이메일 수신 OK? 3) (서버레벨에서 확인된 도메인 중) 어떤 도메인 쓸꺼임? 4) https 만 씀? 80도 같이 씀? 이렇게 4개 물어보고 답하면 된다.
이후에 nginx 에서 http 접속을 https 로 리디렉션 시키던지 Rails 에서 모든 연결에 ssl 을 적용하는 등의 설정을 하면 됨. 이건 별도의 글로 작성.
이제 Let's encrypt 라는 회사를 살짝 알아보자.
리눅스 재단 (Linux Foumdation) 과의 협력프로젝트라고 사이트 상단에 '이미지'가 박혀있는데 어떤 관계인지는 확인하지 못했다.
ISRG 라는 캘리포니아의 기업에서 "HTTP" 보안이 기업들과 사용자들의 비용절감에 직간접적인 도움이 된다는 생각으로 시작했다고한다.
기본적으로 ACME (인증관리자동화환경) 을 보고 있고 실제로 해당 목적을 훌륭하게 수행하는 솔루션이 있다. letsencrypt 에서 개발하다가 현재는 EFF 에서 개발하고 있으며 패키지이름은 Certbot. 인증절차 및 인증서 설치 이후 갱신을 "명령어 하나로" 처리해준다.
SSL CA 로 중요한것은 얼마나 많은 주효한 클라이언트가 이를 인증된 CA 로 받아들이는가 하는 부분인데 해당 목록은 이곳 링크에서 확인할 수 있고 파폭 2.0+, 크롬, 익스 XP3+, 엣지, 안드 2.3.6+, 맥 사파리 4.0+, iOS 사파리 3.1+ 등등 그냥 믿고 사용해도 되는 수준이다.
또 하나는 letsencrypt 의 생존력인데.. 인증서가 무료다보니 기업의 유지가능성도 살펴보는게 좋겠다.
기업 스폰과 기부금으로 운영되는 것으로 보이며 공식홈페이지에서 스폰서들은 소개하고 있다.
문서상으로 년간 30만불(3년유지) 또는 35만불을 지원하는 플래티넘 스폰서는 mozilla, Akamai, SISCO, EFF, OVH, chrome 등의 6개사이고 그 외 IdenTrust,  포드재단, 페이스북, 디지털오션, 볼터, 쇼피파이 등 다수의 스폰서들이 있다.
역시나 결론은 그냥 믿고 쓰면 되겠군이라는 결론 ㅋㅋ
EFF 는 Electronic Frontier Foundation 의 약자로 한국위키 이름이 "전자 프런티어 재단" 이다.

뭔가 틀리진 않았지만 우습달까?
EFF 는 '디지털 월드' 에서 사용자들의 자유를 지키기 위해 1990년 설립된 비영리 재단으로 블루 리본 캠페인도 여기서 시작했다고 한다.
물리적으로는 관계되기 힘든 연결고리 없는 사람들과 조직이 어느날 나에게 직접적으로 혜택을 주는 일들이 많아지는게 참 재밌고 고마울 뿐이다.

진짜 고마우면 Donate! 
Support Let's encrypt
Support EFF Certbot
0 0

UFW 방화벽 사용하기 - 우분투 14.04

UFW 는 iptables 의 설정 도구로 Uncomplicated Firewall 이란 뜻이며 문자 그대로 복잡하지 않은 방화벽 설정을 위해 사용된다.
서버는 어떤 목적이든, 공인 IP가 있든 없든 외부에서 접근이 가능하다면 보안 위험에 노출될 수 밖에 없다. IDC 레벨이나 네트워크 구성에서 하드웨어/소프트웨어 방화벽이 이미 사용되고 있을 수 있지만 그런 경우에도 각 서버의 방화벽 설정은 매우 유용하다(고 생각한다)
이런 목적으로 사용하기에 iptables 가 매우 적합하나 설정과 관리가 꽤나 복잡하여 나 같은 사람은 필요할 때 검색으로 룰을 설정했다가 어느 순간 뭔가 동작이 이상하면 iptables 전체를 내려버리는 괴상한 방식으로 운영하게되니 계륵이 아닐수가...
그런 의미로 UFW는 신세계! 방화벽이 미적용된 서버가 있다면 당장 UFW를 올려보자!
설치
기본 정책 설정 (들어오는 패킷은 차단, 나가는 패킷은 허용)
ssh, http, https 허용 (ssh 포트를 변경해서 사용한다면 반드시 직접 포트를 입력하자)
포트를 변경해 사용하거나 특정 포트를 허용
방화벽 ON!
위의 명령을 실행하면 "현재 ssh 연결에 문제가 생길 수 있습니다. 적용하시겠습니까?" 뭐 이런 질문이 나온다. ssh 포트는 허용으로 변경했으니 "y" 를 입력해 진행할 수 있다.
확인
ufw 가 실행되고 있지 않다면 아래와 같은 결과가 리턴된다.
방화벽을 끌 때는 아래와 같은 명령어를 입력한다
등록된 규칙을 삭제할 때는 2가지 방법이 있다.
첫번째는 등록 시 사용한 규칙을 그대로 입력하는 방법
두번째는 각 규칙의 번호를 확인하고 번호로 지우는 방법
등록된 규칙의 번호는 줄 맨앞에 있는 [숫자]
2번 규칙 80/tcp 를 지우려면
새로운 규칙의 추가는 동일한 방식으로 가능하다
포트 뒤에 tcp 나 udp 를 지정할 수 있고 지정하지 않는다면 모두 적용된다
새로운 설정을 적용하려면 disable > enable 해도 좋고 아래와 같이 reload 가 가능하다
특정 IP만 허용할 경우 
특정 IP에게 특정 포트만 허용할 경우
포트의 범위를 규칙으로 사용할 경우
특정 아이피에만 일정 범위의 포트를 tcp 패킷만 허용할 경우
서브넷을 특정 포트에 허용할 경우
이 정도면 내가 써봤던 명령어는 다 정리한 것 같다.
3 2

여친 쇼핑몰 한다는데 맥프레삼.

맥도 써본적 없음
사용용도 쇼핑몰 운영
근데 OS는 윈도우설치
아니 도대체 왜..
그렇게 얘기해줬것만..
조언을 여기저기 구하지만, 결국 지 하고싶은데로 함.
그 말인즉슨 조언을 구하는게 아니라, 자기 의견이랑 같은 사람을 찾아서 자위하는것일뿐.
0 1

Vim with the Syntastic plugin and ESLint (feat Vundle)

나는 nerdtree 라든지 하는 플러그인 안쓰고 날것의 vim 을 좋아하는데 syntax 나 eslint 는 필수기 때문에 써야지.
플러그인 관리 대세가 pathogen 에서 vundle 로 넘어간 듯.. 대세는 또 따라줘야지.
Vundle: https://github.com/VundleVim/Vundle.vim
Syntastic: https://github.com/vim-syntastic/syntastic
깃허브에 아주 잘 설명되어 있고.. 아래는 내 설치 히스토리.
소스 받기
.vimrc 에 다음 내용 추가 - Syntastic(만) 포함됨
설정된 플러그인 인스톨
플러그인 인스톨하면 화면 쪼개지고 설치 진행됨. 당황하지 말고 Vim 상태표시줄에 다 끝났다는 메시지 나오면 끄면 됨.
ESLint 는 글로벌로 설치해놓고 
사용하고 있는 .eslintrc 가 없다면 프로젝트 root path 에서
eslint 설정 파일이 있다면 아무 파일이나 돌려보면 eslint-plugin-react 등 필요한 것들 설치해줌
글로벌로 npm 설치해도 물론 됨
끝.
4 0

피들리

최근 봐야할 사이트가 많아서 피들리를 처음 써봤는데 정말 편하고 좋다.
(피들리는 rss서비스라고 하네요. )
분류도 쉽고 효율성도 올라가고 피들리를 쓰고나서 플립보드 앱은 바로 지웠다. 설치하고 사용을 거의 안했는데 
피들리는 많이 쓸거 같은 느낌.
feedly.com

인터넷 검색 많이 하시는 분은 한번 사용해보세요.
저는 인터넷 하면 창에 기본탭이 10개 이상입니다. ㅋㅋ 중독인가봐여
0 0

맥 시에라 vi / vim 클립보드 사용하기

1~4 단계의 과정이 필요할 수 있다.
1. ~/.vimrc
아래 내용을 사용자 홈디렉토리 아래 .vimrc 파일에 추가한다 (없으면 만든다)
2. +clipboard 로 컴파일 됐는지 확인한다
clipboard 옵션 없이 컴파일 된 경우

clipboard 옵션이 포함된 경우
2-1. clipboard 옵션이 없는 경우 brew 로 vim 을 설치한다
맥에는 기본으로 vim 이 설치되어 있다.
아래와 같이 brew 로 vim 을 설치하여 시스템 디폴트 vim 교체할 수 있다 (실제로 교체되지는 않고 path 설정 바꿔주는 듯)
3. 어떤 vim 이 호출되는지 확인한다
3-1. /usr/bin/vim 이 잡힌다면 /etc/paths 파일을 수정하여 /usr/local/bin 이 /usr/bin 보다 위에 나오도록 한다
4. 여기까지해도 동작되지 않는다면 
client-server 옵션으로 설치하면 동작하는 경우가 있다고 한다.
4-1. .vimrc 설정
1번의 설정으로 충분하나 아래와 같이 설정할 수 있다 (참조)
1 0

Vim - Pug(구 Jade) 템플릿 Syntax Highlight

템플릿 pug(구 jade)가 vim (version 7.4.1689) 에서 구문강조 (syntax highlight) 가 되지 않아 코딩에 어려움이 있다.
pathogen 플러그인을 사용해 vim-pug 로 pug 파일의 구문강조를 지원하는 방법은 다음과 같다.
pathogen 설치
https://github.com/tpope/vim-pathogen

vim 구동 파일 수정
vim-pug 설치
https://github.com/digitaltoad/vim-pug
1 1

Encoding
UndefinedConversionError

URL 에 한글 제목을 추가한 뒤로 페이스북 공유 시 500 Internal error 가 자꾸 발생하는거지. Facebook 디버거에서 해당 URL 복사해서 스크랩해보면 문제없이 긁어지고... 인코딩에러는 Ruby 1.9 때 지겹게 겪었고 이젠 관련 에러를 만나기 힘들정도로 두루두루 안정적인 상태인데 이렇게 불현듯 재회.
아무튼 고치긴 고쳐야지. 에러로그 첫 5줄을 보니 이렇더군.
구글에 대고 이렇게 검색 "active support json encode UndefinedConversionError"
검색결과 첫 글이 레일즈 이슈 티켓. 올커니 제대로군! 클릭하고 살펴보니 activesupport-json_encoder gem gem 을 설치하라더군
설치했더니 만사 OK!
이거 작년 Rails 4.1.0 부터 있었던 이슈인데 난 왜 오늘에야 만났을까...