开源看板系统WeKan安装教程

简介

最近由于项目管理需要,找了一些开源相关的软件,有几款大体看下了,从页面、功能都还不错,比如

  • Taiga
    Scrum
    Kanban
    Epics Multiproject
  • orangescrum
    orangescrum
  • jitamin
    jitamin
  • openproject
    openproject
  • wekan
    wekan

经过一些简单对比之后,包括需求、流行度、安装难易程度等,暂时选用了wekan来试一把

安装过程

环境

  • Linux机器一台
  • root权限

安装步骤

  • 创建wekan用户
  • 安装Nodejs(或者nvm)
  • 安装MongoDB
  • 安装Wekan
  • 设置为系统服务(可选)
  • 安装Nginx作为反向代理(可选)

创建wekan用户

useradd -m -d /opt/wekan wekan
passwd wekan
su wekan

Step1. 安装Nodejs

下载Nodejs

wget https://nodejs.org/dist/v10.16.1/node-v10.16.1-linux-x64.tar.xz

解压

xz -d node-v10.16.1-linux-x64.tar.xz
tar xvf node-v10.16.1-linux-x64.tar

解压成功如下
total 164
drwx------ 2 wekan wekan  4096 Aug  1 01:59 bin
-rw------- 1 wekan wekan 51895 Aug  1 01:59 CHANGELOG.md
drwx------ 3 wekan wekan  4096 Aug  1 01:59 include
drwx------ 3 wekan wekan  4096 Aug  1 01:59 lib
-rw------- 1 wekan wekan 68764 Aug  1 01:59 LICENSE
-rw------- 1 wekan wekan 26840 Aug  1 01:59 README.md
drwx------ 5 wekan wekan  4096 Aug  1 01:59 share

配置环境变量

打开~/.bashrc,增加如下一行
export PATH=/path_to_node/bin:$PATH
中间path_to_node替换为对应的nodejs的正确路径,然后使配置生效,source ~/.bashrc,执行node -v

[wekan@host-*** ***]$ node -v
v10.16.1

Step2.安装MongoDB

参考官方教程网络教程,有简单的一键安装和自定义的安装,下面的教程是较为繁琐和灵活的自定义的安装

下载

这里选择

下载页面

这边下载的是wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.11.tgz

解压配置

tar zxvf mongodb-linux-x86_64-4.0.11.tgz
~/.bashrc里面配置环境变量,步骤和node安装里面的类似,打开~/.bashrc,增加如下一行
export PATH=/path_to_mongodb/bin:$PATH
path_to_mongodb替换为你的mongodb的路径并使配置生效source ~/.bashrc

配置

一般mongodb可以在命令行里面直接带上配置参数,例如
mongod --dbpath=data/db --logpath=log/log.txt --fork
但是这样显得命令特别繁琐,一般都会使用配置文件,参考配置文件如下

systemLog:
   # verbosity: 0  #日志等级,0-5,默认0
   # quiet: false  #限制日志输出,
   # traceAllExceptions: true  #详细错误日志
   # syslogFacility: user #记录到操作系统的日志级别,指定的值必须是操作系统支持的,并且要以--syslog启动
   path: /path_to_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: disabled# enabled/disabled #开启客户端认证
   javascriptEnabled:  true #启用或禁用服务器端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: /path_to_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>

官方详细说明如下
https://docs.mongodb.com/manual/reference/configuration-options/
:其中systemLog下面的path和storage下面的dbPath需要提前创建,另外这里为了省事,鉴权的配置关闭,生产环境注意要开启,开启后配置这里不详细说明了

security:
   authorization: disabled# enabled/disabled #开启客户端认证

启动

前往配置文件所在的路径,执行mongod -f mongod.conf,其中mongod.conf为配置文件

[wekan@host-***mongodb-linux-x86_64-4.0.11]$ mongod -f mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 29376
child process started successfully, parent exiting

启动成功

验证

执行mongo

[wekan-*** mongodb-linux-x86_64-4.0.11]$ mongo
MongoDB shell version v4.0.11
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("98e3d5df-e0a5-4204-8611-4e685fb048b4") }
MongoDB server version: 4.0.11
Server has startup warnings:
2019-08-03T15:39:05.520+0800 I STORAGE  [initandlisten]
2019-08-03T15:39:05.520+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2019-08-03T15:39:05.520+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten]
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten] **          We suggest launching mongod like this to avoid performance problems:
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten] **              numactl --interleave=all mongod [other options]
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten]
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten]
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten]
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 4096 processes, 1000000 files. Number of processes should be at least 500000 : 0.5 times number of files.
2019-08-03T15:39:06.642+0800 I CONTROL  [initandlisten]
> show dbs;
admin   0.000GB
config  0.000GB
local   0.000GB

一些warning先不管了

安装Wekan

同样的,我们使用安装包手动安装

下载

找到两个链接,一个是https://github.com/wekan/wekan/releases,如下

release

和这个https://releases.wekan.team/

release

我下载的是下面这个。

解压

total 102164
drwxr-xr-x 4 wekan users      4096 Aug  6 15:24 bundle
-rw------- 1 wekan users 104502193 Aug  6 14:50 wekan-latest.zip

进入bundle

total 324
-r--r--r-- 1 wekan users      8 Jul 26 16:08 .node_version.txt
-r--r--r-- 1 wekan users    534 Jul 26 16:08 README
-rw-r--r-- 1 wekan users 295270 Aug  6 16:44 log.txt
-r--r--r-- 1 wekan users    151 Jul 26 16:08 main.js
drwxr-xr-x 5 wekan users   4096 Jul 26 16:08 programs
drwxr-xr-x 2 wekan users   4096 Jul 26 16:08 server
-r--r--r-- 1 wekan users    601 Jul 26 16:08 star.json

OK,有个README文件就好,我们看下README的内容

This is a Meteor application bundle. It has only one external dependency:
Node.js v8.15.1. To run the application:

  $ (cd programs/server && npm install)
  $ export MONGO_URL='mongodb://user:password@host:port/databasename'
  $ export ROOT_URL='http://example.com'
  $ export MAIL_URL='smtp://user:password@mailhost:port/'
  $ node main.js

Use the PORT environment variable to set the port where the
application will listen. The default is 80, but that will require
root on most systems.

Find out more about Meteor at meteor.com.

安装

根据README的指示安装,安装过程中,可能会碰到这个问题

Error: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found 

这是因为我们libstdc++的版本过低,尝试升级一下即可,我这边偷懒,是直接从另外一台机器上面拷贝了一个高版本的过来,如下

total 1108
lrwxrwxrwx 1 wekan users      19 Aug  6 15:00 libstdc++.so.6 -> libstdc++.so.6.0.25
-rw-r--r-- 1 wekan users 1126624 Aug  6 14:59 libstdc++.so.6.0.25

这是后再运行安装命令即可

运行

根据README的说明,运行需要配置mongodb、访问url、mail服务器这几个,这边简单写了个启动脚本

#!/bin/bash
#配置mongodb链接url,这边配置的是不带账号密码的
export MONGO_URL='mongodb://10.**.**.198:27017/wekan'
#访问url
export ROOT_URL='http://10.**.**.146'    
#引入动态链接库,这个可以根据自己的环境配置
export LD_LIBRARY_PATH=/***/library:$LD_LIBRARY_PATH
#监听端口,80需要root权限
export PORT=80
#启动命令,这边省略了我的路径信息
/***/node-v10.16.1-linux-x64/bin/node main.js > log.txt 2>&1 &

执行这个脚本,观察进程是否ok即可

使用

在浏览器访问配置的对应链接,简单注册进入即可

首页
列表页
来源:https://www.jianshu.com/p/ca05cc072221