背景

最近工作上同时推进的项目比较多,有些跟踪不过来,特别是不同的项目进展的程度也不一样,简单纸笔工具也不直观。
想起之前用过看板系统,比较适合这种情况。

选定

但试用的几款要么部署太复杂、要么功能太简单,还有些在线的数据全在缓存里,数据很容易丢。
最终选定了kanboard。
kanboard仅依赖php,单人使用的话数据库可以用sqlite,只要db目录有写入权限就行了。

kanboard banner

部署

为了避免再折腾域名、端口啥的,直接丢到typecho目录下,通过子目录访问就行了,群晖管理页面再给http组配置上data目录的写入权限。

data.png

齐活!

排错1

浏览器访问,duang,一个大错误提示,“只支持php 7.2以上”。
再跑到群晖后台,安装php7.4;webStation中给这个虚拟主机配置使用php 7.4。

php7.4.png

再重新访问,OK了

排错2

用了两天,确实不错。
又发现了子任务的故障,新建子任务没问题,但是一点击开始子任务或者完成子任务,就提示数据库错误。

Internal Error: SQL Error: SQLSTATE[HY000]: General error: 1 no such
table: main.task_has_subtasks #4858

搜索了一番,原来是老早就有的问题,貌似子任务表结构设计的有问题,issue里也给了解决方案。
把数据库文件拿到本地,用sqlite管理工具运行修复脚本,把修复好的数据库再放回去覆盖即可。
管理工具:sqlite-tools-win32-x86-3360000.zip
修复脚本保存为fix.sql

ALTER TABLE subtask_time_tracking RENAME TO subtask_time_tracking_old;
    
    CREATE TABLE subtask_time_tracking (
        "id"    INTEGER,
        "user_id"    INTEGER NOT NULL,
        "subtask_id"    INTEGER NOT NULL,
        "start"    INTEGER DEFAULT 0,
        "end"    INTEGER DEFAULT 0,
        "time_spent"    REAL DEFAULT 0,
        FOREIGN KEY("user_id") REFERENCES "users"("id") ON DELETE CASCADE,
        FOREIGN KEY("subtask_id") REFERENCES "subtasks"("id") ON DELETE CASCADE
    );
    
    INSERT INTO subtask_time_tracking SELECT * FROM subtask_time_tracking_old;

运行过程:

sqlite3.exe db.slite
    .read fix.sql

排错3

启用插件:

  • kanboard自带有插件商店,管理员可以直接安装;
  • 官方文档关于插件的设置说明不对,正确的做法是:
  1. config.php中设置PLUGINS_INSTALLER为true;
  2. 授予plugins目录访问权
`chmown www-data:www-data plugins`

标签: none

添加新评论