CentOS 7 に Crowi をインストールする
手元の CentOS 7 に Markdown で書ける Wiki「Crowi」をインストールしてみました。
Crowi
http://site.crowi.wiki/
crowi/crowi: Crowi - Wiki
https://github.com/crowi/crowi
Node.js のインストール
Crowi は Node.js 製なので、まずは Node.js をインストールします。
Github の Dependencies に「Node.js (4.x)」とあったので 4 系を入れました。
# curl -sL https://rpm.nodesource.com/setup_4.x | bash -
Node.js をインストールします。
また、 native addon 用にビルド用ツールもインストールしました。
# yum install -y nodejs gcc-c++ make
4.7.0 が入りました。
# node -v
v4.7.0
MongoDB のインストール
# vi /etc/yum.repos.d/mongodb.repo
内容は以下。
[mongodb] name=MongoDB repo baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/ gpgcheck=0 enabled=0
インストールします。
# yum --enablerepo=mongodb install -y mongodb-org
サーバを起動して接続。
# systemctl start mongod # mongo
以下のバージョンがインストールされました。
> db.version() 2.6.12
Crowi 用の DB を作成します。
ここでは DB 名は crowidb としました。
> use crowidb
switched to db crowidb
続いてユーザを作成します。
ここでは簡単のため、ユーザ名「crowi」パスワード「password」としました。
実際に構築される際にはもっと複雑で適切な値を設定してください。
> db.createUser({user: "crowi", pwd: "password", roles: [{role: "readWrite", db: "crowidb"}]}) Successfully added user: { "user" : "crowi", "roles" : [ { "role" : "readWrite", "db" : "crowidb" } ] }
Redis のインストール
EPEL からインストールします。
# rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7 # yum install -y http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm # yum --enablerepo=epel install -y redis
インストールしたらサービスを起動。
# systemctl start redis
自動起動設定も有効にしておきます。
# systemctl enable redis
接続確認してみます。
# redis-cli -h localhost INFO Server # Server redis_version:2.8.19 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:c0359e7aa3798aa2 redis_mode:standalone os:Linux 3.10.0-229.el7.x86_64 x86_64 arch_bits:64 multiplexing_api:epoll gcc_version:4.8.3 process_id:11369 run_id:fa057241b1600d0779010d71588fb19090a42b6b tcp_port:6379 uptime_in_seconds:149 uptime_in_days:0 hz:10 lru_clock:6192911 config_file:/etc/redis.conf
問題なさそうです。
Elasticsearch のインストール
まずは Java をインストールします。
# yum install -y java-1.8.0
yum リポジトリからインストールするため、GPG Key をインストールします。
# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
リポジトリ定義ファイルを作成。
# vi /etc/yum.repos.d/elasticsearch.repo
内容は以下。
[elasticsearch-2.x] name=Elasticsearch repository for 2.x packages baseurl=https://packages.elastic.co/elasticsearch/2.x/centos gpgcheck=1 gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch enabled=0
インストール、起動、自動起動設定の有効化を行います。
# yum --enablerepo=elasticsearch-2.x install -y elasticsearch # systemctl start elasticsearch # systemctl enable elasticsearch
日本語に対応するため、analysis-kuromoji をインストールします。
# /usr/share/elasticsearch/bin/plugin install analysis-kuromoji
elasticsearch を再起動し、プラグインが読み込まれている事を確認します。
# systemctl restart elasticsearch # curl -X GET 'http://localhost:9200/_nodes/plugins?pretty' { "cluster_name" : "elasticsearch", "nodes" : { "5u4vcPnrQhW4pDLRXRVulA" : { "name" : "Wild Child", "transport_address" : "127.0.0.1:9300", "host" : "127.0.0.1", "ip" : "127.0.0.1", "version" : "2.4.3", "build" : "d38a34e", "http_address" : "127.0.0.1:9200", "plugins" : [ { "name" : "analysis-kuromoji", "version" : "2.4.3", "description" : "The Japanese (kuromoji) Analysis plugin integrates Lucene kuromoji analysis module into elasticsearch.", "jvm" : true, "classname" : "org.elasticsearch.plugin.analysis.kuromoji.AnalysisKuromojiPlugin", "isolated" : true, "site" : false } ], ・ ・ ・
Crowi のインストール
これでやっと必要な環境が揃ったので、 Crowi のセットアップを進めて行きます。
まずは git と krb5-devel をインストール。
# yum install -y git krb5-devel
アプリケーション配置用ディレクトリを作成します。
ここでは「/var/apps」にしました。
# mkdir /var/apps && cd /var/apps/
crowi を Github から clone して v1.5.2 タグをチェックアウトします。
# git clone https://github.com/crowi/crowi.git && cd crowi/ # git checkout refs/tags/v1.5.2
npm install を実行します。
ここが結構時間がかかります。
# npm install
CSS, JS のビルドを実行。
画面にアクセスしてデザインが崩れている場合はこれが抜けている可能性が高いです。
# npm run build
systemd で自動起動できるようにするため、service ファイルを作成します。
# vi /etc/systemd/system/crowi.service
内容は以下のようになります。
「WorkingDirectory」は先程 crowi を配置したディレクトリ。
[Unit] Description=Crowi After=network.target mongod.service [Service] WorkingDirectory=/var/apps/crowi EnvironmentFile=/etc/systemd/system/crowi.conf ExecStart=/usr/bin/node app.js [Install] WantedBy=multi-user.target
パスワード seed に使うためにランダム文字列を生成します。
ここでは openssl コマンドを使って以下のようにしました。
この値をメモっておきます。
# openssl rand -base64 128 | head -1
t/yi260BoYViSDiamTzwMOxmV4cuSSkude1X703AnPgpIZDdRTsAJoCPET5pxD5L
service 起動時の環境変数設定ファイルを作成します。
# vi /etc/systemd/system/crowi.conf
内容は以下のようになります。
先程メモった値を「PASSWORD_SEED」に指定しています。
PORT=3000 NODE_ENV=production MONGO_URI="mongodb://crowi:password@localhost/crowidb" REDIS_URL="redis://localhost:6379" ELASTICSEARCH_URI="http://localhost:9200" PASSWORD_SEED="t/yi260BoYViSDiamTzwMOxmV4cuSSkude1X703AnPgpIZDdRTsAJoCPET5pxD5L" FILE_UPLOAD=local
これでインストールは完了したので、crowi を起動します。
# systemctl start crowi
念のためサービスのステータスを確認。
# systemctl status crowi ● crowi.service - Crowi Loaded: loaded (/etc/systemd/system/crowi.service; enabled; vendor preset: disabled) Active: active (running) since 土 2016-12-24 23:24:46 JST; 1s ago Main PID: 11621 (node) CGroup: /system.slice/crowi.service mq11621 /usr/bin/node app.js
問題なく起動したようなので自動起動設定を有効化します。
# systemctl enable crowi # systemctl is-enabled crowi enabled
これでブラウザから対象サーバの 3000 番ポートにアクセスすると、以下のような管理者登録画面が表示されます。
ユーザを作成しログインした後は以下のような感じです。
まだちょっとしか触っていませんが、見た目も綺麗だしシンプルで使いやすいし、必要な機能も一通り揃っているのでかなりいい感じです。
個人的には記事を Markdown でエクスポートする機能が付いていると嬉しかったんですが、それはないようでした。
まぁ MongoDB から直接エクスポートすればいいのか・・・。
使った感じは Qiita Team と似ていると思いました。
Qiita Team は確か結構いい値段するんで、自前で構築するのが嫌でなければこっちの方が気軽に導入できていいかも。
参考サイト
Markdownで書けるWiki - Crowi - Qiita
http://qiita.com/nullsnet/items/a6e69e44087339127b35#crowi-1
Crowiで検索を有効化する(CentOS 6.8) - Qiita
http://qiita.com/oshuya/items/05883de5cc275d87a7b8