0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

re:dash サーバーに Growiを同居させてみた

Last updated at Posted at 2019-07-21

/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/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?