最近になって職場に社内Wikiとして導入されたCrowi-plusの使い勝手が非常に良かったため、自分用に導入しようと考えて手順をまとめました。
※手順について調べてるうちにCrowi-plusがGrowiという名前に変わったようです(手順について紹介してるサイトのGitHubへのリンクがGrowiにリダイレクトされて混乱した;;)
調べてみると私が日常的に使っているhttpd、PHP、Java、MySQL、PostgreSQL、Tomcatのあたりは不要でNode.jsとMongoDBというNoSQLなデータベースが必要とのこと。
当ブログを動かしてる既存のVPS環境(さくらのVPSのメモリ1GBプラン)に構築するのは怖かったので新規にGMOのConoHaというVPSサーバーをレンタルすることにしました。手順については別途まとめていますのでよろしければご確認ください。
→ConoHaのVPSサーバー構築手順
なお、各モジュールについての理解を深めるためあえてDockerは使わずにセットアップに挑戦してみました。
Crowiについて簡単な動作要件くらいしかわかってなかったので、まずは以下のページを確認しておおよその手順を勉強しました。
GitHub – weseek/growi: GROWI – Team collaboration software using markdown
最強のWiki「Crowi」のフォーク、「GROWI(旧crowi-plus)」を公開した話 – Qiita
CentOS7にCrowi-Plusをインストールする方法 – Qiita
crowi-plusをEC2(t2.micro)で動かす
Crowi Plusの構築
はじめにgitをインストールしました。
# yum install git
mongodb-orgをインストールする際にコンフリクトするという記事を見かけたので以下の記事にしたがってリポジトリ設定を追加してインストールしました。
yumでmongodbをインストールするときの注意 – Qiita
# vi /etc/yum.repos.d/mongodb-org-3.6.repo
[mongodb-org-3.6] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
# yum install mongodb-org # systemctl start mongod # systemctl enable mongod
以下を参考にNode.jsのインストールを行いました。
パッケージマネージャを利用した Node.js のインストール | Node.js
# curl -sL https://rpm.nodesource.com/setup_6.x | bash - # yum install nodejs
Growiで使用されるnodejsの依存関係について事前に調べずに適当に操作してnodejs6をインストールしてしまい、アンインストールを行ったあとでnodejs8をインストールしようとしたところまたしても6系が入ってしまい8系がインストールできないという現象に遭遇しました。
→Fail to install nodejs 8 on CentOS 7 · Issue #472 · nodesource/distributions · GitHub
色々調べたところ以下のコマンドでnodejsのリポジトリを削除してyumのキャッシュをクリーンしてインストールしなおすことでnodejs8のインストールが無事に行えました。
# yum clean all # rm -f /etc/yum.repos.d/nodesource* # curl -sL https://rpm.nodesource.com/setup_8.x | bash - # yum install nodejs
npmのバージョンを確認したところGrowiの依存関係をクリアした5.6.0が入っていました。が、最新のバージョンを確認したところ5.8.0だったのでグローバルインストールで差し替えてみました。
# npm info npm versions --json | grep '"5.' # npm install -g npm@5.8.0
nodejsとnpmのバージョンを確認したのが以下
npmでインストールする際にビルドツールによるコンパイルが必要とのことなので、ビルドツールをインストールしました。以下の画像を見てわかるとおりmakeは既に入ってました。
# yum install gcc-c++ make
ここよくわかっていないですがyarnというnpmに関連した何かをインストールしました。
# wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo # yum install yarn
Growiの導入は事前に読み込んでおいた情報通りに実施しました。lsxというツリー表示を行ってくれるプラグインがすごい便利なので追加でインストールしてみました。
CentOS7にCrowi-Plusをインストールする方法 – Qiita
# cd /usr/local # mkdir site && cd $_ # git clone https://github.com/weseek/growi.git # cd growi # yarn ツリー表示を行うプラグインを追加 # yarn add growi-plugin-lsx
Growiをサービス化するための設定
# vi /etc/systemd/system/growi.service
[Unit] Description=Growi After=network.target mongod.service [Service] WorkingDirectory=/usr/local/site/growi EnvironmentFile=/etc/sysconfig/growi ExecStart=/usr/bin/npm start [Install] WantedBy=multi-user.target
Growi用の環境変数ファイルの作成
# vi /etc/sysconfig/growi
PORT=3000 NODE_ENV=production PASSWORD_SEED="`openssl rand -base64 128 | head -1`" MONGO_URI="mongodb://localhost/growi" FILE_UPLOAD=local
Growiの起動、自動起動
# systemctl daemon-reload # systemctl start growi # systemctl enable growi
しばらくたってもブラウザでアクセスできないので調べたところ、デフォルトのファイアウォールによって3000番へのアクセスが遮断されていました。以下のコマンドでファイアウォールを停止しました。
# systemctl stop firewalld # systemctl disable firewalld
あらかじめDNSレコード設定を用意しておいたwikiサブドメインにアクセスして正常に初回セットアップ画面が表示されることを確認!
→http://wiki.imo-tikuwa.com:3000/
初回の設定を行ってひとまずトップページが見れることを確認しました。