Ubuntu 24.04 安装 SeedDMS 6.0.42 指南

Ubuntu 24.04.5 LTS 上以官方 quickstart 分发包 + LAMP 路线从零部署 SeedDMS 6.0.42 全流程实测,含向导建表、改密、建柜上传、索引检索验证与排障实录。

SeedDMSSeedDMS安装部署Ubuntu 24.04PHP 应用2026/11/02

Ubuntu 24.04 安装 SeedDMS 6.0.42 指南

目标:在 Ubuntu 24.04.5 LTS 服务器上以官方 quickstart 分发包 + LAMP 路线从零部署 SeedDMS 6.0.42,完成安装向导建表、默认账号改密、建柜上传、全文索引与检索验证的全流程。本指南全部命令与回显已在 seeddms-server(Ubuntu 24.04.5 LTS + Apache 2.4.58 + PHP 8.3.6 + MariaDB 10.11.14)实测通过,并沉淀了多则真实排障记录。

一、环境信息

  • 操作系统:Ubuntu 24.04.5 LTS(/etc/os-release 中 PRETTY_NAME="Ubuntu 24.04.5 LTS")
  • 主机名:seeddms-server,站点 URL http://seeddms-server/
  • Web 服务器:Apache/2.4.58 (Ubuntu),built 2026-10-08,监听 :80
  • PHP:PHP 8.3.6 (cli) (built: Oct 19 2026 15:16:58) (NTS)
  • 数据库:MariaDB,客户端 mariadb Ver 15.1 Distrib 10.11.14-MariaDB,服务端 10.11.14-MariaDB-0ubuntu0.24.04.1
  • 关键软件包版本(dpkg -l 实测节选):
$ dpkg -l apache2 php8.3 libapache2-mod-php8.3 mariadb-server php8.3-sqlite3 | grep '^ii'
ii  apache2              2.4.58-1ubuntu8.17          amd64  Apache HTTP Server
ii  libapache2-mod-php8.3 8.3.6-0ubuntu0.24.04.13    amd64  server-side, HTML-embedded scripting language
ii  mariadb-server       1:10.11.14-0ubuntu0.24.04.1 amd64 relational database management system
ii  php8.3               8.3.6-0ubuntu0.24.04.13     amd64 server-side, HTML-embedded scripting language
ii  php8.3-sqlite3       8.3.6-0ubuntu0.24.04.13     amd64 sqlite3 module for PHP
  • 部署目录:/var/www/seeddms60x(quickstart 解压根),内容库 /var/www/seeddms60x/data,配置 /var/www/seeddms60x/conf/settings.xml
  • 数据库账号:库 seeddms、用户 seeddms、密码 q1w2e3r4(演示值)
  • 管理账号:admin,初始密码 admin(安装后改为 q1w2e3r4)

二、前置条件

  1. root 或 sudo 权限;可访问 Ubuntu 官方归档与 SourceForge 下载(本环境官方源直连可用,未走代理与国内镜像)。
  2. PHP 扩展齐备(php -m 实测,SeedDMS 依赖其中 curl/gd/mbstring/PDO/pdo_mysql/pdo_sqlite/xml 系列):
$ php -m | grep -E '^(curl|gd|libxml|mbstring|PDO|pdo_mysql|pdo_sqlite|SimpleXML|sqlite3|xml|xmlreader|xmlwriter|zip)$'
curl
gd
libxml
mbstring
PDO
pdo_mysql
pdo_sqlite
SimpleXML
sqlite3
xml
xmlreader
xmlwriter
zip
  1. 全文转换工具链(PDF/Word/docx 抽取与图像预览所需外部命令,见 4.2 安装与验证回显)。

三、版本选型说明

