Ubuntu 24.04 安装 SeedDMS 6.0.42 指南
Ubuntu 24.04.5 LTS 上以官方 quickstart 分发包 + LAMP 路线从零部署 SeedDMS 6.0.42 全流程实测,含向导建表、改密、建柜上传、索引检索验证与排障实录。
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,站点 URLhttp://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)
二、前置条件
- root 或 sudo 权限;可访问 Ubuntu 官方归档与 SourceForge 下载(本环境官方源直连可用,未走代理与国内镜像)。
- 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
- 全文转换工具链(PDF/Word/docx 抽取与图像预览所需外部命令,见 4.2 安装与验证回显)。
三、版本选型说明
| 版本线 | 最新稳定 | 发布日期(SourceForge 文件页,查询 2026-11-02) | 说明 |
|---|---|---|---|
| 6.0.x | 6.0.42 | 2026-10-23 | 主线,PHP 8.2+/Bootstrap4,本指南目标版本 |
| 5.1.x | 5.1.49 | 与 6.0.42 同日双线维护 | 老线,包内 CHANGELOG 显示 6.0.42 即「merge changes up to 5.1.49」 |
| 分发包 | 大小 | 内容 | 适用 |
|---|---|---|---|
seeddms-quickstart-6.0.42.tar.gz | 111 MB | 预装 vendor/ composer 依赖与核心库,解压即用 | 官方推荐主线(方案 A) |
Codeberg 源码包 6.0.42.tar.gz | 4.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/ |
| dbDriver | mysql |
| dbHostname | localhost |
| dbDatabase | seeddms |
| dbUser | seeddms |
| dbPass | q1w2e3r4 |
提交后向导建表并写入版本行(实测回显):
$ 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 配置参数详解》 生产模板节)。
十、参考链接
- 官方站点:https://www.seeddms.org
- 官方发布页:https://sourceforge.net/projects/seeddms/files/seeddms-6.0.42/(查询日期 2026-11-02)
- 官方安装文档:quickstart 包内
doc/README.Install.md - 站内相关:《SeedDMS 6.0.42 介绍与选型指南》、《SeedDMS 6.0.42 配置参数详解》、《SeedDMS 6.0.42 常用 CLI 命令与工具详解》