看板工具 wekan 完全使用指南

栏目: 数据库 · 发布时间: 5年前

内容简介:内容太多,拆分几篇博客写。以 mongodb 数据库配置为例,在上述配置中,有一段配置如下:这里配置了 mongodb 默认绑定的 IP,使用 127.0.0.1 的情况下,外网无法访问该 mongodb。

wekan 介绍

内容太多,拆分几篇博客写。

snapd 安装

snapd 配置

wekan snap 方式配置

mongodb 数据库配置为例,在上述配置中,有一段配置如下:

DESCRIPTION_MONGODB_BIND_IP="mongodb binding ip address: eg 127.0.0.1 for localhost\n\t\tIf not defined default unix socket is used instead"
DEFAULT_MONGODB_BIND_IP="127.0.0.1"
KEY_MONGODB_BIND_IP="mongodb-bind-ip"

这里配置了 mongodb 默认绑定的 IP,使用 127.0.0.1 的情况下,外网无法访问该 mongodb。

官方 snap wekan 使用文档: https://github.com/wekan/wekan-snap/wiki/Install

根据文档介绍,执行下面的命令修改配置:

snap set wekan mongodb-bind-ip="0.0.0.0"

不需要重启,此时外网就可以访问该地址了,其他配置修改方式类似。

需要重启时,执行下面的命令:

systemctl restart snap.wekan.wekan

mongodb 文档: https://docs.mongodb.com/manual/crud/

复杂处理

发现看板过一段时间 CPU 就 100%.

为了测试修改配置,cp 了 /snap/wekan/381/bin 目录到别的位置(/home/redis/wekan/bin),然后修改配置。

通过 sudo mount --bind /home/redis/wekan/bin /snap/wekan/381/bin/ 将改后的配置挂载到原位置进行替换。

测试以后,还需要通过下面代码解除挂载:

umount /home/redis/wekan/bin

查看 node 负载时,用到了工具 tick: https://github.com/sidorares/node-tick

wekan 虽然通过 node --prof main.js 运行了,但是并没有产生 v8.log 文件。

wekan 端口和域名

mango 外网访问

备份还原

参考脚本: https://github.com/wekan/wekan/wiki/Backup

下面脚本都是针对 mongo 使用 27019 端口,如果不一致需要自己修改。

备份脚本 mongodump.sh

#!/bin/bash

makeDump()
{
    # Gets the version of the snap.
    version=$(snap list | grep wekan | awk -F ' ' '{print $3}')

    # Prepares.
    now=$(date +'%Y-%m-%d_%H.%M.%S')
    mkdir -p /var/backups/wekan/$version-$now

    # Targets the dump file.
    # 官方下面写的 dump=$"... 导致无法运行,这里去掉了$
    dump="/snap/wekan/$version/bin/mongodump"

    # Makes the backup.
    cd /var/backups/wekan/$version-$now
    printf "\nThe database backup is in progress.\n\n"
    $dump --port 27019

    # Makes the tar.gz file.
    cd ..
    printf "\nMakes the tar.gz file.\n"
    tar -zcvf $version-$now.tar.gz $version-$now

    # Cleanups
    rm -rf $version-$now

    # End.
    printf "\nBackup done.\n"
    echo "Backup is archived to .tar.gz file at /var/backups/wekan/${version}-${now}.tar.gz"
}

# Checks is the user is sudo/root
if [ "$UID" -ne "0" ]
then
    echo "This program must be launched with sudo/root."
    exit 1
fi

# Starts
makeDump

创建脚本后加执行权限。

执行备份输出的日志:

liuzh@liuzh:~/mongo$ sudo ./mongodump.sh 

The database backup is in progress.

