概要
Ubuntu(18.04)にGrowiをインストールした手順のメモです。
基本的には公式手順に従います。
LAN内での使用を前提に、リバースプロキシやファイアウォールは設定していません。
あとnode.jsは単一バージョンしか入れていないので、nvm等を使用する場合はPathの設定とか必要と思います。
上から順にコピペしていけば、最低限Growiが動作する状態にできると思います。
必要環境
必要な環境は、Githubをみると以下となっている。
- node.js 8.x (DO NOT USE 9.x)
- npm 5.x
- yarn
- MongoDB 3.x
- Redis 3.x (Optional)
- Elasticsearch 5.x (Optional)
- Japanese (kuromoji) Analysis plugin
- ICU Analysis Plugin
インストール
Node.js
Node.js ver8.xを入れる。npmも同時に入る。
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt install -y nodejs
$ node -v
v8.11.4
$ npm -v
v5.6.0
yarn
デフォルトだとcmdtestが入っている。エラーが出る場合は削除してからインストールする。
公式ドキュメント
$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt-get update && sudo apt-get install yarn
$ yarn -v
1.9.4
MongoDB
普通にインストール可能。
$ sudo apt update
$ sudo apt install -y mongodb mongodb-server mongo-tools
サービス起動し、確認。
$ sudo systemctl start mongodb
$ sudo systemctl status mongodb
Active: active (running)となっていればOK。
自動起動を設定する。
$ sudo systemctl enable mongodb
バージョンの確認(exitで抜ける)
$ mongo
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
Server has startup warnings:
:
> exit
bye
Elasticsearch
公式ドキュメントはこちら。
aptでインストールできるようにする。
まず、java8が必要なので、入っているか確認。
$ java --version
Command 'java' not found, but can be installed with:
sudo apt install default-jre
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless
入っていないといわれるので、記載されている通り入れる。
$ sudo apt install -y default-jre openjdk-11-jre-headless openjdk-8-jre-headless
$ java --version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.1)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.1, mixed mode)
インストール先を確認し、JAVA_HOMEにjava8を設定する。
$ update-alternatives --list java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
$ cd /etc/profile.d/
$ sudo vi java.sh
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
一度ログアウトし、JAVA_HOMEを確認する。
$ echo $JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64
Elasticsearchのリポジトリを設定し、インストールする。
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
$ echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
$ sudo apt update
$ sudo apt install -y elasticsearch
必要なプラグインを入れる。
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
$ sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
起動・確認
$ sudo systemctl start elasticsearch
$ sudo systemctl status elasticsearch
※エラーになる場合は、メモリが足りていないことがある。メモリ使用量を設定する(下記は256MBの場合)
$ sudo vi /etc/elasticsearch/jvm.options
-Xms256m
-Xmx256m
自動起動の設定
$ sudo systemctl enable elasticsearch
動作確認
$ curl localhost:9200
Redis
RedisとはREmote DIctionary Serverの略語で、Key-Value型のNoSQLのこと。
Elasticsearchで使用されている。詳細は公式ドキュメントを参照。
リポジトリを追加し、バージョンを確認。
$ sudo add-apt-repository ppa:chris-lea/redis-server
$ sudo apt update
$ sudo apt show redis-server
インストール
$ sudo apt install -y redis-server
$ redis-cli --version
$ redis-server --version
サービス起動し、確認。
$ sudo systemctl start redis-server
$ sudo systemctl status redis-server
自動起動を設定する。
$ sudo systemctl enable redis-server
Growi
公式に従い、/opt/groiwにインストールする。
タグを確認し最新版のブランチを作成し、(ver3.2.1が最新でした)
yarnでインストールする。
$ cd /opt
$ sudo git clone https://github.com/weseek/growi
$ cd growi
$ sudo git tag -l
$ sudo git checkout -b v3.2.1 refs/tags/v3.2.1
$ sudo yarn
以下のようにして、起動確認を行う。
sudo \
NODE_ENV=production \
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
REDIS_URI=redis://localhost:6379 \
PASSWORD_SEED=xxxx (MAX64文字のランダム文字列) \
FILE_UPLOAD=local \
npm start
PCの性能によるが1分程度で[production] Express server listening on port 3000
の表示が出たら起動OK。
ブラウザで、http://serverIP:3000/ を表示し、初期ページが出ることを確認する。
※ファイアウォールが有効な場合は、Portの開放が必要です。
確認したら、Ctrl+Cで終了する。
※PASSWORD_SEEDは、パスワードの暗号化に使用されるため、変更するとログインできなくなる。一度決めたら変えないこと。
(参考) MONGO_URIの設定は、mongoを起動し表示されるログから確認可能。
$ mongo
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
2行目の"mongodb://127.0.0.1:27017"がほしい情報。127.0.0.1はlocalhostとしても同じ。
ELASTICSEARCH_URIはわからない(^^;
Growiの自動起動の設定
/etc/systemd/systemにxxx.serviceを作成すると自動起動サービスとして登録できる。
ファイル名(xxx)は何でもよい。
$ sudo vi /etc/systemd/system/growi.service
[Unit]
Description = growi
After=network-online.target mongod.service
ConditionPathExists=/opt/growi
[Service]
ExecStart=/opt/growi/growi-start.sh
Restart=no
Type=simple
[Install]
WantedBy=multi-user.target
Description : 説明文、何を書いてもよい
After : 起動順の指定。networkとmongodの起動後にスタートするよう設定
ConditionPathExists : インストールディレクトリ
ExecStart : 起動スクリプト
他は特に触る必要はない。
作成したファイルの権限を変更する。
$ sudo chown root:root /etc/systemd/system/growi.service
$ sudo chmod 644 /etc/systemd/system/growi.service
起動スクリプトを作成する。
growi.serviceのExecStartに設定したパスに作る。
サービスはroot権限で実行されるのでsudoは不要。
$ sudo vi /opt/growi/growi-start.sh
#!/bin/sh
cd /opt/growi
NODE_ENV=production \
MONGO_URI=mongodb://localhost:27017/growi \
ELASTICSEARCH_URI=http://localhost:9200/growi \
REDIS_URI=redis://localhost:6379 \
PASSWORD_SEED=xxxx (MAX64文字のランダム文字列) \
FILE_UPLOAD=local \
npm start
実行権限を付与する。
$ sudo chmod +x /opt/growi/growi-start.sh
デーモンを再起動しGrowiサービスの起動・確認
$ sudo systemctl daemon-reload
$ sudo systemctl start growi.service
$ sudo systemctl status growi.service
startしてから、Growiが立ち上がるのに少しかかるので、しばらくしてからstatusを確認する。
末尾に[production] Express server listening on port 3000
の表示があればOK。
(参考)systemctlのログを見る方法
$ sudo journalctl -u growi -b
自動起動を設定する。
$ sudo systemctl enable growi.service
メモ
データのありかなど。
- 本文
mongodb内にある(はず)。
バックアップやリストアは、mongoの手順通りにやればできる。
$ mongo
> use growi
> db.getCollectionNames()
> db.pages.find()
:
- アップロードしたファイル
投稿した記事を開くと、ページ上部にhttp://xxx.xxx.xxx.xxx:3000/5b9a12e799eea20ca1c79bdd
のようなリンクが表示されている。
/opt/growi/public/uploads/attachment
にリンクと同じ文字列のディレクトリが生成され、その中に保存されている。