使用RaspberryPi来运行Crowi的维基

有一個可以用Markdown編寫的不錯的Wiki伺服器軟體列表。

我试着阅读了一下,并尝试在树莓派上练习运行。

环境

设备:RaspberryPi2 ModelB
操作系统:RASPBIAN JESSIE WITH PIXEL(内核版本为Linux 4.4.38-v7)
Node.js版本:v4.4.7
MongoDB版本:2.4.10

由于Docker无法运行,所以我决定自己搭建环境。

最初的Qiita文章的作者已经将其转换为Docker镜像了。

在树莓派上由于CPU的限制,无法使用某些容器等。

因为事情没有顺利进行下去,所以我决定自己来构建环境。

虽然说要参考下面的文章就能完成大部分的工作
用Markdown编写的Wiki – Crowi

安装build-essential, python, git, kerberos。

如果未安装,请执行以下操作(我认为python最初应该已经安装好了)。

$ sudo apt-get update
$ sudo apt-get install build-essential python git libkrb5-dev -y

安装MONGO DB

尝试安装Mongo 3.x系列时遇到了许多困难,但最终无法成功(虽然据后文所述,似乎也可以在Raspberry Pi上使用3.x系列版本)。

先使用apt-get简单地安装2.4版本。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install mongo-server -y

# 確認
$ mongo -version
MongoDB shell version: 2.4.10

如果想要安装3.x系列版本,可能有以下方法,但我自己尝试没有成功。
将MongoDB 3.x安装到Raspberry PI 3上。

在MongoDB中添加用户

这个版本是2.4,所以需要使用addUser来添加用户,而不是Mongo3.x系列中的createUser。

关于crowidb(数据库),pi(用户名),和raspberry(密码),您可以自由选择自己喜欢的名称。

$ mongo
> use crowidb
> db.addUser("pi", "raspberry", true)

输入以上内容,控制台应该会显示如下:

pi@raspberrypi ~ $ mongo
MongoDB shell version: 2.4.10
connecting to: test
Server has startup warnings: 
Wed Feb  8 13:01:27.093 [initandlisten] 
Wed Feb  8 13:01:27.093 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
Wed Feb  8 13:01:27.093 [initandlisten] **       32 bit builds are limited to less than 2GB of data (or less with --journal).
Wed Feb  8 13:01:27.093 [initandlisten] **       See http://dochub.mongodb.org/core/32bit
Wed Feb  8 13:01:27.094 [initandlisten] 

> use crowidb
switched to db crowidb
> db.addUser("pi", "raspberry", true)
{
    "user" : "pi",
    "readOnly" : true,
    "pwd" : "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "_id" : ObjectId("xxxxxxxxxxxxxxxxxxxxxx")
}

可以通过以下命令来确认数据库是否已创建。

> db.system.users.find()
{ "_id" : ObjectId("xxxxxxxxxxxxxxxxxxxxxx"), "user" : "pi", "readOnly" : true, "pwd" : "xxxxxxxxxxxxxxxxxxxxxxx" }

(pwd和_id的部分实际上是由字母和数字组成的列表,但暂时略去)

只需要通过这个来准备MongoDB,接下来安装Node.js即可。

安装 Node.js 4.x

查看公式的GitHub

看起来需要安装Node.js的4.x版本。

可以按照链接中的方法安装,但我个人是使用nodebrew进行安装的。

使用nodebrew工具,先安装v4.4.7版本。

$ nodebrew install-binary v4.4.7

$ nodebrew use v4.4.7

# nodeコマンドやnpmコマンドでバージョンが確認出来たら成功
$ node -v
v4.4.7
$ sudo node -v
v4.4.7
$ npm -v
2.15.8

由于节点准备完毕,接下来要安装Crowi。

把Crowi放进去。

在合適的目錄下使用git clone。

在执行 $ npm install 前先安装 node-gyp (如果不安装 node-gyp ,我尝试时会出现错误)

参考: 在Debian jessie上运行Crowi的步骤(附带日本语搜索方法)

如果仍然发生错误,请在git checkout中指定Crowi版本为1.5.0(我已经尽力了,不过也许不需要这样做)。
“`
$ git clone –depth 1 https://github.com/crowi/crowi.git
$ cd crowi
$ sudo apt-get install node-gyp
“`

如果将Crowi版本设置为1.5.0,
则使用以下命令创建并切换到名为v1.5.0的分支:
“`
git checkout -b v1.5.0
“`

请使用npm安装

所以,一旦使用”$ npm install”进行安装,编译就会开始(需要相当长的时间)。

请指定密码种子(PASSWORD_SEED)和Mongo数据库连接字符串(MONGO_URI)。

設置必要的環境變數項目。

如果在crowi目录下预先编写一个shell脚本会很方便。

由于先前已使用crowidb、pi和raspberry这些名称创建了MongoDB的配置,因此MONGO_URI的设置如下。

#!/bin/bash

export PASSWORD_SEED=raspberry
export MONGO_URI=mongodb://pi:raspberry@localhost/crowidb
npm start

所以,执行它

$ sudo chmod +x crowi.sh
$ sudo ./crowi.sh
> crowi@1.5.3 start /home/pi/crowi
> node app.js

[development] Express server listening on port 3000

当服务器在3000端口上监听时,就表示成功。

一旦获得了自己的Raspberry Pi的IP地址,只需要通过端口号3000访问即可。

如果你能看到Crowi的安装界面,那就表示安装成功了。

可以使用ifconfig命令来确认Raspberry Pi的IP地址。

如果IP地址是192.168.0.200,只需访问http://192.168.0.200:3000即可。

如果您想要自動启动,可以参考链接内的内容以完成。

bannerAds