版本线最新稳定发布日期(SourceForge 文件页,查询 2026-11-02)说明
6.0.x6.0.422026-10-23主线,PHP 8.2+/Bootstrap4,本指南目标版本
5.1.x5.1.49与 6.0.42 同日双线维护老线,包内 CHANGELOG 显示 6.0.42 即「merge changes up to 5.1.49」
分发包大小内容适用
seeddms-quickstart-6.0.42.tar.gz111 MB预装 vendor/ composer 依赖与核心库,解压即用官方推荐主线(方案 A)
Codeberg 源码包 6.0.42.tar.gz4.5 MB纯源码,不含 vendor需自备 composer 构建,直装不可行(方案 B 实测记录)

💡 技术拓展:PHP 应用分发的两种常见形态——

形态特点取舍
源码包(需 composer install)体积小、依赖本机 composer 与网络构建环境要求高
预配置分发(vendor 已打包)体积大、开箱即用、版本自洽升级需整体替换目录

SeedDMS 官方 README 明确给出 quickstart 预配置分发路径,本指南实际采用后者。

四、方案 A:quickstart 分发包 + LAMP 在线安装(主线,全流程实测)

本节从基础环境到检索验证逐段实测,命令输入与回显均为真实输出。

4.1 安装 LAMP 基础环境

先装 Apache、PHP 及 SeedDMS 所需扩展与 MariaDB:

apt-get update
apt-get install -y apache2 php8.3 libapache2-mod-php8.3 \
  php8.3-curl php8.3-gd php8.3-mbstring php8.3-mysql php8.3-xml php8.3-sqlite3 \
  mariadb-server
systemctl enable apache2
systemctl enable mariadb
systemctl start apache2
systemctl start mariadb

⚠️ 注意:php8.3-sqlite3 提供 pdo_sqlite/sqlite3 扩展,SeedDMS 默认全文引擎 sqlitefts 与安装向导的 SQLite 检查都依赖它。本环境首轮安装遗漏该包,安装向导需求检查直接阻断(见「八、常见问题」Q2)。补装时的真实回显:

$ apt-get install -y php8.3-sqlite3
Creating config file /etc/php/8.3/mods-available/pdo_sqlite.ini with new version
Processing triggers for libapache2-mod-php8.3 (8.3.6-0ubuntu0.24.04.13) ...
Processing triggers for php8.3-cli (8.3.6-0ubuntu0.24.04.13) ...
$ php -m | grep -i sqlite
pdo_sqlite
sqlite3

服务状态验证(实测回显):

$ systemctl is-active apache2
active
$ systemctl is-active mariadb
active

4.2 安装全文转换工具链

SeedDMS 的全文抽取与预览生成通过外部命令完成(默认转换器:PDF→pdftotext、Word→catdoc、docx→docx2txt、图像→ImageMagick convert):

apt-get install -y poppler-utils catdoc docx2txt imagemagick

实测安装回显(节选):

Setting up imagemagick (8:6.9.12.98+dfsg1-5.2build2) ...
Setting up poppler-utils (24.02.0-1ubuntu9.11) ...
Setting up libmagickcore-6.q16-7-extra:amd64 (8:6.9.12.98+dfsg1-5.2build2) ...
Setting up ghostscript (10.02.1~dfsg1-0ubuntu7.10) ...
Processing triggers for libc-bin (2.39-0ubuntu8.9) ...

验证命令与实测回显:

$ pdftotext -v
pdftotext version 24.02.0
Copyright 2005-2024 The Poppler Developers - http://poppler.freedesktop.org
$ convert --version
Version: ImageMagick 6.9.12-98 Q16 x86_64 18038 https://legacy.imagemagick.org

⚠️ 注意:catdoc 与 docx2txt 不支持 --version 选项(catdoc: invalid option -- '-'、Can't read docx file <--version>! 为实测报错原文),验证以 command -v catdoc docx2txt 存在即可。

4.3 下载并校验 quickstart 分发包

mkdir -p /usr/local/src && cd /usr/local/src
wget https://downloads.sourceforge.net/seeddms/seeddms-quickstart-6.0.42.tar.gz

实测下载完成回显(节选):

113000K .......... .......... .......                         100%  532M=5.8s
-rw-r--r-- 1 root root 111M Oct 23 10:34 seeddms-quickstart-6.0.42.tar.gz

校验和(实测,与官方发布一致后方可部署):

$ sha256sum seeddms-quickstart-6.0.42.tar.gz
480364d1733cc87eaca7c57a1e01ccf33c6ba040c43005576a1887ce05bc5f8d  seeddms-quickstart-6.0.42.tar.gz

4.4 解压部署与目录布局

quickstart 包顶层即完整应用目录 seeddms60x/(实测 tar tzf 首行):

$ tar tzf seeddms-quickstart-6.0.42.tar.gz | head -4
seeddms60x/
seeddms60x/vendor/
seeddms60x/vendor/autoload.php
seeddms60x/vendor/bin/
$ tar xzf seeddms-quickstart-6.0.42.tar.gz -C /var/www/
$ chown -R www-data:www-data /var/www/seeddms60x/conf /var/www/seeddms60x/data

部署后目录布局(实测 ls -l /var/www/seeddms60x 节选):

-rw-rw-r--  1 ubuntu   ubuntu     4069 Oct 23 10:33 composer.json
drwxrwxr-x  2 www-data www-data   4096 Nov  2 00:48 conf
drwxrwxr-x  8 www-data www-data   4096 Nov  2 00:48 data
lrwxrwxrwx  1 ubuntu   ubuntu       14 Oct 23 10:33 seeddms -> seeddms-6.0.42
drwxrwxr-x 15 ubuntu   ubuntu     4096 Oct 23 10:33 seeddms-6.0.42
drwxrwxr-x 44 ubuntu   ubuntu     4096 Oct 23 10:33 vendor
drwxrwxr-x  3 ubuntu   ubuntu     4096 Oct 23 10:33 www

www/ 是文档根,seeddms 软链指向版本目录(升级时只换软链目标),conf/ 放 settings.xml,data/ 放内容库/索引/缓存/备份,vendor/ 为预装依赖。

4.5 配置 Apache 虚拟主机

新建站点文件 /etc/apache2/sites-available/seeddms.conf(实测生效内容):

<VirtualHost *:80>
    DocumentRoot /var/www/seeddms60x/www
    <Directory /var/www/seeddms60x/www>
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

启用并加载:

ln -s /etc/apache2/sites-available/seeddms.conf /etc/apache2/sites-enabled/seeddms.conf
systemctl reload apache2

实测验证回显:

$ ls -l /etc/apache2/sites-enabled/ | grep seeddms
lrwxrwxrwx 1 root root 31 Nov  2 00:46 seeddms.conf -> ../sites-available/seeddms.conf
$ systemctl is-active apache2
active
$ curl -s -o /dev/null -w "HTTP %{http_code} -> %{redirect_url}\n" http://seeddms-server/
HTTP 302 -> http://seeddms-server/out/out.ViewFolder.php

未登录访问被 302 重定向到 out.ViewFolder.php(登录门禁),说明 PHP 应用已正常响应。AllowOverride All 不可省略:应用依赖 www/.htaccess 做访问控制。

⚠️ 排障实录:首轮编写 vhost 时把日志路径变量臆造成 ${LOG_DIR},Apache 直接启动失败。Ubuntu apache2 包只定义 APACHE_LOG_DIR,改回 ErrorLog ${APACHE_LOG_DIR}/error.log 后恢复正常(见「八、常见问题」Q1)。

4.6 创建数据库与授权

以 root 进入 MariaDB(mariadb 命令,socket 认证)执行:

CREATE DATABASE seeddms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'seeddms'@'localhost' IDENTIFIED BY 'q1w2e3r4';
GRANT ALL PRIVILEGES ON seeddms.* TO 'seeddms'@'localhost';
FLUSH PRIVILEGES;

用业务账号验证(实测回显):

$ mariadb -u seeddms -pq1w2e3r4 -e "SHOW DATABASES; SELECT VERSION();"
Database
information_schema
seeddms
VERSION()
10.11.14-MariaDB-0ubuntu0.24.04.1

4.7 运行 Web 安装向导

SeedDMS 用「标记文件 + 向导」方式初始化,向导页仅在 conf/ENABLE_INSTALL_TOOL 存在时可访问:

touch /var/www/seeddms60x/conf/ENABLE_INSTALL_TOOL

浏览器访问 http://seeddms-server/install/install.php,需求检查通过后进入 action=setSettings 表单,本环境实测填写值:

表单项值
rootDir/var/www/seeddms60x/www/
httpRoot/
contentDir/var/www/seeddms60x/data/
dbDrivermysql
dbHostnamelocalhost
dbDatabaseseeddms
dbUserseeddms
dbPassq1w2e3r4

提交后向导建表并写入版本行(实测回显):

$ mariadb -u seeddms -pq1w2e3r4 seeddms -e "SELECT date,major,minor,subminor FROM tblVersion;"
date	major	minor	subminor
2026-11-02 00:48:00	6	0	0

向导完成后 ENABLE_INSTALL_TOOL 被自动删除(实测回显):

$ ls /var/www/seeddms60x/conf/ENABLE_INSTALL_TOOL
ls: cannot access '/var/www/seeddms60x/conf/ENABLE_INSTALL_TOOL': No such file or directory

⚠️ 排障实录:首轮需求检查报 SQLite 扩展缺失、向导无法进入表单页,即 4.1 所述 php8.3-sqlite3 未装;补装并 reload Apache 后向导放行(Q2)。

4.8 登录并修改默认密码

用默认账号 admin/admin 登录 http://seeddms-server/,立即进入「用户和分组」编辑 admin,将密码改为 q1w2e3r4。应用日志实测记录了完整过程:

Nov 02 00:55:13  [info] -- (127.0.0.1) op.Login.php
Nov 02 00:55:13  [error] Authentication service 'db': Authentication of user 'admin' disregarded.
Nov 02 00:55:13  [error] -- (127.0.0.1) op.Login.php login failed
Nov 02 00:55:28  [info] Authentication service 'db': Authentication of user 'admin' successful.
Nov 02 00:55:56  [info] admin (127.0.0.1) op.UsrMgr.php .php&action=edituser&userid=1

(前两行是改密后旧密码 admin 被拒的真实记录,第三行起为新密码登录成功并进入用户编辑。)

⚠️ 排障实录:用户编辑表单必须完整提交,缺省 comment 字段会触发 500 错误 Undefined array key "comment"(Q3)。

4.9 建柜、上传、索引与检索验证

建柜(Add folder):在根文件夹 DMS 下新建 Archive(Comment: Contract archive cabinet)。首轮把 Sequence 留空/填非数字被拒,日志实录:

Nov 02 00:56:22  [error] admin (127.0.0.1) op.AddSubFolder.php  UI::exitError error=Invalid sequence value pagetitle=Folder 'DMS'
Nov 02 00:57:02  [info] admin (127.0.0.1) op.AddSubFolder.php ?name=Archive&folderid=1

上传文档:在 Archive 下上传 contract-demo.txt,关键词 demo, contract, signed,成功日志:

Nov 02 00:57:44  [info] admin (127.0.0.1) op.AddDocument.php add document 1 in folder 2

内容文件落盘(实测):

$ cat /var/www/seeddms60x/data/1048576/1/1.txt
SeedDMS contract test document.
Fulltext probe token: QUZUO-PROBE-20261102
Signed by quzuo.net demo.

编辑文档:文档编辑页参数名是 documentid,误用 docid 的实测报错日志:

Nov 02 00:58:24  [error] admin (127.0.0.1) out.EditDocument.php?docid=1  UI::exitError error=Invalid Document ID pagetitle=Document 'Invalid Document ID'
Nov 02 00:59:46  [info] admin (127.0.0.1) op.EditDocument.php ?documentid=1

建索引(用 seeddms-* 包装脚本调用,用法详见 《SeedDMS 6.0.42 常用 CLI 命令与工具详解》):

$ /var/www/seeddms60x/seeddms/utils/seeddms-indexer
D 1:DMS  (Folder unchanged)
  D 2:Archive  (Folder unchanged)
    D 3:Invoices  (Folder unchanged)
    1:Contract Demo 2026 (signed)  (Document unchanged)
    2:Probe Doc CLI  (Document unchanged)

Total Time: 0 sec.
Documents
  added: 0
  updated: 0
  unchanged: 2
  error: 0
Folders
  added: 0
  updated: 0
  unchanged: 3
  error: 0

💡 说明:Invoices 与 Probe Doc CLI 两行是本机后续 CLI 实验创建的产物;若严格按本篇走到此步,输出只有 DMS/Archive 与文档 1 的行。首轮索引时新目录/新文档对应显示 (Folder added)/(Document added),本环境首轮实测计数为 Folders added: 1、Documents unchanged: 2。

检索验证:Web 顶栏「搜索」输入 quzuoprobe2026,命中文档 1。

⚠️ 注意:sqlitefts 引擎下带连字符的完整串 QUZUO-PROBE-20261102 检索不命中(连字符是分词边界,索引 token 为 quzuoprobe2026),属引擎分词行为而非索引失败(Q8)。

五、方案 B:源码包直装(实测不可行记录)

官方 Codeberg 仓库归档包下载(实测回显):

$ wget https://codeberg.org/SeedDMS/seeddms/archive/6.0.42.tar.gz -O seeddms-6.0.42.tar.gz
...
2026-11-02 03:43:22 (3.69 MB/s) - 'seeddms-6.0.42.tar.gz' saved [4654583/4654583]
$ sha256sum seeddms-6.0.42.tar.gz
0d8e80a76aa3e165dfd6f108e3a31cb0eb3114270a4459a6813cad7b5570f909  seeddms-6.0.42.tar.gz

解压后顶层为 seeddms/(含 inc/、www/、vendor 缺失):

$ tar xzf seeddms-6.0.42.tar.gz
$ ls seeddms/ | head -6
CHANGELOG
Gruntfile.js
LICENSE
Makefile
README.md
TODO
$ ls seeddms/vendor
ls: cannot access 'seeddms/vendor': No such file or directory

直接以该树跑入口脚本,实测输出:

$ php -d error_reporting=E_ERROR seeddms/www/index.php
You do not seem to have a valid configuration. Set SEEDDMS_CONFIG_FILE to the path of the configuration file.

源码包不含 vendor/(composer 依赖与 SeedDMS_Core 均未预装),无法像 quickstart 一样解压即用。官方 README.md 亦写明:详细安装说明针对「preconfigured distribution」(即 quickstart 包,见 doc/README.Install.md);若从源码/git 安装需自行执行 composer 构建并放置核心库。结论:生产部署请直接走方案 A,方案 B 仅适合开发者改码场景。

六、方案对比与选择建议

维度方案 A:quickstart + LAMP方案 B:源码包直装
版本6.0.42(2026-10-23 发布)6.0.42
是否需联网需(apt + SourceForge/Codeberg)需(且需 composer 环境)
安装方式tar 解压即用(vendor 预装)不可行:缺 vendor,入口报配置错误
服务托管apache2/mariadb systemd 单元同左
监听端口:80—
优缺点简单、自洽、官方主线仅开发场景,须自行构建依赖

内网可联网环境选方案 A;完全离线环境可在一台联网机上下载 quickstart 包(111 MB)拷贝至目标机解压,步骤同 4.4 之后各节。

七、配置说明

安装完成后核心配置集中在 /var/www/seeddms60x/conf/settings.xml(由向导生成),关键项:

  • system/server:rootDir="/var/www/seeddms60x/www/"、contentDir="/var/www/seeddms60x/data/"、baseUrl(生成邮件内链接与 REST 回调的站点基址);
  • system/database:dbDriver="mysql" dbHostname="localhost" dbDatabase="seeddms" dbUser="seeddms" dbPass="q1w2e3r4";
  • site/edition:enableFullSearch="true"、fullSearchEngine="sqlitefts"。

baseUrl 出厂为空串,CLI 工具会产生 HTTP_HOST 相关警告噪音,建议安装后立即设置。两种修改方式(详见 《SeedDMS 6.0.42 配置参数详解》):直接编辑 settings.xml,或用内置命令:

$ cd /var/www/seeddms60x && php seeddms/utils/console dms:setconfig --name=baseUrl --value="http://seeddms-server/"
Changing 'baseUrl' from '' to 'http://seeddms-server/'.
$ grep -o 'baseUrl="[^"]*"' conf/settings.xml | head -1
baseUrl="http://seeddms-server/"

权限要点:conf/、data/ 必须归 Web 运行用户 www-data 可写(4.4 已做);data/ 不在文档根内,勿将其暴露到 Web 可达路径。

八、常见问题

Q1:Apache 启动失败,报日志目录变量不识别? vhost 中日志路径应使用 Ubuntu apache2 包预定义的 ${APACHE_LOG_DIR},写成 ${LOG_DIR} 等臆造变量会导致服务起不来。改回后 systemctl reload apache2 即恢复(实测 is-active 返回 active)。

Q2:安装向导需求检查报 SQLite 相关缺失、无法进入表单页? 未装 php8.3-sqlite3。apt-get install -y php8.3-sqlite3 后 php -m | grep -i sqlite 出现 pdo_sqlite/sqlite3,reload Apache 再进向导即放行(实测回显见 4.1)。

Q3:Web 修改 admin 密码提交后 500,报 Undefined array key "comment"? 用户编辑表单要求 comment 字段随表单一起提交(留空也要带该字段),属 SeedDMS 表单处理缺陷;用浏览器正常提交(表单自带该字段)不会触发,脚本化 POST 时务必补 comment=。

Q4:新建文件夹/上传文档报 Invalid sequence value? Sequence(排序号)必须填数字,留空或填非数字即被 UI::exitError 拒绝(日志实录见 4.9)。填 1 即可。

Q5:文档编辑页报 Invalid Document ID? URL 参数名是 documentid 而非 docid(实测两种参数名的报错/成功日志对照见 4.9)。

Q6:直接 php /var/www/seeddms60x/seeddms/utils/indexer.php 报找不到配置? 传统工具需经 seeddms-* 包装脚本调用(其内部处理 SEEDDMS_HOME 探测),或显式给出 --config;用法见 《SeedDMS 6.0.42 常用 CLI 命令与工具详解》。

Q7:quickstart 下载渠道? 官方 SourceForge downloads.sourceforge.net/seeddms/... 本环境直连可用(实测 5.8 秒完成 111 MB,无需代理或国内镜像);若官方源不可用,按「官方源 → 国内源 → 代理」降级链处理并注明。

Q8:全文检索带连字符的完整串不命中? sqlitefts 以连字符为分词边界,QUZUO-PROBE-20261102 的索引 token 为 quzuoprobe2026,按后者检索命中(4.9 实测)。

九、卸载与清理

rm -f /etc/apache2/sites-enabled/seeddms.conf /etc/apache2/sites-available/seeddms.conf
systemctl reload apache2
rm -rf /var/www/seeddms60x
mariadb -e "DROP DATABASE seeddms; DROP USER 'seeddms'@'localhost';"

data/ 内容目录随 /var/www/seeddms60x 一并删除;删除前务必备份(备份策略见 《SeedDMS 6.0.42 配置参数详解》 生产模板节)。

十、参考链接

Ubuntu 24.04 安装 SeedDMS 6.0.42 指南 - Quzuo