Markdown
RaspberryPi
Crowi

RaspberryPiでCrowiのwikiを動かす

More than 1 year has passed since last update.

Markdownで書ける、よさげなWikiサーバーソフトまとめ

を読んでみてRaspberryPiで練習がてら動かしてみた

環境

デバイス: RaspberryPi2 ModelB
OS: RASPBIAN JESSIE WITH PIXEL (KernelがLinux 4.4.38-v7)
Node.js: v4.4.7
MongoDB: 2.4.10

dockerだと動かなかったので自分で環境構築していく

最初のQiita記事の作者さんがdockerイメージ化してくれてたのだが

RaspberryPiだと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系入れようと四苦八苦したけどできなかったので
(後述するが一応RaspberryPiでも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系が欲しい場合は下記やり方はあるっぽいけど自分はうまくいかなかった
Raspberry PI 3にMongoDB 3.xを入れる

MongoDBにuserをaddする

Mongo3.x系だとcreateUserだけど、こっちは2.4なのでaddUserを使用して
userを追加する

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

nodeの準備が整ったので次にCrowiを入れる

Crowiを入れる

適当なディレクトリでgit cloneする

$ npm install する前にnode-gypというのを入れておくこと
(自分の場合はnode-gypを入れずにやったらエラーになった)

参考: CrowiをDebian jessieで動かしたときの手順(日本語で検索する方法つき)

もしそれでもエラーになるようなら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とする場合
$ git checkout -b v1.5.0

$ npm install
```

で、$ npm install したらコンパイルが始まる(けっこう時間がかかる)

PASSWORD_SEEDとMONGO_URIを指定する

環境変数として必須の項目を設定

以下のようにcrowiディレクトリでシェル・スクリプトを作っておくとすると便利

MongoDBの設定を先ほどcrowidb, pi, raspberryという名前で作成したので
MONGO_URIの設定は下記のようになる

crowi.sh
#!/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ポートでserver listeningになったら成功

後は自分のRaspberryPiのIPアドレスにポート番号3000でアクセスしたら

Crowiのインストール画面が表示されるはずなので、表示されたら成功

RaspberryPiのIPアドレスはifconfigコマンドで確認できます

例えばIPアドレスが 192.168.0.200 だったら http://192.168.0.200:3000 にアクセスすれば良い

自動起動したい場合は参考にしたリンク内を参考にすればできるかと思います