2019-01-13T01:59:40.034+0000	writing wekan.meteor-migrations to 
2019-01-13T01:59:40.034+0000	writing wekan.activities to 
2019-01-13T01:59:40.035+0000	writing wekan.presences to 
2019-01-13T01:59:40.035+0000	writing wekan.lists to 
2019-01-13T01:59:40.036+0000	done dumping wekan.meteor-migrations (27 documents)
2019-01-13T01:59:40.037+0000	writing wekan.swimlanes to 
2019-01-13T01:59:40.037+0000	done dumping wekan.activities (11 documents)
2019-01-13T01:59:40.037+0000	writing wekan.accountSettings to 
2019-01-13T01:59:40.038+0000	done dumping wekan.presences (8 documents)
2019-01-13T01:59:40.039+0000	writing wekan.boards to 
2019-01-13T01:59:40.040+0000	done dumping wekan.swimlanes (2 documents)
2019-01-13T01:59:40.040+0000	writing wekan.announcements to 
2019-01-13T01:59:40.040+0000	done dumping wekan.accountSettings (2 documents)
2019-01-13T01:59:40.041+0000	writing wekan.settings to 
2019-01-13T01:59:40.041+0000	done dumping wekan.boards (2 documents)
2019-01-13T01:59:40.042+0000	writing wekan.users to 
2019-01-13T01:59:40.042+0000	done dumping wekan.settings (1 document)
2019-01-13T01:59:40.042+0000	writing wekan.card_comments to 
2019-01-13T01:59:40.042+0000	done dumping wekan.announcements (1 document)
2019-01-13T01:59:40.043+0000	writing wekan.meteor_accounts_loginServiceConfiguration to 
2019-01-13T01:59:40.043+0000	done dumping wekan.lists (7 documents)
2019-01-13T01:59:40.044+0000	writing wekan.checklistItems to 
2019-01-13T01:59:40.044+0000	done dumping wekan.card_comments (0 documents)
2019-01-13T01:59:40.045+0000	writing wekan.cards to 
2019-01-13T01:59:40.045+0000	done dumping wekan.checklistItems (0 documents)
2019-01-13T01:59:40.045+0000	writing wekan.checklists to 
2019-01-13T01:59:40.046+0000	done dumping wekan.meteor_accounts_loginServiceConfiguration (0 documents)
2019-01-13T01:59:40.046+0000	writing wekan.meteor_oauth_pendingCredentials to 
2019-01-13T01:59:40.046+0000	done dumping wekan.users (1 document)
2019-01-13T01:59:40.046+0000	writing wekan.invitation_codes to 
2019-01-13T01:59:40.047+0000	done dumping wekan.cards (0 documents)
2019-01-13T01:59:40.047+0000	writing wekan.unsaved-edits to 
2019-01-13T01:59:40.047+0000	done dumping wekan.checklists (0 documents)
2019-01-13T01:59:40.048+0000	done dumping wekan.unsaved-edits (0 documents)
2019-01-13T01:59:40.048+0000	done dumping wekan.meteor_oauth_pendingCredentials (0 documents)
2019-01-13T01:59:40.048+0000	done dumping wekan.invitation_codes (0 documents)

Makes the tar.gz file.
381-2019-01-13_01.59.39/
381-2019-01-13_01.59.39/dump/
381-2019-01-13_01.59.39/dump/wekan/
381-2019-01-13_01.59.39/dump/wekan/meteor_oauth_pendingCredentials.metadata.json
381-2019-01-13_01.59.39/dump/wekan/unsaved-edits.metadata.json
381-2019-01-13_01.59.39/dump/wekan/meteor-migrations.metadata.json
381-2019-01-13_01.59.39/dump/wekan/boards.metadata.json
381-2019-01-13_01.59.39/dump/wekan/card_comments.metadata.json
381-2019-01-13_01.59.39/dump/wekan/cards.metadata.json
381-2019-01-13_01.59.39/dump/wekan/activities.bson
381-2019-01-13_01.59.39/dump/wekan/announcements.metadata.json
381-2019-01-13_01.59.39/dump/wekan/users.bson
381-2019-01-13_01.59.39/dump/wekan/presences.metadata.json
381-2019-01-13_01.59.39/dump/wekan/lists.metadata.json
381-2019-01-13_01.59.39/dump/wekan/accountSettings.metadata.json
381-2019-01-13_01.59.39/dump/wekan/settings.bson
381-2019-01-13_01.59.39/dump/wekan/users.metadata.json
381-2019-01-13_01.59.39/dump/wekan/meteor_oauth_pendingCredentials.bson
381-2019-01-13_01.59.39/dump/wekan/unsaved-edits.bson
381-2019-01-13_01.59.39/dump/wekan/checklistItems.metadata.json
381-2019-01-13_01.59.39/dump/wekan/meteor_accounts_loginServiceConfiguration.metadata.json
381-2019-01-13_01.59.39/dump/wekan/accountSettings.bson
381-2019-01-13_01.59.39/dump/wekan/presences.bson
381-2019-01-13_01.59.39/dump/wekan/invitation_codes.bson
381-2019-01-13_01.59.39/dump/wekan/settings.metadata.json
381-2019-01-13_01.59.39/dump/wekan/meteor_accounts_loginServiceConfiguration.bson
381-2019-01-13_01.59.39/dump/wekan/invitation_codes.metadata.json
381-2019-01-13_01.59.39/dump/wekan/boards.bson
381-2019-01-13_01.59.39/dump/wekan/cards.bson
381-2019-01-13_01.59.39/dump/wekan/swimlanes.bson
381-2019-01-13_01.59.39/dump/wekan/lists.bson
381-2019-01-13_01.59.39/dump/wekan/checklists.metadata.json
381-2019-01-13_01.59.39/dump/wekan/meteor-migrations.bson
381-2019-01-13_01.59.39/dump/wekan/announcements.bson
381-2019-01-13_01.59.39/dump/wekan/checklistItems.bson
381-2019-01-13_01.59.39/dump/wekan/swimlanes.metadata.json
381-2019-01-13_01.59.39/dump/wekan/checklists.bson
381-2019-01-13_01.59.39/dump/wekan/activities.metadata.json
381-2019-01-13_01.59.39/dump/wekan/card_comments.bson

