18
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Ubuntu18.04にGrowiをインストール

概要

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にリンクと同じ文字列のディレクトリが生成され、その中に保存されている。

参考にしたサイト

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
18
Help us understand the problem. What are the problem?