/wiki-biサーバーの構築
redash + growi on ubuntu
ubuntuサーバーのインストール
2019年7月現在、growiがubuntu16.04推奨とのことだったので、ver 16.04をセットアップしました
aws上で、Ubuntu Server 16.04のインスタンスを起動した上で、ルートにてsshh接続
クライアントのコンソールから
ssh ubuntu@{{サーバーipアドレス}} -i {{暗号化接続キー}}
ルートユーザーで接続後に、
sudo apt update
sudo apt upgrade
sudo /sbin/shutdown -r now
と、サーバーを更新し、再起動をしました。
その後作業ユーザーを追加し、(例 wokingusr), sudo 権限をつけました
sudo adduser workingusr
sudo gpasswd -a workingusr
visudo
※ visudoについてはこちらを参照しました
https://eng-entrance.com/linux-command-visudo
re:dashのセットアップ
参考:https://qiita.com/p1nk5p1der/items/bd95a40a232976a4d8dd
ubuntuサーバー構築後、ディレクトリ /opt/redash を作成し、そこに redashのgithubからsetup.shをダウンロード
curl -OL https://raw.githubusercontent.com/getredash/redash/master/setup/setup.sh
メールサーバーはmaillgunを使っていたのでそちらを接続
redash の設定を確認
cd /opt/redash
cat docker-compose.yml
- server
- scheduler
- scheduled_worker
- adhoc_worker
- redis
- postgres
- nginx
postgres
- 設定ファイル:/opt/redash/env
- データファイル:/opt/redash/postgres-data
- $REDASH_DATABASE_URL $POSTGRES_PASSWORD
nginx
- 設定ファイル:/opt/redash/default.conf
redash設定ファイル
- 設定ファイル: /opt/redash/env
growiのセットアップ
この状態だと、nginxも含めて全てredashのdocker-compose.ymlで定義されたdocker内にいるわけで、そこにgorowi関係で必要なものも追加すればいいのかもしれないですが、今回はgrowi自体はhost内に直接セットアップして、redashのdocker-composeで定義されているnginxからアクセスさせることを試して見ました
1. docker内のnginxの設定ファイルを上書きする
docker内のnginx設定を確認する
servernameの確認
docker ps
redash_nginx_1である事が分かったので 起動中のコンテナのbashにアクセス
docer exec -it redash_nginx_1 bash
nginx.confの場所を確認
find / -name 'nginx.conf
/etc/nginx/nginx.conf だと言うことが分かったとしたら、その設定を確認し、
サーバーの設定はどこにあるか見ます
cat /etc/nginx/nginx.conf
結果、
include /etc/nginx/conf.d/*/conf
ということが分かりました。
ls /etc/nginx/conf.d
で、redashサービスの設定は /etc/nginx/conf.d/default.conf に存在すると言うことが分かりました
この作業はホストの方から
docker cp redash_nginx_1:/etc/nginx/conf.d/default.conf ./redash.conf_bk
で、growiの設定を上書きすべきnginx設定ファイルが手に入ったので、それを ./opt/redash/default.confにおいたとすると、docker-compose.yml のnginxの記述に次の2行を追加することで、設定が上書きできます。
volumes:
- /opt/redash/default.conf:/etc/nginx/conf.d/default.conf
変更前
nginx:
image: redash/nginx:latest
ports:
- "80:80"
depends_on:
- server
links:
- server:redash
restart: always
変更後
nginx:
image: redash/nginx:latest
ports:
- "80:80"
depends_on:
- server
volumes:
- /opt/redash/default.conf:/etc/nginx/conf.d/default.conf
links:
- server:redash
restart: always
まずはこの状態で、re:dashにアクセス出来るか確認します。
growiのセットアップ
growiを動作させるためには、nginxの他に
- node.js, npm
- elasticsearch
- mongodb
- (yarn, systemd)
が必要なので、以下の手順でセットアップします。
Dockerでも提供されているのですが、ここではmonbodbのバックアップとかの関係でサーバーに直接セットアップをしていきます
nginx ファイルの上書き
upstream redash {
server redash:5000;
}
server {
listen 80 default;
server_name bi.skill-connect.com
gzip on;
gzip_types *;
gzip_proxied any;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_pass http://redash;
}
}
upstream growi {
server 172.31.35.64:3000;
}
server {
listen 80;
server_name wiki.skill-connect.com;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://growi/;
}
}
Growi S3 アクセス権限設定
S3バケットのアクセス権限 > パケットポリシー
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::jobrainbow-growi/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": "[public ip of EC2 instance]/32"
}
}
}
]
}
各種サービス再起動
redash
cd /opt/redash
docker-compose up -d
redash 接続
docker-compose exec server bash
主要データバックアップ
バックアップ方針
Growi, redash の固有データベースのバックアップをs3にアップする
0. 準備
AWS CLIの導入
- growiでインストールして、アクセスキーを導入済み
1. Growi
# !/bin/bash
# 変数
TODAY=`date +"%Y%m%d"`
BACKUP_PATH=/home/*****/backup
# Backup
#### db-data
mkdir ${BACKUP_PATH}/${TODAY}
mongodump -d growi -o ${BACKUP_PATH}/${TODAY}
tar cfvz ${BACKUP_PATH}/mongo-${TODAY}.tar.gz ${BACKUP_PATH}/${TODAY}
rm -r ${BACKUP_PATH}/${TODAY}
aws s3 cp ${BACKUP_PATH}/mongo-${TODAY}.tar.gz s3://******-backup/growi/
# 中身の確認
# tar -zxvf ${BACKUP_PATH}/mongo-${TODAY}.tar.gz
~
2. redash
redash-backup.sh こちらはコンテナの中におくバックアップスクリプト
pg_dump -U postgres postgres | gzip > /var/backup/$1
bi-backup dockerのホスト側からの呼び出すバックアップスクリプト
docker-compose execにファイル出力を呼び出しても上手く動かなかった・・
TODAY=`date +"%Y%m%d"`
FLNM=back_$TODAY.gz
docker-compose exec postgres bash /var/backup/bi-backup.sh ${FLNM}
aws s3 cp ${BACKUP_PATH}${FLNM} s3://******-backup/redash/