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)。
[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で運用すれば疎結合な構成になり、負荷が高くなった際に他のインスタンスにコンテナを移動できていいかもしれないと思った。
参考
Author And Source
この問題について(ConoHa VPSに情報共有システムcrowiを立てる。), 我々は、より多くの情報をここで見つけました https://qiita.com/nukosuke/items/f44edd4ad8934e42eecb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .