开源看板系统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@host-*** 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即可

使用

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


首页
列表页
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容