Backup done.
Backup is archived to .tar.gz file at /var/backups/wekan/381-2019-01-13_01.59.39.tar.gz

还原脚本 mongorestore.sh

#!/bin/bash

makesRestore()
{
    # Prepares the folder used for the backup.
    file=$1
    if [[ "$file" != *tar.gz* ]]
    then
        echo "The backup archive must be a tar.gz."
        exit -1
    fi

    # Goes into the parent directory.
    ext=$"$(basename $file)"
    parentDir=$"${file:0:${#file}-${#ext}}"
    cd $parentDir

    # Untar the archive.
    printf "\nMakes the untar of the archive.\n"
    tar -zxvf $file
    file="${file:0:${#file}-7}"
    
    # Gets the version of the snap.
    version=$(snap list | grep wekan | awk -F ' ' '{print $3}')

    # Targets the dump file.
    # 官方下面写的 restore=$"... 导致无法运行,这里去掉了$
    restore="/snap/wekan/$version/bin/mongorestore"

    # Restores.
    printf "\nThe database restore is in progress.\n\n"
    $restore -d wekan --port 27019 $file/dump/wekan
    printf "\nRestore done.\n"

    # Cleanups
    rm -rf $file
}

# Checks is the user is sudo/root.
if [ "$UID" -ne "0" ]
then
    echo "This program must be launched with sudo/root."
    exit 1
fi


# Start.
makesRestore $1

执行这个脚本的时候,需要提供一个参数,就是备份文件的路径:

liuzh@liuzh:~/mongo$ sudo ./mongorestore.sh /var/backups/wekan/381-2019-01-13_01.59.39.tar.gz

