当前位置: 首页 > 工具软件 > Wekan > 使用案例 >

centOS 手动部署 wekan

公孙和怡
2023-12-01

wekan,作为一个GitHub star 达到16k+ 的看板工具,个人感觉是非常的好用的,兴趣来潮,推广到了整个客户端团队,然后是部署的事情了。目前实现过的部署方案有两种,基于 docker 的自动部署和手动部署,本篇文章主要介绍手动部署

一、下载安装MongoDB

  1. 点击进入MongoDB的下载页面,选择 Linux 版本,下载最新稳定版本MongoDB;
  2. 解压,修改文件名为mongodb,移动至/urs/local目录下;
  3. cd到根目录,vim .bashrc,输入:
    export PATH ="/usr/local/mongodb/bin:$PATH"
    保存后,执行:
    source ~/.bashrc
  4. 终端输入 mongo --version 查看当前数据库版本,检测安装是否成功
  5. 配置 mongodb.conf,目前切实使用过的,两种方式,一种复杂但全面,一种简单但相对简陋(够用)

方案一:

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: <int>
   #    command:
   #       verbosity: <int>
processManagement:
   fork: true #以守护进程运行 默认false
   # pidFilePath: <string> #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: <boolean>  # deprecated since 2.6
   #    mode: <string>
   #    PEMKeyFile: <string>
   #    PEMKeyPassword: <string>
   #    clusterFile: <string>
   #    clusterPassword: <string>
   #    CAFile: <string>
   #    CRLFile: <string>
   #    allowConnectionsWithoutCertificates: <boolean>
   #    allowInvalidCertificates: <boolean>
   #    allowInvalidHostnames: <boolean>
   #    disabledProtocols: <string>
   #    FIPSMode: <boolean>

security:
   authorization: enabled # enabled/disabled #开启客户端认证
   javascriptEnabled:  false #启用或禁用服务器端JavaScript执行
   # keyFile: <string> #密钥路径
   # clusterAuthMode: <string> #集群认证方式
   # enableEncryption: <boolean>
   # encryptionCipherMode: <string>
   # encryptionKeyFile: <string>
   # kmip:
   #    keyIdentifier: <string>
   #    rotateMasterKey: <boolean>
   #    serverName: <string>
   #    port: <string>
   #    clientCertificateFile: <string>
   #    clientCertificatePassword: <string>
   #    serverCAFile: <string>
   # sasl:
   #    hostName: <string>
   #    serviceName: <string>
   #    saslauthdSocketPath: <string>
   

# setParameter: #设置参数
#    <parameter1>: <value1>
#    <parameter2>: <value2>

storage:
   dbPath: /usr/local/mongodb/db #数据库,默认/data/db,如果使用软件包管理安装的查看/etc/mongod.conf
   indexBuildRetry: true #重启时,重建不完整的索引
   # repairPath: <string>  #--repair操作时的临时工作目录,默认为dbPath下的一个_tmp_repairDatabase_<num>的目录
   journal: 
      enabled: true #启动journal,64位系统默认开启,32位默认关闭
      # commitIntervalMs: <num> #journal操作的最大时间间隔,默认100或30
   directoryPerDB: false #使用单独的目录来存储每个数据库的数据,默认false,如果需要更改,要备份数据,删除掉dbPath下的文件,重建后导入数据
   # syncPeriodSecs: 60 #使用fsync来将数据写入磁盘的延迟时间量,建议使用默认值
   engine: wiredTiger #存储引擎,mmapv1/wiredTiger/inMemory 默认wiredTiger
   # mmapv1:
   #    preallocDataFiles: <boolean>
   #    nsSize: <int>
   #    quota:
   #       enforced: <boolean>
   #       maxFilesPerDB: <int>
   #    smallFiles: <boolean>
   #    journal:
   #       debugFlags: <int>
   #       commitIntervalMs: <num>
   # wiredTiger:
   #    engineConfig:
   #       cacheSizeGB: <number>  #缓存大小
   #       journalCompressor: <string> #数据压缩格式 none/snappy/zlib
   #       directoryForIndexes: <boolean> #将索引和集合存储在单独的子目录下,默认false
   #    collectionConfig:
   #       blockCompressor: <string> #集合数据压缩格式 
   #    indexConfig:
   #       prefixCompression: <boolean> #启用索引的前缀压缩
   # inMemory:
   #    engineConfig:
   #       inMemorySizeGB: <number>
 
operationProfiling: #性能分析
   slowOpThresholdMs: 100 #认定为查询速度缓慢的时间阈值,超过该时间的查询即为缓慢查询,会被记录到日志中, 默认100
   mode: off #operationProfiling模式 off/slowOp/all 默认off

# replication: #复制集相关
#    oplogSizeMB: <int>
#    replSetName: <string>
#    secondaryIndexPrefetch: <string>
#    enableMajorityReadConcern: <boolean>
# sharding: #集群分片相关
#    clusterRole: <string>
#    archiveMovedChunks: <boolean>

# auditLog:
#    destination: <string>
#    format: <string>
#    path: <string>
#    filter: <string>

# snmp:
#    subagent: <boolean> #当设置为true,SNMP作为代理运行
#    master: <boolean> #当设置为true,SNMP作为主服务器运行

# basisTech:
#    rootDirectory: <string>


方案二:

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的安装路径;
  • systemLoglogs 路径要提前生成;
  • storagedb 路径要提前生成;
    配置完成后,执行:
    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

为了便于node.js的版本管理,推荐使用nvm(Node Version Manage)进行安装,基于nvm可以很好的管理node版本(安装多版本、设置当前使用版本,等等),具体安装方法如下所示:

  1. 安装git(版本管理工具)
yum install git # 安装git
git --version # 查看当前 git 版本,我目前是1.8.3.1
  1. 安装nvm(Node.js版本管理工具,和rvm性质一样)
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
    执行下面命令,查看nvm版本,验证是否安装成功:
    node -v

  2. 安装Node.js:

nvm list-remote # 查看可安装的版本
nvm install v14.4.0 # 安装指定版本的Node.js,目前最新版是14.4.0
nvm use v14.4.0 # 指定v14.4.0为当前使用版本

三、安装wekan

  1. 下载 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

  2. 安装依赖
    上面解压完成后,在bundle(或wekan)下面,有一个 programs 文件夹,programs 下有一个 server 文件夹,进入到server:

cd bundle/programs/server # 进入到对应路径下
npm install # 安装依赖

安装依赖的过程中,可能报错,very interesting 的那种,比如我遇见的:

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! bcrypt@3.0.8 install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the bcrypt@3.0.8 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 执行完成。

  1. 运行
    终端路径返回到 bundle(wekan)目录下,执行下面命令
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了

 类似资料: