在ConoHa VPS上搭建信息共享系统crowi

用Node.js开发的信息共享工具。可以使用熟悉的Markdown格式进行编写,并使用MongoDB作为数据库。还支持ElasticSearch中的搜索。
虚拟专用服务器(VPS)的安装设定
签约ConoHa并建立服务器实例后,首先要进行防火墙的设置。要注意ConoHa面板中的防火墙和操作系统的防火墙是不同的。要从互联网进行访问,两者都需要打开。

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 (选项)
sudo yum install redis
sudo systemctl enable redis
sudo systemctl start redis
引入ElasticSearch选项。
很遗憾,ElasticSearch在标准仓库和EPEL中都不可用,因此需要添加官方提供的仓库。注意,从crowi v1.6开始,需要使用ElasticSearch 5.x而不是2.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来进行安装。
此外,为了使搜索系统兼容日语,需要安装kuromoji插件来使用ElasticSearch进行搜索。可以在/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系统在这种情况下完全能够满足使用,而且如果有一些功能不足的话,还可以自己进行实现,非常推荐使用。
我們這次使用了操作系統或開源軟體提供的包裝,但如果使用docker運營,將實現鬆散耦合的架構,當負載增加時,可以將容器移動到其他實例上,這可能是一個不錯的選擇。
请参考
-
- crowi github
- Elasticsearch を yumでインストール (CentOS)