Makes the untar of the archive.
381-2019-01-13_01.59.39/
381-2019-01-13_01.59.39/dump/
381-2019-01-13_01.59.39/dump/wekan/
381-2019-01-13_01.59.39/dump/wekan/meteor_oauth_pendingCredentials.metadata.json
381-2019-01-13_01.59.39/dump/wekan/unsaved-edits.metadata.json
381-2019-01-13_01.59.39/dump/wekan/meteor-migrations.metadata.json
381-2019-01-13_01.59.39/dump/wekan/boards.metadata.json
381-2019-01-13_01.59.39/dump/wekan/card_comments.metadata.json
381-2019-01-13_01.59.39/dump/wekan/cards.metadata.json
381-2019-01-13_01.59.39/dump/wekan/activities.bson
381-2019-01-13_01.59.39/dump/wekan/announcements.metadata.json
381-2019-01-13_01.59.39/dump/wekan/users.bson
381-2019-01-13_01.59.39/dump/wekan/presences.metadata.json
381-2019-01-13_01.59.39/dump/wekan/lists.metadata.json
381-2019-01-13_01.59.39/dump/wekan/accountSettings.metadata.json
381-2019-01-13_01.59.39/dump/wekan/settings.bson
381-2019-01-13_01.59.39/dump/wekan/users.metadata.json
381-2019-01-13_01.59.39/dump/wekan/meteor_oauth_pendingCredentials.bson
381-2019-01-13_01.59.39/dump/wekan/unsaved-edits.bson
381-2019-01-13_01.59.39/dump/wekan/checklistItems.metadata.json
381-2019-01-13_01.59.39/dump/wekan/meteor_accounts_loginServiceConfiguration.metadata.json
381-2019-01-13_01.59.39/dump/wekan/accountSettings.bson
381-2019-01-13_01.59.39/dump/wekan/presences.bson
381-2019-01-13_01.59.39/dump/wekan/invitation_codes.bson
381-2019-01-13_01.59.39/dump/wekan/settings.metadata.json
381-2019-01-13_01.59.39/dump/wekan/meteor_accounts_loginServiceConfiguration.bson
381-2019-01-13_01.59.39/dump/wekan/invitation_codes.metadata.json
381-2019-01-13_01.59.39/dump/wekan/boards.bson
381-2019-01-13_01.59.39/dump/wekan/cards.bson
381-2019-01-13_01.59.39/dump/wekan/swimlanes.bson
381-2019-01-13_01.59.39/dump/wekan/lists.bson
381-2019-01-13_01.59.39/dump/wekan/checklists.metadata.json
381-2019-01-13_01.59.39/dump/wekan/meteor-migrations.bson
381-2019-01-13_01.59.39/dump/wekan/announcements.bson
381-2019-01-13_01.59.39/dump/wekan/checklistItems.bson
381-2019-01-13_01.59.39/dump/wekan/swimlanes.metadata.json
381-2019-01-13_01.59.39/dump/wekan/checklists.bson
381-2019-01-13_01.59.39/dump/wekan/activities.metadata.json
381-2019-01-13_01.59.39/dump/wekan/card_comments.bson

The database restore is in progress.

2019-01-13T02:00:18.060+0000	building a list of collections to restore from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan dir
2019-01-13T02:00:18.063+0000	reading metadata for wekan.activities from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/activities.metadata.json
2019-01-13T02:00:18.063+0000	restoring wekan.activities from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/activities.bson
2019-01-13T02:00:18.064+0000	reading metadata for wekan.meteor-migrations from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/meteor-migrations.metadata.json
2019-01-13T02:00:18.064+0000	reading metadata for wekan.presences from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/presences.metadata.json
2019-01-13T02:00:18.065+0000	restoring wekan.presences from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/presences.bson
2019-01-13T02:00:18.066+0000	reading metadata for wekan.boards from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/boards.metadata.json
2019-01-13T02:00:18.068+0000	restoring wekan.meteor-migrations from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/meteor-migrations.bson
2019-01-13T02:00:18.069+0000	restoring wekan.boards from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/boards.bson
2019-01-13T02:00:18.070+0000	error: multiple errors in bulk operation:
  - E11000 duplicate key error collection: wekan.activities index: _id_ dup key: { : "dEzSdZyy5zKSq5eXS" }
  - E11000 duplicate key error collection: wekan.activities index: _id_ dup key: { : "E3TGZFhwfrSypdoEh" }
  - E11000 duplicate key error collection: wekan.activities index: _id_ dup key: { : "dCosFe4D2EaBAH37K" }
  - E11000 duplicate key error collection: wekan.activities index: _id_ dup key: { : "sSPPGNuxR2kwFMGkK" }
  - E11000 duplicate key error collection: wekan.activities index: _id_ dup key: { : "HKaH6uPF2pJvPiekq" }
  - E11000 duplicate key error collection: wekan.activities index: _id_ dup key: { : "cn8ihiwKANHCeteB2" }
  - E11000 duplicate key error collection: wekan.activities index: _id_ dup key: { : "5tjQ4zPccfjNxZ8ay" }
  - E11000 duplicate key error collection: wekan.activities index: _id_ dup key: { : "KKsgxGWsMmDtTEjYT" }
  - E11000 duplicate key error collection: wekan.activities index: _id_ dup key: { : "KXSusvoFnmAcvw9YX" }
  - E11000 duplicate key error collection: wekan.activities index: _id_ dup key: { : "q4oBQnZMqe2RXE5Lt" }
  - E11000 duplicate key error collection: wekan.activities index: _id_ dup key: { : "i3qCmn2Nfn774Mfj6" }

