Help us understand the problem. What is going on with this article?

Crowi Plusの構築

More than 1 year has passed since last update.

概要

CentOSを構築し、その上でCrowi Plusを動かす。
バックアップも日々取得し、AWSに飛ばす。

OS準備

以下の条件でCentOS7.4をインストール
Software: minimal
timezone: Asia/Tokyo
Keyboard: Japanese
Network Setting: 192.168.80.15
hostname: crowiplus1

Docker Install

参考

Dockerレポジトリの登録

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Dockerインストール

yum install docker-ce
systemctl start docker
docker run hello-world

Crowi Plusのインストール

pipインストール(Epelレポジトリが必要)

参考

yum install -y epel-release
yum install -y python-pip

CrowiPlusのインストール

[root@crowiplus1 crowi-plus]# yum install -y git
[root@crowiplus1 crowi-plus]# pip install docker-compose
[root@crowiplus1 crowi-plus]# git clone https://github.com/weseek/crowi-plus-docker-compose.git crowi-plus
[root@crowiplus1 crowi-plus]# cd crowi-plus
[root@crowiplus1 crowi-plus]# cp -p docker-compose.yml docker-compose.yml.orig
[root@crowiplus1 crowi-plus]# vi docker-compose.yml
[root@crowiplus1 crowi-plus]# diff docker-compose.yml docker-compose.yml.orig
[root@crowiplus1 crowi-plus]# diff docker-compose.yml.orig docker-compose.yml
9c9
<       - 127.0.0.1:3000:3000    # localhost only by default
---
>       - 0.0.0.0:3000:3000    # localhost only by default
23c23
<       # - FILE_UPLOAD=local    # activate this line if you do not want to use AWS for file upload
---
>       - FILE_UPLOAD=local    # activate this line if you do not want to use AWS for file upload
34a35,36
>     ports:
>       - 0.0.0.0:27017:27017
47c49
<       - "ES_JAVA_OPTS=-Xms256m -Xmx256m"  # increase amount if you have enough memory
---
>       - "ES_JAVA_OPTS=-Xms512m -Xmx512m"  # increase amount if you have enough memory

[root@crowiplus1 crowi-plus]# docker-compose up

変更点としては、
- 外部からアクセスできるように、0.0.0.0に変更
- ローカルのファイルアップロードを有効化
- MongoDBのポートもフォワードさせる(バックアップのため)
- ElasticSearchのメモリサイズを256->512に(余裕があれば)

初期設定

ブラウザでIP:3000にアクセスして初期設定を行う。

初期設定1
初期設定2
初期設定3

これで使用可能な状態になる。

バックアップ

こちらを参考に。

バックアップすべき対象の確認

docker-compose.ymlより。

volumes:
crowi_data:/data
mongo_configdb:/data/configdb
mongo_db:/data/db
redis_data:/data
es_data:/usr/share/elasticsearch/data
es_plugins:/usr/share/elasticsearch/plugins
./esconfig:/usr/share/elasticsearch/config

これに対応するローカルは、
docker volume ls
docker volume inspect
で確認できる。

/var/lib/docker/volumes/crowiplus_crowi_data/data
/var/lib/docker/volumes/crowiplus_mongo_configdb/data
/var/lib/docker/volumes/crowiplus_mongo
db/_data
/var/lib/docker/volumes/crowiplus
redis_data/data
/var/lib/docker/volumes/crowiplus_es_data/_data
/var/lib/docker/volumes/crowiplus
es_plugins/_data

mongodbは専用のdumpツールでバックアップする。
crowiのdataボリュームの一部(アップロードされたファイル)はtarでバックアップ
他は不要らしい。

AWS

S3にてバケットの作成

バケット作成1

バケット作成2

バケット作成3

バケット作成4

バケット作成5

IAMサービスから、ユーザを作成
IAM1

IAM2

IAM3

IAM4

IAM5

IAM6

IAM7

この画面から、Access IDとシークレットアクセスキーを確認しておく。

[root@crowiplus1 ~]# pip install awscli
[root@crowiplus1 crowi-plus]# aws configure
AWS Access Key ID [None]: (AWSコンソールで確認)
AWS Secret Access Key [None]: (AWSコンソールで確認)
Default region name [None]:
Default output format [None]: json
[root@crowiplus1 crowi-plus]#
[root@crowiplus1 crowi-plus]# aws s3 cp docker-compose.yml s3://crowi-backup-keisuke1208
upload: ./docker-compose.yml to s3://crowi-backup-keisuke1208/docker-compose.yml

mongodbのバックアップ

mongodumpのインストールから実施

[root@crowiplus1 tmp]# vi /etc/yum.repos.d/mongodb-org-3.6.repo
[root@crowiplus1 tmp]# cat /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

[root@crowiplus1 tmp]# yum install mongodb-org-shell
[root@crowiplus1 tmp]# yum install mongodb-org-tools
[root@crowiplus1 tmp]# mongodump --host=crowiplus1 --port=27017 -d crowi --gzip --archive=mongodbdump.gz

アップロードファイルのバックアップ

Crowiにアップロードされたファイルのバックアップ

[root@crowiplus1 tmp]# tar cvf uploadfiles.tar /var/lib/docker/volumes/crowiplus_crowi_data/_data/uploads/
[root@crowiplus1 tmp]# gzip uploadfiles.tar

AWSへのバックアップ

[root@crowiplus1 tmp]# ls
ks-script-2XhXhn  systemd-private-9853899e514c4a73ab85d7524772b40a-vgauthd.service-0iuEtk   uploadfiles.tar.gz
mongodbdump.gz    systemd-private-9853899e514c4a73ab85d7524772b40a-vmtoolsd.service-BVVso8  yum.log
[root@crowiplus1 tmp]#
[root@crowiplus1 tmp]# tar cvfz 20180305.tar.gz *.gz
[root@crowiplus1 tmp]# aws s3 cp 20180305.tar.gz s3://crowi-backup-keisuke1208

これでOK。後は参考同様にシェル化してcron登録しておけばよい。

[root@crowiplus1 crowi-plus]# cat backup.sh
#!/bin/bash

TODAY=`date +"%Y%m%d"`
WORKDIR=/root/crowi-plus
tar cvfz ${WORKDIR}/${TODAY}_uploads.tar /var/lib/docker/volumes/crowiplus_crowi_data/_data/uploads/
mongodump --host=crowiplus1 --port=27017 -d crowi --gzip --archive=${WORKDIR}/${TODAY}_mongodbdump.gz
tar cvfz ${WORKDIR}/${TODAY}_crowi-backup.tar.gz ${WORKDIR}/${TODAY}_uploads.tar ${WORKDIR}/${TODAY}_mongodbdump.gz
aws s3 cp ${WORKDIR}/${TODAY}_crowi-backup.tar.gz s3://crowi-backup-keisuke1208

rm -f ${WORKDIR}/${TODAY}_uploads.tar
rm -f ${WORKDIR}/${TODAY}_mongodbdump.gz
find ${WORKDIR} -name "*.tar.gz" -mtime +7 -delete

[root@crowiplus1 crowi-plus]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@crowiplus1 crowi-plus]# crontab -l
0 3 * * * /root/crowi-plus/backup.sh

終わりに

これだけだとAWS上に無制限にバックアップがとられるので、要注意。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away