wekan,作为一个GitHub star 达到16k+ 的看板工具,个人感觉是非常的好用的,兴趣来潮,推广到了整个客户端团队,然后是部署的事情了。目前实现过的部署方案有两种,基于 docker 的自动部署和手动部署,本篇文章主要介绍手动部署
export="/home/admin/mongodb/bin:$PATH"
source ~/.bashrc
mongo --version
查看当前数据库版本,检测安装是否成功方案一:
systemLog:
# verbosity: 0 #日志等级,0-5,默认0
# quiet: false #限制日志输出,
# traceAllExceptions: true #详细错误日志
# syslogFacility: user #记录到操作系统的日志级别,指定的值必须是操作系统支持的,并且要以--syslog启动
path: /usr/local/mongodb/logs/log.txt #日志路径。
logAppend: false #启动时,日志追加在已有日志文件内还是备份旧日志后,创建新文件记录日志, 默认false
logRotate: rename #rename/reopen。rename,重命名旧日志文件,创建新文件记录;reopen,重新打开旧日志记录,需logAppend为true
destination: file #日志输出方式。file/syslog,如果是file,需指定path,默认是输出到标准输出流中
timeStampFormat: iso8601-local #日志日期格式。ctime/iso8601-utc/iso8601-local, 默认iso8601-local
# component: #各组件的日志级别
# accessControl:
# verbosity:
# command:
# verbosity:
processManagement:
fork: true #以守护进程运行 默认false
# pidFilePath: #PID 文件位置
net:
port: 27017 #监听端口,默认27017
bindIp: 127.0.0.1 #绑定监听的ip,deb和rpm包里有默认的配置文件(/etc/mongod.conf)里面默认配置为127.0.0.1,若不限制IP,务必确保认证安全,多个Ip用逗号分隔
maxIncomingConnections: 65536 #最大连接数,可接受的连接数还受限于操作系统配置的最大连接数
wireObjectCheck: true #校验客户端的请求,防止错误的或无效BSON插入,多层文档嵌套的对象会有轻微性能影响,默认true
ipv6: false #是否启用ipv6,3.0以上版本始终开启
unixDomainSocket: #unix socket监听,仅适用于基于unix的系统
enabled: false #默认true
pathPrefix: /tmp #路径前缀,默认/temp
filePermissions: 0700 #文件权限 默认0700
# ssl: #估计用不到,所以没有自己看
# sslOnNormalPorts: # deprecated since 2.6
# mode:
# PEMKeyFile:
# PEMKeyPassword:
# clusterFile:
# clusterPassword:
# CAFile:
# CRLFile:
# allowConnectionsWithoutCertificates:
# allowInvalidCertificates:
# allowInvalidHostnames:
# disabledProtocols:
# FIPSMode:
security:
authorization: enabled # enabled/disabled #开启客户端认证
javascriptEnabled: false #启用或禁用服务器端JavaScript执行
# keyFile: #密钥路径
# clusterAuthMode: #集群认证方式
# enableEncryption:
# encryptionCipherMode:
# encryptionKeyFile:
# kmip:
# keyIdentifier:
# rotateMasterKey:
# serverName:
# port:
# clientCertificateFile:
# clientCertificatePassword:
# serverCAFile:
# sasl:
# hostName:
# serviceName:
# saslauthdSocketPath:
# setParameter: #设置参数
# :
# :
storage:
dbPath: /usr/local/mongodb/db #数据库,默认/data/db,如果使用软件包管理安装的查看/etc/mongod.conf
indexBuildRetry: true #重启时,重建不完整的索引
# repairPath: #--repair操作时的临时工作目录,默认为dbPath下的一个_tmp_repairDatabase_的目录
journal:
enabled: true #启动journal,64位系统默认开启,32位默认关闭
# commitIntervalMs: #journal操作的最大时间间隔,默认100或30
directoryPerDB: false #使用单独的目录来存储每个数据库的数据,默认false,如果需要更改,要备份数据,删除掉dbPath下的文件,重建后导入数据
# syncPeriodSecs: 60 #使用fsync来将数据写入磁盘的延迟时间量,建议使用默认值
engine: wiredTiger #存储引擎,mmapv1/wiredTiger/inMemory 默认wiredTiger
# mmapv1:
# preallocDataFiles:
# nsSize:
# quota:
# enforced:
# maxFilesPerDB:
# smallFiles:
# journal:
# debugFlags:
# commitIntervalMs:
# wiredTiger:
# engineConfig:
# cacheSizeGB: #缓存大小
# journalCompressor: #数据压缩格式 none/snappy/zlib
# directoryForIndexes: #将索引和集合存储在单独的子目录下,默认false
# collectionConfig:
# blockCompressor: #集合数据压缩格式
# indexConfig:
# prefixCompression: #启用索引的前缀压缩
# inMemory:
# engineConfig:
# inMemorySizeGB:
operationProfiling: #性能分析
slowOpThresholdMs: 100 #认定为查询速度缓慢的时间阈值,超过该时间的查询即为缓慢查询,会被记录到日志中, 默认100
mode: off #operationProfiling模式 off/slowOp/all 默认off
# replication: #复制集相关
# oplogSizeMB:
# replSetName:
# secondaryIndexPrefetch:
# enableMajorityReadConcern:
# sharding: #集群分片相关
# clusterRole:
# archiveMovedChunks:
# auditLog:
# destination:
# format:
# path:
# filter:
# snmp:
# subagent: #当设置为true,SNMP作为代理运行
# master: #当设置为true,SNMP作为主服务器运行
# basisTech:
# rootDirectory:
方案二:
dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/logs/log.txt
port=27017
fork=true
bind_ip=127.0.0.1
/usr/local/mongodb
为MongoDB的安装路径;systemLog
的 logs
路径要提前生成;storage
的 db
路径要提前生成;mongod -f mongodb.conf
输出下面内容即为配置成功:
about to fork child process, waiting until server is ready for connections.
forked process: 19288
child process started successfully, parent exiting
也有可能会报下面的错误
Error parsing YAML config file: yaml-cpp: error at line 13, column 4: end of map not found
这是因为mongodb.conf中的内容的格式导致的,我用了一个比较笨的办法,把内容复制,然后打开Word,选择“只黏贴文本”,这样就避免了格式问题,也在sublime中试过,但效果不佳。
验证:在终端执行 mongo
部分MongoDB常用命令:
sudo mongod --config mongodb.conf # 启动数据库
./mongo 127.0.0.1:27017 # 打开数据库
sudo mongod --shutdown -f mongodb.conf # 关闭数据库
为了便于node.js的版本管理,推荐使用nvm(Node Version Manage)进行安装,基于nvm可以很好的管理node版本(安装多版本、设置当前使用版本,等等),具体安装方法如下所示:
yum install git # 安装git
git --version # 查看当前 git 版本,我目前是1.8.3.1
安装nvm(Node.js版本管理工具,和rvm性质一样)
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
执行下面命令,查看nvm版本,验证是否安装成功:
node -v
安装Node.js:
nvm list-remote # 查看可安装的版本
nvm install v14.4.0 # 安装指定版本的Node.js,目前最新版是14.4.0
nvm use v14.4.0 # 指定v14.4.0为当前使用版本
下载 wekan
经过踩坑之后,推荐去这个地址下载,比如我用的4.12版本:https://releases.wekan.team/wekan-4.12.zip
wget https://releases.wekan.team/wekan-4.12.zip
解压
unzip wekan-4.11.zip # 如果没装unzip,安装一下就可以了,很简单
个人洁癖,重命名了一下:
mv bundle wekan
安装依赖
上面解压完成后,在bundle(或wekan)下面,有一个 programs 文件夹,programs 下有一个 server 文件夹,进入到server:
cd bundle/programs/server # 进入到对应路径下
npm install # 安装依赖
安装依赖的过程中,可能报错,very interesting 的那种,比如我遇见的:
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! ~/.npm/_logs/2020-06-09T04_44_38_961Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! meteor-dev-bundle@ install: `node npm-rebuild.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the meteor-dev-bundle@ install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! ~/.npm/_logs/2020-06-09T04_44_38_989Z-debug.log
解决方案:
npm install -g node-pre-gyp
npm install bcrypt
npm rebuild
成功执行完上面三条命令之后,就好了,即可代表 npm install
执行完成。
export MONGO_URL='mongodb://127.0.0.1:27017/wekan' # 绑定MongoDB
export ROOT_URL='http://127.0.0.1:9002' # 指定访问路径
export PORT=9002 # 指定访问端口
node main.js # 开始
执行完成之后,浏览器打开 http://127.0.0.1:9002
,就可以使用wekan了