2019-01-13T02:00:18.073+0000	restoring indexes for collection wekan.activities from metadata
2019-01-13T02:00:18.073+0000	error: multiple errors in bulk operation:
  - E11000 duplicate key error collection: wekan.presences index: _id_ dup key: { : "jfmAbmnQrPj7dkFnT" }
  - E11000 duplicate key error collection: wekan.presences index: _id_ dup key: { : "umhZMdxjEqN9HosWj" }
  - E11000 duplicate key error collection: wekan.presences index: _id_ dup key: { : "arWJiyAYZHy3K9Nxe" }
  - E11000 duplicate key error collection: wekan.presences index: _id_ dup key: { : "a5HEoG8w4AxLJ89xv" }
  - E11000 duplicate key error collection: wekan.presences index: _id_ dup key: { : "B7fYLj5k9tmKZSkEi" }
  - E11000 duplicate key error collection: wekan.presences index: _id_ dup key: { : "QhKyTjzCujZZdN9r7" }
  - E11000 duplicate key error collection: wekan.presences index: _id_ dup key: { : "zrsm9YpjLfu9nR4qj" }
  - E11000 duplicate key error collection: wekan.presences index: _id_ dup key: { : "oCRPqHBFPTWk6M4fZ" }

2019-01-13T02:00:18.075+0000	restoring indexes for collection wekan.presences from metadata
2019-01-13T02:00:18.076+0000	finished restoring wekan.presences (8 documents)
2019-01-13T02:00:18.076+0000	reading metadata for wekan.lists from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/lists.metadata.json
2019-01-13T02:00:18.076+0000	restoring wekan.lists from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/lists.bson
2019-01-13T02:00:18.077+0000	error: E11000 duplicate key error collection: wekan.boards index: _id_ dup key: { : "pN3u3CwAHprMmK7bn" }
2019-01-13T02:00:18.081+0000	restoring indexes for collection wekan.boards from metadata
2019-01-13T02:00:18.081+0000	finished restoring wekan.activities (11 documents)
2019-01-13T02:00:18.082+0000	reading metadata for wekan.users from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/users.metadata.json
2019-01-13T02:00:18.084+0000	finished restoring wekan.boards (2 documents)
2019-01-13T02:00:18.084+0000	reading metadata for wekan.swimlanes from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/swimlanes.metadata.json
2019-01-13T02:00:18.084+0000	restoring wekan.users from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/users.bson
2019-01-13T02:00:18.085+0000	restoring wekan.swimlanes from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/swimlanes.bson
2019-01-13T02:00:18.163+0000	error: multiple errors in bulk operation:
  - E11000 duplicate key error collection: wekan.lists index: _id_ dup key: { : "koin6kWCYzEfgrGrw" }
  - E11000 duplicate key error collection: wekan.lists index: _id_ dup key: { : "w6fNdtNCxBfJCMwXm" }
  - E11000 duplicate key error collection: wekan.lists index: _id_ dup key: { : "vZDKydEKuess5jj6X" }
  - E11000 duplicate key error collection: wekan.lists index: _id_ dup key: { : "YYsK7HxsNYxkYx8ja" }
  - E11000 duplicate key error collection: wekan.lists index: _id_ dup key: { : "izwCbsswZCrQh3h5E" }
  - E11000 duplicate key error collection: wekan.lists index: _id_ dup key: { : "N2Gg9hacbaFKfHr8F" }
  - E11000 duplicate key error collection: wekan.lists index: _id_ dup key: { : "uJKQem7fCkw9ax6dq" }

2019-01-13T02:00:18.163+0000	restoring indexes for collection wekan.lists from metadata
2019-01-13T02:00:18.164+0000	error: multiple errors in bulk operation:
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "kJ8MFwPkpPRhAkDvN" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "3AkJAy6a7d6w2rYJn" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "Bv3i2uneKu8MehCpR" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "h3zT3mdwuibn5NCjg" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "Tny7QSD8aeugZYqTn" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "p6Sd749FYwRKbovRg" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "MqpwTt93spsukcghQ" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "Bcv3hYYJBRoD8dnQZ" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "ftqMsDwyszdQfZjAY" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "GNmsuoKztz8btbxSP" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "fMwwwnjBinPbYyezk" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "TWj4jN8wRL5e9WPZM" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "mEDmyi57S28rZWjYx" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "k4fh3Cc6QTEX6TNco" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "4z3aiRqHh8QArF4ne" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "ragMDEPzKKhpRQDXw" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "XTHDJ6wAB7wAPwpFb" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "GH2pGLBqKRkyxXpsA" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "jdHCGJ24njW74786h" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "nTzxmhwduhZHx539f" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "acQYbQus6a7JGfu33" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "CqHKAfN3fgwDXFifD" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "L6m3hhFwrZTsPdm3h" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "pdcqPAcjYv9AnHSTA" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "8aArFSXN7zJn9dbe5" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "a3RDJeRiska69okmv" }
  - E11000 duplicate key error collection: wekan.meteor-migrations index: _id_ dup key: { : "7NPkHwKJvzTZtGyKA" }

