背景
下記みたいな面倒を減らしたいという動機がありました。
- その彼が困ってるやつ、10秒でやれる方法あるから教えたいけど時間がない。誰か教えてあげて。
- 調べるのが面倒で質問してきたんだろうけど、回答するときに改めて調べ直すからこっちの手も止まるんだよ。
- 議事録はあのNASのあのディレクトリ掘りまくったところに・・・
- 仕様書はあのsvnのあの辺の配下に・・・
と、必要な情報があったり無かったり、特定の人に依存していたり、よくない状況が続いていました。
みんなが気軽に情報を発信できて、検索できると上手くいきそうなイメージがあったので、GROWIを試してみることにしました。やるならしっかり運用に載せたいので、とりあえず動かして、機能を確認します。上手く使って楽になれると嬉しい。
書くこと
CentOS7.6でGROWIをインストールして、最初のアカウント作成画面まで確認したので、その手順を残します。
今回は、GROWIに必要なものを1つずつインストールしていきます。
docker-composeを使うと楽らしいので、今度使ってみます。
Growiを選んだ理由
- オンプレで動かせるので、弊社が持つクラウドへの謎の警戒心に阻まれない。
- Markdownで書けるからネ申Excelを量産しなくて済む。
- オープンソース
- 分かりやすい情報がたくさんある。
- なんとなくCrowiより活発そう
GROWIについては以下の情報が詳しい。
GROWI.org - Markdown で書けるオープンソースの Wiki システム
最強のWiki「Crowi」のフォーク、「GROWI(旧crowi-plus)」を公開した話
環境
VirtualBox上のCentOS7.6
WEBサーバとしてインストール後、SSHで接続できる状態。
あと、firewallとSELinuxも無効にした。この辺ちゃんとやらねば・・。
→firewallはちゃんと設定できた
実際に運用するときは適当なマシンを探してきて使います。
インストール
GROWI DocsのUbuntuへのインストールを参考にします。
今回は全部rootでやりました。練習です。実際は適切なユーザでやるべきです。
GROWIを動かすためにインストールしたものリスト
GROWI Docsにもリストあります。
基本的にこれらをインストールしていく作業です。
- node.js 8.15.0
- npm 5.6.0
- yarn 1.13.0
- MongoDB 3.6
- OpenJDK 1.8.0_191
- Elasticsearch 5.6
- git 1.8.3.1 ←growiをgithubからcloneする時に。無かったので。
- growi 3.3.8
node.js
node.jsのバージョン8.x(DO NOT USE 9.x、だそうです)
やりかたはここを参照しました。
https://github.com/nodesource/distributions#installation-instructions-1
curlでインストール用のスクリプトを取ってきて実行(スクリプトの中身はあんまり見ていない)。
# curl -sL https://rpm.nodesource.com/setup_8.x | bash -
するとインストール?には成功しつつ、↓のようなことを言われる。
## Run `sudo yum install -y nodejs` to install Node.js 8.x LTS Carbon and npm.
## You may also need development tools to build native addons:
sudo yum install gcc-c++ make
## To install the Yarn package manager, run:
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install yarn
言われた通りに、yumでインストール
# yum install -y nodejs
# node -v
v8.15.0
良し。
npm
nodeをインストールしたのでnpmもいけるはず。
# npm -v
6.4.1
指定された5.xじゃない。このままいけるかもしれないけど、気になるので5.6をインストール。
# npm install -g npm@5.6.0
~
# npm -v
5.6.0
良し。
yarn
nodeインストール時、スクリプトに言われた通りに。
# curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo
# yum install yarn
# yarn -v
1.13.0
良し。
MongoDB
MongoDBは3.x系。インストール方法は下記を参照した。
https://docs.mongodb.com/v3.6/tutorial/install-mongodb-on-red-hat/
yumでインストールするためにリポジトリを追加。
# 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 -y mongodb-org
# systemctl start mongod.service
# mongo
MongoDB shell version v3.6.10
良し。
OpenJDK
yumのリポジトリを探してインストール後、バージョン確認。
# yum search java-1.8.0-openjdk
# yum install java-1.8.0-openjdk-devel
# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
# javac -version
javac 1.8.0_191
良し。
Elasticsearch
Elasticsearchのインストール方法はこちらを参照した。
https://www.elastic.co/guide/en/elasticsearch/reference/5.6/rpm.html
公開鍵のインストール。
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
リポジトリ追加→インストール
# vi /etc/yum.repos.d/elasticsearch.repo
リポジトリ追加。ファイルに↓の内容を書き込む。
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
インストール。
# yum install elasticsearch
個人用の場合、ElasticsearchのJavaヒープ最小・最大は256MBで十分らしいので設定。
初期値は2gだった。
-Xms256m
-Xmx256m
systemctlリロード後、自動起動の設定と起動。さらにプラグイン2つ追加。
# /bin/systemctl daemon-reload
# /bin/systemctl enable elasticsearch.service
# [root@growi ~]# systemctl start elasticsearch.service
# [root@growi ~]# systemctl status elasticsearch.service
# /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
# /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
git
普通にインストールできた。
# yum install git
# git --version
git version 1.8.3.1
よしよし。
GROWI
ついにGROWIをインストール。
githubから、 /opt/growi にcloneしてくる。
# git clone https://github.com/weseek/growi /opt/growi
タグからバージョンを選んでブランチをチェックアウトして使う。
# cd /opt/growi
# git tag -l
v3.3.6
v3.3.7
v3.3.8
# git checkout -b v3.3.8 refs/tags/v3.3.8
# git branch
master
* v3.3.8
yarnでインストール
WEBサイトがちょっとかっこいいyarn。
# cd /opt/growi
# yarn
[5/5] Building fresh packages...
Done in 151.78s.
良し。
起動確認
インストールした内容の確認
ここまででインストールができたので、起動して確認。
↓のコマンドでひとまず起動。
# cd /opt/growi
# MONGO_URI=mongodb://localhost:27017/growi ELASTICSEARCH_URI=http://localhost:9200/growi npm start
ブラウザでアクセスして確認。
/* xxxにサーバのIPアドレス */
http://xxx.xxx.xxx.xxx:3000/
systemctlで起動させる設定
systemctlから起動/停止するように。
# vi /etc/systemd/system/growi.service
書き込む。WorkingDirectoryはインストール(=git clone)した場所を指定するところ。
[Unit]
Description=Growi
After=network.target mongod.service
[Service]
WorkingDirectory=/opt/growi
EnvironmentFile=/etc/sysconfig/growi
ExecStart=/usr/bin/npm start
[Install]
WantedBy=multi-user.target
MongoDBのIPなどをメンテナンス。
# vi /etc/sysconfig/growi
以下の内容を環境に応じて記載する
PORT=3000
NODE_ENV=production
PASSWORD_SEED="`openssl rand -base64 128 | head -1`"
MONGO_URI="mongodb://localhost/growi"
ELASTICSEARCH_URI="http://localhost/growi"
FILE_UPLOAD=local
systemctlから起動。再びブラウザで見れたら成功!
# systemctl start growi.service
自動起動の確認。
rebootして自動起動できるかを確認。
# reboot
自動起動してるかどうか確認。
# systemctl status growi
● growi.service - Growi
Loaded: loaded (/etc/systemd/system/growi.service; disabled; vendor preset: disabled)
Active: inactive (dead)
起動してなかった。
設定を確認。
# systemctl is-enabled growi.service
disabled
設定し忘れてた。
自動起動を設定と確認。
# systemctl enable growi.service
Created symlink from /etc/systemd/system/multi-user.target.wants/growi.service to /etc/systemd/system/growi.service.
# systemctl is-enabled growi.service
enabled
今度こそ。reboot後に自動起動確認。
# systemctl status growi.service
● growi.service - Growi
Loaded: loaded (/etc/systemd/system/growi.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2019-02-11 22:05:31 JST; 3min 26s ago
Main PID: 3566 (npm)
CGroup: /system.slice/growi.service
├─3566 npm
├─3740 npm
├─3781 node /opt/growi/node_modules/.bin/env-cmd config/env.prod.js node src/server/app.js
└─3787 node src/server/app.js
良し。
でもまだブラウザで開ない。接続が拒否されました。
firewall止めると動いた。
# systemctl stop firewalld.service
せっかくなのでfirewallのほうも設定しておく。
ここ参考というか真似させていただきました。
https://qiita.com/yuki476/items/122bd5cc10355ce02b68
だいたい同じ内容を書いてしまっていたことに気がつく・・・自分用メモだからまあ良いです。
$ firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: ssh dhcpv6-client growi
ブラウザからのアクセスもOK.
再reboot後も大丈夫。
できた!
最後に
さあ使うぞ。
docker-composeのほうも、時間を見つけて使ってみたい。