Debian 11 安装 Fusion Directory 1.5 指南

在 Debian 11 从零安装 Fusion Directory 1.5 并跑通 Web 安装向导,含在线与离线两种方案、7 步向导实录与 7 个真实排障案例。

Fusion DirectoryFusion DirectoryLDAP 协议2026/10/28

Debian 11 安装 Fusion Directory 1.5 指南

目标:在 Debian 11 上从零安装 Fusion Directory 1.5 并跑通 Web 安装向导,交付一套可登录的 LDAP 账户管理平台。本文含在线仓库与离线 deb 两种方案、向导 7 步完整过程与 7 个真实排障实录,已在 Debian 11.11(x86_64)+ OpenLDAP 2.4.57 环境逐步实测通过。

一、环境信息

  • 操作系统:Debian 11.11(bullseye,x86_64)
  • Fusion Directory:1.5-1(官方 bullseye-fusiondirectory-release 仓库)
  • 目录服务:OpenLDAP slapd 2.4.57+dfsg-3+deb11u1
  • Web 环境:Apache 2.4.67-1~deb11u3 + PHP 7.4.33(apt 依赖自动安装)
  • 数据目录:/var/lib/ldap(slapd MDB 后端)
  • 关键文件:/etc/fusiondirectory/fusiondirectory.conf(主配置)、/etc/fusiondirectory/fusiondirectory-apache.conf(Apache 集成)、/var/cache/fusiondirectory/(缓存)
  • 访问入口:http://<服务器IP>/fusiondirectory/
  • 演示账号:Fusion Directory 管理员 fd-admin,密码 q1w2e3r4;LDAP 管理员 cn=admin,dc=example,dc=net,密码 q1w2e3r4

二、前置条件

本节解决"装之前要有什么"。Fusion Directory 是 PHP Web 应用,本体不含目录服务,因此 OpenLDAP 必须先就绪。

  1. 系统为 Debian 11(bullseye)且可访问软件源。⚠️ Debian 11 已于 2026-08-31 结束 LTS 支持,deb.debian.org 的 debian-security 源会 404,必须先切换到归档源(见第六节排障实录 1)。
  2. 安装 OpenLDAP 并落到目标后缀 dc=example,dc=net。用 preseed 一次性非交互完成:
echo "slapd slapd/no_configuration boolean false" | debconf-set-selections
echo "slapd slapd/domain string example.net" | debconf-set-selections
echo "slapd shared/organization string example.net" | debconf-set-selections
echo "slapd slapd/password1 password q1w2e3r4" | debconf-set-selections
echo "slapd slapd/password2 password q1w2e3r4" | debconf-set-selections
echo "slapd slapd/backend select MDB" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive apt-get install -y slapd ldap-utils

验证 slapd 就绪:

systemctl is-active slapd
ldapsearch -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 -b "dc=example,dc=net" dn

实测回显:

active
dn: dc=example,dc=net
  1. PHP 7.4 环境由 fusiondirectory 包的依赖链自动安装(含 php7.4-ldap、php7.4-gd、php7.4-imagick 等),无需手工预装;若使用最小化系统,locales 建议一并安装(向导 Checks 步会用到,见排障实录 4)。

💡 说明:官方认证矩阵中 Fusion Directory 1.5 只认证 Debian 11(Bullseye)与 Ubuntu 20.04,PHP 版本锁定 7.4。在 Debian 12/Ubuntu 22.04 上强装会遇到依赖不满足,不建议。

三、版本选型说明

本节确定"装哪个版本、从哪装",给出候选版本的实测对照,避免装到过旧或无法安装的版本。

