ConoHa VPS에 정보 공유 시스템 crowi를 세운다.

crowi



node.js로 만들어진 정보 공유 도구. 익숙한 Markdown 형식으로 쓸 수 있고 데이터베이스에는 MongoDB를 이용. ElasticSearch에서의 검색에도 대응하고 있다.

VPS 설정



ConoHa를 계약하고 서버 인스턴스를 세우면 우선 방화벽을 설정한다. ConoHa의 컴파네에서 열리는 것과 OS의 방화벽과는 별도이므로 주의. 인터넷에서 접근하기 위하여 둘 다 열 필요가 있다.


sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-service=http --permanent

node.js를 설치합니다. 이번에는 이미지에 CentOS7을 이용했다. ConoHa에 준비되어 있는 이미지는 EPEL이 도입이 끝났기 때문에 yum 리포지토리의 설정은 필요 없다.
sudo yum install nodejs
sudo yum install gcc-c++ #ネイティブのnpmパッケージをビルドするのに必要

crowi 설정



GitHub에서 복제하고 npm 명령으로 종속 패키지를 설치합니다.
git clone https://github.com/crowi/crowi/
cd crowi
npm install

MongoDB 설치


sudo yum install mongodb-server
sudo systemctl enable mongod
sudo systemctl start mongod

Redis 설치(Option)


sudo yum install redis
sudo systemctl enable redis
sudo systemctl start redis

ElasticSearch 배포(Option)



ElasticSearch는 불행히도 표준 리포지토리에도 EPEL에도 없기 때문에, 공식이 준비하고 있는 리포지토리를 추가한다. 또한 crowi v1.6 이후는 ElasticSearch 2.x가 아니라 5.x를 사용할 필요가 있으므로 주의( *1 ).

/etc/yum.repos.d/elasticsearch.repo
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://packages.elastic.co/elasticsearch/5.x/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

그런 다음 sudo yum install elasticsearch 에서 설치.

또, 검색에 사용하는 ElasticSearch는 일본어 대응을 위해 kuromoji 플러그인을 도입할 필요가 있다. 이렇게하려면 /usr/share/elasticsearch/에서 다음 명령을 실행하십시오.
bin/elasticsearch-plugin install analysis-kuromoji

그리고 시작한다. 디폴트 포트는 9200번으로 되어 있다.
sudi systemctl enable elasticsearch
sudo systemctl start elasticsearch

시작


sudo PORT=80 \
NODE_ENV=production \
MONGO_URI=mongodb://localhost:27017/crowi \
REDIS_URI=redis://localhost:6379 \
ELASTICSEARCH_URI=localhost:9200 \
PASSWORD_SEED=hogehogehoge \
SECRET_TOKEN=hogehogehoge \
node app.js

그러나, 이것으로는 ssh 접속을 끊으면 종료해 버리므로 데몬화할 필요가 있다. 데몬화에는 forever를 사용한다. PM2도 시도했지만 이쪽은 왠지 데이터베이스에 접속할 수 없다고 해서 빨리 떨어지기 때문에 포기했다.
sudo npm -g install forever
sudo PORT=80 \
NODE_ENV=production \
MONGO_URI=mongodb://localhost:27017/crowi \
REDIS_URI=redis://localhost:6379 \
ELASTICSEARCH_URI=localhost:9200 \
PASSWORD_SEED=hogehogehoge \
SECRET_TOKEN=hogehogehoge \
forever start app.js

끝에



서클과 같은 작은 팀에서 정보 공유할 경우 Qiita: Team이나 esa.io 등은 과장된 느낌이 들고 비용도 든다. crowi와 같은 오픈 소스 wiki 시스템은 그러한 경우에 충분히 사용을 견딜 수 있고, 부족한 기능이 있으면 스스로 구현할 수도 있으므로 추천.

이번에는 모두 OS, 혹은 OSS 공식이 제공하고 있는 패키지를 이용했지만, docker로 운용하면 느슨하게 결합된 구성이 되어, 부하가 높아졌을 때에 다른 인스턴스에 컨테이너를 이동할 수 있어 좋을지도 모른다고 생각했다.

참고


  • crowi github
  • Elasticsearch를 yum으로 설치 (CentOS)
  • 좋은 웹페이지 즐겨찾기