2019-01-13T02:00:18.164+0000	restoring indexes for collection wekan.meteor-migrations from metadata
2019-01-13T02:00:18.170+0000	finished restoring wekan.lists (7 documents)
2019-01-13T02:00:18.170+0000	reading metadata for wekan.settings from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/settings.metadata.json
2019-01-13T02:00:18.170+0000	restoring wekan.settings from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/settings.bson
2019-01-13T02:00:18.184+0000	error: E11000 duplicate key error collection: wekan.users index: _id_ dup key: { : "jLRat37oF72u9LsTA" }
2019-01-13T02:00:18.185+0000	restoring indexes for collection wekan.users from metadata
2019-01-13T02:00:18.185+0000	finished restoring wekan.meteor-migrations (27 documents)
2019-01-13T02:00:18.185+0000	reading metadata for wekan.accountSettings from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/accountSettings.metadata.json
2019-01-13T02:00:18.185+0000	restoring wekan.accountSettings from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/accountSettings.bson
2019-01-13T02:00:18.187+0000	error: E11000 duplicate key error collection: wekan.settings index: _id_ dup key: { : "psWJ96GC76K6nrja4" }
2019-01-13T02:00:18.187+0000	restoring indexes for collection wekan.settings from metadata
2019-01-13T02:00:18.187+0000	finished restoring wekan.settings (1 document)
2019-01-13T02:00:18.187+0000	reading metadata for wekan.announcements from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/announcements.metadata.json
2019-01-13T02:00:18.187+0000	restoring wekan.announcements from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/announcements.bson
2019-01-13T02:00:18.595+0000	finished restoring wekan.users (1 document)
2019-01-13T02:00:18.598+0000	reading metadata for wekan.checklistItems from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/checklistItems.metadata.json
2019-01-13T02:00:18.600+0000	restoring wekan.checklistItems from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/checklistItems.bson
2019-01-13T02:00:18.606+0000	error: multiple errors in bulk operation:
  - E11000 duplicate key error collection: wekan.swimlanes index: _id_ dup key: { : "96aTCQM2hbSs4A7s6" }
  - E11000 duplicate key error collection: wekan.swimlanes index: _id_ dup key: { : "53AkraNrecsgNT8D6" }

2019-01-13T02:00:18.608+0000	error: E11000 duplicate key error collection: wekan.announcements index: _id_ dup key: { : "WqfhQAx6Dw8fsHFxr" }
2019-01-13T02:00:18.609+0000	error: multiple errors in bulk operation:
  - E11000 duplicate key error collection: wekan.accountSettings index: _id_ dup key: { : "accounts-allowEmailChange" }
  - E11000 duplicate key error collection: wekan.accountSettings index: _id_ dup key: { : "accounts-allowUserNameChange" }

2019-01-13T02:00:18.610+0000	restoring indexes for collection wekan.swimlanes from metadata
2019-01-13T02:00:18.611+0000	restoring indexes for collection wekan.checklistItems from metadata
2019-01-13T02:00:18.611+0000	restoring indexes for collection wekan.announcements from metadata
2019-01-13T02:00:18.612+0000	restoring indexes for collection wekan.accountSettings from metadata
2019-01-13T02:00:18.612+0000	finished restoring wekan.checklistItems (0 documents)
2019-01-13T02:00:18.612+0000	reading metadata for wekan.card_comments from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/card_comments.metadata.json
2019-01-13T02:00:18.612+0000	restoring wekan.card_comments from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/card_comments.bson
2019-01-13T02:00:18.615+0000	finished restoring wekan.swimlanes (2 documents)
2019-01-13T02:00:18.616+0000	reading metadata for wekan.meteor_oauth_pendingCredentials from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/meteor_oauth_pendingCredentials.metadata.json
2019-01-13T02:00:18.617+0000	restoring wekan.meteor_oauth_pendingCredentials from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/meteor_oauth_pendingCredentials.bson
2019-01-13T02:00:19.069+0000	restoring indexes for collection wekan.card_comments from metadata
2019-01-13T02:00:19.069+0000	finished restoring wekan.announcements (1 document)
2019-01-13T02:00:19.069+0000	reading metadata for wekan.checklists from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/checklists.metadata.json
2019-01-13T02:00:19.070+0000	restoring wekan.checklists from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/checklists.bson
2019-01-13T02:00:19.077+0000	finished restoring wekan.card_comments (0 documents)
2019-01-13T02:00:19.077+0000	reading metadata for wekan.invitation_codes from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/invitation_codes.metadata.json
2019-01-13T02:00:19.078+0000	restoring wekan.invitation_codes from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/invitation_codes.bson
2019-01-13T02:00:19.078+0000	restoring indexes for collection wekan.meteor_oauth_pendingCredentials from metadata
2019-01-13T02:00:19.079+0000	finished restoring wekan.meteor_oauth_pendingCredentials (0 documents)
2019-01-13T02:00:19.079+0000	reading metadata for wekan.cards from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/cards.metadata.json
2019-01-13T02:00:19.079+0000	restoring wekan.cards from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/cards.bson
2019-01-13T02:00:19.080+0000	finished restoring wekan.accountSettings (2 documents)
2019-01-13T02:00:19.081+0000	reading metadata for wekan.unsaved-edits from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/unsaved-edits.metadata.json
2019-01-13T02:00:19.081+0000	restoring wekan.unsaved-edits from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/unsaved-edits.bson
2019-01-13T02:00:19.429+0000	restoring indexes for collection wekan.checklists from metadata
2019-01-13T02:00:19.455+0000	finished restoring wekan.checklists (0 documents)
2019-01-13T02:00:19.458+0000	reading metadata for wekan.meteor_accounts_loginServiceConfiguration from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/meteor_accounts_loginServiceConfiguration.metadata.json
2019-01-13T02:00:19.458+0000	restoring wekan.meteor_accounts_loginServiceConfiguration from /var/backups/wekan/381-2019-01-13_01.59.39/dump/wekan/meteor_accounts_loginServiceConfiguration.bson
2019-01-13T02:00:19.458+0000	restoring indexes for collection wekan.cards from metadata
2019-01-13T02:00:19.459+0000	restoring indexes for collection wekan.unsaved-edits from metadata
2019-01-13T02:00:19.460+0000	restoring indexes for collection wekan.meteor_accounts_loginServiceConfiguration from metadata
2019-01-13T02:00:19.461+0000	restoring indexes for collection wekan.invitation_codes from metadata
2019-01-13T02:00:19.462+0000	finished restoring wekan.unsaved-edits (0 documents)
2019-01-13T02:00:19.462+0000	finished restoring wekan.cards (0 documents)
2019-01-13T02:00:19.462+0000	finished restoring wekan.meteor_accounts_loginServiceConfiguration (0 documents)
2019-01-13T02:00:19.462+0000	finished restoring wekan.invitation_codes (0 documents)
2019-01-13T02:00:19.462+0000	done

Restore done.

基于 snap 的定制开发

liuzh@liuzh:~/mongo$ snap find wekan
Name         Version          Publisher  Notes  Summary
wekan-ondra  1.49-2-gbfabd63  ondra      -      The open-source Trello-like kanban
wekan-liuzh  2.01-1-g59b8b97  liuzh      -      The open-source kanban
wekan        2.01             xet7       -      Open-Source kanban

clone https://github.com/wekan/wekan,注册 https://snapcraft.io

注册名的BUG解决办法:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PWA实战

PWA实战

[美]Dean Alan Hume / 郑丰彧 / 电子工业出版社 / 2018-6 / 69

Progressive Web App(PWA)是由谷歌提出的一整套技术解决方案,它致力于为 Web 提供出色的用户体验,并完美体现了渐进增强原则。作为为数不多的实战入门用书,《PWA 实战:面向下一代的Progressive Web App》旨在通过大量清晰示例来介绍 PWA 的主要特性。全书一共由五个部分组成:第一部分介绍 PWA 的概念及解锁 PWA 应用的关键—Service Worker......一起来看看 《PWA实战》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具