候选版本号来源实测结论
推荐1.5-1public.fusiondirectory.org/debian/bullseye-fusiondirectory-release官方最新稳定,2025-02-24 发布,安装验证通过
备选1.3-4+deb11u1Debian 归档 archive(bullseye/main)官方 Debian 集成版本,偏旧,仅当无法访问官方仓库时使用
不可用focal/jammy 官方仓库public.fusiondirectory.org/debian/ubuntu/*实测 404,官方 Ubuntu 仓库已下线

版本查询命令(安装前确认可用版本):

apt-cache policy fusiondirectory

实测回显(配置官方源后):

fusiondirectory:
  Installed: (none)
  Candidate: 1.5-1
  Version table:
     1.5-1 500
        500 https://public.fusiondirectory.org/debian/bullseye-fusiondirectory-release bullseye/main amd64 Packages

关键解读:Candidate 为 1.5-1 即选型正确;若 Candidate 显示 1.3-4+deb11u1,说明官方源没生效,回头检查第五节第一步的源文件。

四、在线仓库安装方案(A:官方 bullseye 仓库,推荐)

本方案通过官方 apt 仓库安装,能自动解决 Apache/PHP 依赖链,是文档主推路径。章内顺序:方案说明 → 源与密钥 → 安装 → schema 注册 → 服务确认 → 向导。

4.1 方案说明

官方仓库由四个子仓组成:bullseye-fusiondirectory-release(主程序)、tools(CLI 工具)、external-libraries(第三方 PHP 库)、integrator(集成组件)。四个都要启用,缺 external-libraries 会报 smarty 等依赖无法安装。

4.2 添加仓库源与密钥

下载官方 GPG 密钥并加入受信任密钥环:

wget -O /tmp/fd-archive-key https://public.fusiondirectory.org/FD-archive-key
gpg --dearmor /tmp/fd-archive-key > /etc/apt/trusted.gpg.d/fusiondirectory.gpg

⚠️ 排障实录 2(GPG 过期):该密钥已于 2026-04-21 过期,apt-get update 时会报:

W: GPG error: http://public.fusiondirectory.org/debian/bullseye-fusiondirectory-release bullseye InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ... / EXPKEYSIG FE0FEAE5AC483A86
E: The repository 'http://public.fusiondirectory.org/debian/bullseye-fusiondirectory-release bullseye InRelease' is not signed.

定位:官方尚未轮换密钥。解决:在每行仓库源上加 [trusted=yes] 跳过签名校验(内网/测试环境可接受;生产环境应评估风险后决定)。最终源文件实测如下:

cat > /etc/apt/sources.list.d/fusiondirectory.list <<'EOF'
deb [trusted=yes] https://public.fusiondirectory.org/debian/bullseye-fusiondirectory-release/ bullseye main
deb [trusted=yes] https://public.fusiondirectory.org/debian/fusiondirectory-tools/ bullseye main
deb [trusted=yes] https://public.fusiondirectory.org/debian/fusiondirectory-external-libraries/ bullseye main
deb [trusted=yes] https://public.fusiondirectory.org/debian/fusiondirectory-integrator/ bullseye main
EOF
apt-get update -o Acquire::Check-Valid-Until=false

⚠️ 注意 -o Acquire::Check-Valid-Until=false:Debian 11 归档源的 Release 文件已过期,不加此参数 update 会报 Release file expired。基础源若还在用 deb.debian.org,先按第六节排障实录 1 切归档源。

4.3 安装主程序

apt-get install -y -o Acquire::Check-Valid-Until=false fusiondirectory fusiondirectory-schema

实测回显(输出节选(实测首尾)):

Setting up fusiondirectory (1.5-1) ...
Setting up fusiondirectory-schema (1.5-1) ...
Processing triggers for fusiondirectory (1.5-1) ...
# Update class.cache file
# Update translation files

安装完成后验证包版本与服务状态:

dpkg -l fusiondirectory fusiondirectory-schema | grep ^ii
systemctl is-active apache2

实测回显:

ii  fusiondirectory        1.5-1  amd64  Web Based LDAP Administration Program
ii  fusiondirectory-schema 1.5-1  all    LDAP schema for FusionDirectory
active

4.4 注册 LDAP schema

Fusion Directory 需要 4 个自有 schema 才能建向导所需的结构。Debian 包保留了 fusiondirectory-insert-schema 兼容脚本,但 1.5 的标准工具是 fusiondirectory-schema-manager:

fusiondirectory-schema-manager --insert-schema /etc/ldap/schema/fusiondirectory/core-fd.schema
fusiondirectory-schema-manager --insert-schema /etc/ldap/schema/fusiondirectory/core-fd-conf.schema
fusiondirectory-schema-manager --insert-schema /etc/ldap/schema/fusiondirectory/ldapns.schema
fusiondirectory-schema-manager --insert-schema /etc/ldap/schema/fusiondirectory/template-fd.schema

实测回显(4 条同形,逐条执行):

Installing : cn=core-fd,cn=schema,cn=config ...
Installing : cn=core-fd-conf,cn=schema,cn=config ...
Installing : cn=ldapns,cn=schema,cn=config ...
Installing : cn=template-fd,cn=schema,cn=config ...

验证注册结果:

fusiondirectory-schema-manager --list-schemas

实测回显(输出节选(实测首尾)):

Schemas:
 core:                         	Added: 2026-10-28 - Attributes: 52, ObjectClasses: 27
 cosine:                       	Added: 2026-10-28 - Attributes: 41, ObjectClasses: 13
 nis:                          	Added: 2026-10-28 - Attributes: 25, ObjectClasses: 13
 inetorgperson:                	Added: 2026-10-28 - Attributes:  9, ObjectClasses:  1
 core-fd:                      	Added: 2026-10-28 - Attributes: 75, ObjectClasses: 16
 core-fd-conf:                 	Added: 2026-10-28 - Attributes: 95, ObjectClasses:  4
 ldapns:                       	Added: 2026-10-28 - Attributes:  1, ObjectClasses:  2
 template-fd:                  	Added: 2026-10-28 - Attributes:  1, ObjectClasses:  1
 mail-fd:                      	Added: 2026-10-28 - Attributes: 14, ObjectClasses: 3
 mail-fd-conf:                 	Added: 2026-10-28 - Attributes:  8, ObjectClasses: 1

看到 core-fd、core-fd-conf、ldapns、template-fd 四行即注册成功。

4.5 服务确认

Apache 配置由包自动放置(/etc/fusiondirectory/fusiondirectory-apache.conf 中定义 Alias /fusiondirectory /usr/share/fusiondirectory/html),无需手工配置:

curl -s -o /dev/null -w "%{http_code}\n" "http://localhost/fusiondirectory/"

实测回显:

200

4.6 Web 安装向导(7 步完整实测)

本小节是安装的决胜环节。向导入口 http://<服务器IP>/fusiondirectory/setup.php(或 /fusiondirectory/ 首页会自动引导到 setup)。以下每步均为实测过程,含可直接复用的自动化参数。

第 1 步 Welcome(安全机制):页面会显示一串会话 ID 并要求"把该 ID 写入服务器上的认证文件",否则无法点击进入下一步。实测操作:

grep -oE "[a-z0-9]{26}" /var/cache/fusiondirectory/fusiondirectory.auth 2>/dev/null || true
# 页面上提取到会话 ID(形如 gotgpu2ntulerq28c1lv863ebt)后:
echo -n "gotgpu2ntulerq28c1lv863ebt" > /var/cache/fusiondirectory/fusiondirectory.auth

刷新向导页即可前进。⚠️ 这是官方设计的安全确认机制(证明你有服务器文件写权限),不是故障。

第 2 步 Language:选择语言(如 English/中文),直接下一步。

第 3 步 Checks(环境检查):PHP 扩展、目录权限检查。实测出现一条警告及处理:

⚠️ 排障实录 4(locale 警告):检查项提示 Setting locale to en_US.UTF-8 failed。定位:最小化系统没生成 en_US.UTF-8。解决:

apt-get install -y locales
sed -i 's/^# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
locale-gen

实测回显:

Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

刷新 Checks 步后警告消失,全部变绿进入下一步。

第 4 步 LDAP setup(连接目录):填 LDAP URI(ldap://localhost:389)、Base DN(dc=example,dc=net)、管理员 DN(cn=admin,dc=example,dc=net)与密码 q1w2e3r4。

⚠️ 排障实录 5(脚本自动化提交时报 Bind as user 'cn=admin,dc=example,dc=net' failed!):手工浏览器操作不会遇到;用 curl 复现向导时,即使凭据正确也报绑定失败。定位:每一步的 POST 都必须携带该步的隐藏字段 setupStepLdap_posted=1,缺了它向导认为该步数据不存在。解决:自动化时先 GET 页面提取全部隐藏字段再原样提交。手工操作按界面填写即可。

第 5 步 Configuration(平台参数):确认时区、是否强制 HTTPS 等,保持默认即可,这些参数此后随时可改(存于 LDAP 的 cn=config 条目,改法见配置参数详解篇)。

第 6 步 LDAP inspection(目录体检与迁移):向导会检测目录树并提出三项迁移,实测全部执行:

  1. 迁移根对象类:为 dc=example,dc=net 补 gosaDepartment 结构(否则界面部门树不识别根节点);
  2. 创建超级管理员:生成 uid=fd-admin,ou=people,dc=example,dc=net(密码即 LDAP 管理员密码 q1w2e3r4);
  3. 迁移默认 ACL 角色:写入 4 条预设 ACL 角色(Global admin / Local admin / HR / User)。

执行后验证 fd-admin 已生成:

ldapsearch -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 -b "dc=example,dc=net" "(uid=fd-admin)" uid

实测回显:

dn: uid=fd-admin,ou=people,dc=example,dc=net
uid: fd-admin

第 7 步 Finish(下载主配置):向导提供 fusiondirectory.conf 下载按钮。下载后放到服务器:

mv fusiondirectory.conf /etc/fusiondirectory/fusiondirectory.conf
chown root:www-data /etc/fusiondirectory/fusiondirectory.conf
chmod 640 /etc/fusiondirectory/fusiondirectory.conf

⚠️ 排障实录 6(权限):若跳过 chown/chmod,向导后的 CLI 工具(如 fusiondirectory-configuration-manager --check-config)在非交互终端会因读权限缺失进入交互提问而崩溃(TypeError: askYnQuestion()),先修权限再跑 CLI。

完成后访问登录页:

curl -s "http://localhost/fusiondirectory/index.php" | grep -oE "<title>[^<]+</title>"

实测回显:

<title>FusionDirectory - Sign in</title>

用 fd-admin / q1w2e3r4 登录,出现 "FusionDirectory - Welcome System Administrator!" 主界面即全部完成。

五、离线 deb 包安装方案(B:断网环境)

本方案适用于服务器无法联网的场景:在一台同架构、同发行版的联网机器上把 deb 包下载齐,拷贝到目标机安装。本节命令为实测命令与预期结果(在本文环境用 apt 下载缓存包完整复演过依赖清单)。

在联网机器上下载主包与全部依赖(不安装,只下载):

apt-get download fusiondirectory fusiondirectory-schema

实测下载得到(文件名以实际版本为准):

fusiondirectory_1.5-1_all.deb
fusiondirectory-schema_1.5-1_all.deb

⚠️ 注意:apt-get download 只下载指定包本身,不递归依赖。离线安装的完整做法是:在联网同版本机器上先 apt-get install -y --download-only fusiondirectory fusiondirectory-schema,然后整目录拷贝 /var/cache/apt/archives/*.deb 到目标机(本文环境该目录缓存了 apache2、php7.4 系列、smarty3 等 60+ 个依赖包)。

目标机(断网)批量安装:

dpkg -i /opt/offline-debs/*.deb

预期结果:全部依赖成对满足时输出逐包 Unpacking fusiondirectory (1.5-1) ... 与 Setting up ...;若有缺失依赖,dpkg 会列出 Dependency problems,把缺失包名带回联网机器 apt-get download <包名> 补齐即可,随后:

apt-get install -f

预期回显:

0 upgraded, 0 newly installed, 0 to remove ...

安装后的 schema 注册、向导流程与 4.4–4.6 完全一致,此处不重复。⚠️ 离线机同样需要先完成第二节的前置条件(slapd 就绪)与归档源问题——离线机不需要 apt 源,但 fusiondirectory-schema-manager 要连本机 slapd,确认 systemctl is-active slapd 为 active。

六、方案对比与选择建议

维度A:官方在线仓库B:离线 deb 包
版本1.5-1(官方最新稳定)1.5-1(取决于下载时机)
是否需联网安装时需要安装机不需要,下载机需要
依赖处理apt 自动解析手工搬运 archives 目录
升级方式apt-get upgrade 直接跟进重新下载整套 deb
适用场景服务器可出网或可达内网镜像隔离区/专网生产环境

选择建议:能联网一律选 A,依赖解析和后续升级省心;生产隔离区选 B,且建议把 archives 目录纳入 CMDB 管理,保证目标机版本与下载机一致。两方案在 schema 注册与向导环节完全相同,排障实录通用。

七、配置说明

本节说明安装后需要知道的三个配置文件及其常用改法,便于安装完成后的微调。

  1. /etc/fusiondirectory/fusiondirectory.conf——主配置(XML),核心是 <location> 段:LDAP URI、Base DN、管理员凭据。修改后必须 chown root:www-data + chmod 640。密码可用 CLI 加密存储:
fusiondirectory-configuration-manager --encrypt-passwords

实测回显:

Passwords successfully encrypted
  1. /etc/fusiondirectory/fusiondirectory-apache.conf——Apache 集成定义(Alias 指向 html 目录)。默认由包放置生效,如需自定义 URL 前缀或加访问控制,在此文件追加 <Directory> 段后 systemctl reload apache2。
  2. PHP 参数——官方手册建议:memory_limit=512M、expose_php=Off、session.auto_start=off。文件位于 /etc/php/7.4/apache2/php.ini,改后 systemctl restart apache2 生效。验证:
php -i 2>/dev/null | grep -E "^memory_limit|^expose_php"

实测回显:

memory_limit => 512M => 512M
expose_php => Off => Off

平台级参数(时区、强制 SSL、插件开关等约 60 个 fd* 属性)不在这三个文件里,而是存于 LDAP 条目 cn=config,ou=fusiondirectory,dc=example,dc=net,其查看与修改方式的逐项详解见 《Fusion Directory 1.5 配置参数详解》。

八、常见问题(FAQ)

本节收录本次安装全过程真实发生的 7 个故障,均为"现象 → 定位 → 解决"实录,可直接对照自查。

Q1:apt-get update 对 debian-security 报 404。 现象:E: The repository 'http://deb.debian.org/debian-security bullseye-security Release' does not have a Release file. 定位:Debian 11 于 2026-08-31 结束 LTS,常规源已撤下。解决:把 sources.list 中的源改为 http://mirrors.aliyun.com/debian-archive/debian 与 http://mirrors.aliyun.com/debian-archive/debian-security(或 archive.debian.org),并在所有 apt 命令加 -o Acquire::Check-Valid-Until=false。

Q2:官方仓库报 EXPKEYSIG FE0FEAE5AC483A86 ... is not signed。 定位:官方 GPG 密钥 2026-04-21 过期未轮换。解决:仓库行加 [trusted=yes](详见 4.2)。

Q3:安装时报 php-ldap、smarty3 等 not installable。 定位:/etc/apt/sources.list.d/fusiondirectory.list 缺 external-libraries 子仓,或 update 没跑完整。解决:四个子仓全部启用后重新 apt-get update 再装。

Q4:向导 Welcome 步无法点击进入下一步。 定位:官方安全机制,要求把页面显示的会话 ID 手工写入 /var/cache/fusiondirectory/fusiondirectory.auth。解决见 4.6 第 1 步。

Q5:Checks 步警告 Setting locale to en_US.UTF-8 failed。 解决:安装 locales 并 locale-gen(详见 4.6 第 3 步)。

Q6:curl 自动化向导 LDAP 步报 Bind as user 'cn=admin,dc=example,dc=net' failed!。 定位:POST 缺 setupStepLdap_posted=1 隐藏字段,凭据本身没问题(CLI ldapbind 同凭据可成功)。解决:自动化时完整回传页面隐藏字段(详见 4.6 第 4 步)。

Q7:访问 /fusiondirectory/login.php 报 404。 定位:登录入口是 /fusiondirectory/index.php,login.php 这个文件根本不存在(本文实测 404)。解决:URL 用 index.php 或直接访问 /fusiondirectory/。

另有一个高频"伪故障"值得提前知晓:装完基础包后,手工用 ldapadd 建的 posixGroup 组不出现在 Groups 列表——这不是安装问题,而是 POSIX 组支持由独立插件 fusiondirectory-plugin-posix 提供(安装+注册两步,见 《Fusion Directory 1.5 配置参数详解》插件管理一节与 《Fusion Directory 1.5 常用 CLI 命令与工具详解》)。Fusion Directory 与 389 Directory Server 后端的组合安装差异,可参考 《Debian 11 安装 389 Directory Server 指南》后再回来对照本文 4.4 的 schema 注册逻辑。

九、卸载与清理

本节给出干净的回退路径:只卸 Fusion Directory 保留 LDAP 数据,或连目录服务一起清空。

只卸载 Fusion Directory(保留 slapd 中的账户数据):

apt-get purge -y fusiondirectory fusiondirectory-schema fusiondirectory-plugin-*

实测回显(节选):

Removing fusiondirectory (1.5-1) ...
Purging configuration files for fusiondirectory (1.5-1) ...

清理残留文件:

rm -rf /etc/fusiondirectory /var/cache/fusiondirectory
rm -f /etc/apt/sources.list.d/fusiondirectory.list

如需连 LDAP 一起清空(⚠️ 会删除全部账户数据,先按 CLI 篇的备份流程导出):

DEBIAN_FRONTEND=noninteractive apt-get purge -y slapd
rm -rf /var/lib/ldap /etc/ldap/slapd.d

验证卸载干净:

dpkg -l | grep -E "fusiondirectory|slapd" | grep ^ii | wc -l

实测回显:

0

十、参考链接