Limbas 7.1.15 配置参数详解
Limbas 7.1.15 配置体系四层详解实测:include_db.lib 数据库连接与 LMB_ENC_KEY、lmb_umgvar 143 项全局配置(14 个分类与关键变量真实值)、php.ini(apache/cli 差异)、Apache vhost 与 .htaccess,含 Web 配置中心与 SQL 直改的生效验证回显
Limbas 7.1.15 配置参数详解
目标:把 Limbas 7.1.15 的全部配置面(数据库连接文件、UMGVAR 143 项全局配置、PHP 运行参数、Apache 虚拟主机与 .htaccess)逐项讲清「在哪改、默认值是什么、改了影响什么」。所有参数值与生效验证均来自真实服务器 limbas-server(Ubuntu 22.04.5 + Apache 2.4.52 + PHP 8.3.36 + PostgreSQL 14.24,安装路径 /opt/limbas/openlimbas-7.1.15,库 limbasdb)实测。安装过程见《Ubuntu 22.04 安装 Limbas 7.1.15 指南》,日常命令见《Limbas 7.1.15 常用运维命令与排障实操》。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS(x86_64),主机名
limbas-server,IP10.89.59.2 - 应用:Limbas(openlimbas)7.1.15,安装目录
/opt/limbas/openlimbas-7.1.15,Web 端口 80 - PHP:8.3.36(PPA ondrej/php),Apache mod_php 形态(php.ini 路径
/etc/php/8.3/apache2/php.ini) - 数据库:PostgreSQL 14.24,库
limbasdb(152 张表),应用账号limbas/q1w2e3r4 - 管理员:
admin/q1w2e3r4(演示账号)
二、前置条件
- 已完成 7.1.15 部署且能登录(Web 入口
http://limbas-server/); - 具备服务器 root 权限(改 php.ini/vhost)与数据库访问权限(改 UMGVAR/include_db.lib):
PGPASSWORD=q1w2e3r4 psql -h 127.0.0.1 -U limbas -d limbasdb -tAc "SELECT count(*) FROM lmb_umgvar"
143
- 改前建议先做一次库备份(
pg_dump方法见运维篇)。
三、参数查看与修改方式
3.1 Web 配置中心(推荐入口)
登录后访问系统变量页(实测回显):
curl -s -b /tmp/cookies.txt -o /tmp/umgvar.html -w "HTTP %{http_code} size=%{size_download}\n" \
"http://localhost/index.php?action=setup_umgvar"
HTTP 200 size=111871
该页按 14 个分类渲染全部 UMGVAR 项(表单字段类型由 field_type 列决定:文本/下拉/数字等),修改即写回 lmb_umgvar.norm 列,无需重启 Apache 即时生效。
3.2 SQL 直读直改
配置真值全部存于 lmb_umgvar(列:category sort id beschreibung field_type field_options form_name norm,值在 norm 列)。以修改登录页标题(变量 110「custom title %s」)为例,实测命令与回显:
PGPASSWORD=q1w2e3r4 psql -h 127.0.0.1 -U limbas -d limbasdb -c \
"UPDATE lmb_umgvar SET norm='Limbas-Server - %s' WHERE id=110;"
curl -s http://localhost/ | grep -o "<title>[^<]*</title>"
UPDATE 1
<title>Limbas-Server - Login</title>
改回原值同样两步(UPDATE 1 + <title>Limbas-Demo - Login</title>,实测),证明 SQL 路径与 Web 路径等价、即时生效。
⚠️ 注意:
lmb_umgvar的分类名(category 数字)经语言表映射渲染,不同语言下显示名不同;本文一律以id+beschreibung(英文描述原文)定位,避免歧义。
3.3 文件层配置
| 文件 | 管什么 | 生效方式 |
|---|---|---|
dependent/inc/include_db.lib | 数据库连接、加密密钥 | 即时(每请求读取) |
/etc/php/8.3/apache2/php.ini | PHP 运行时(上传/内存/超时) | systemctl reload apache2 |
/etc/apache2/sites-enabled/limbas.conf | 站点根、日志 | systemctl reload apache2 |
public/.htaccess | URL 重写、认证透传 | 即时(AllowOverride All 前提下) |
四、参数总览
Limbas 的配置面分四层,互相独立:
| 层 | 位置 | 项数 | 典型内容 |
|---|---|---|---|
| 应用全局层(UMGVAR) | 数据库表 lmb_umgvar | 143 | 安装路径、备份路径、默认语言/时区、索引策略、安全开关 |
| 数据库连接层 | 文件 include_db.lib | 12+1 | 库类型/账号/口令/主机/端口/字符集/加密密钥 |
| PHP 运行层 | php.ini(apache 与 cli 两份) | 4 关键 | memory_limit、upload_max_filesize、post_max_size、max_execution_time |
| Web 服务层 | vhost + .htaccess | — | DocumentRoot、重写规则、Authorization 透传、独立日志 |
五、核心参数分类详解
5.1 数据库连接:include_db.lib
实测全文(/opt/limbas/openlimbas-7.1.15/dependent/inc/include_db.lib):
$DBA['DB']='postgres'; $DBA['DBCUSER']='limbas'; $DBA['DBCPASS']='q1w2e3r4'; $DBA['DBCNAME']='limbasdb';
$DBA['DBUSER']='limbas'; $DBA['DBPASS']='q1w2e3r4'; $DBA['DBNAME']='limbasdb'; $DBA['DBSCHEMA']='public';
$DBA['DBHOST']='localhost'; $DBA['LMHOST']='localhost'; $DBA['PORT']='5432'; $DBA['CHARSET']='UTF-8';
$DBA['ODBCDRIVER']='PDO';
define('LMB_ENC_KEY','bc22c1447d60013887b7da62e48297e2773c27a283924bf48701c9d1d1f39b58');
逐项说明:
DB:库类型,取值postgres(本环境);文件注释还列出maxdb76 | masbd77 | postgres | ingres历史支持值,MySQL/MSSQL/Oracle 走 PDO/ODBC 路线(官方 README 支持清单);DBCUSER/DBCNAME与DBUSER/DBNAME两组:连接期与运行期账号(本环境同值limbas/limbasdb);DBSCHEMA='public':Limbas 把所有表放单一 schema;DBHOST='localhost' + PORT='5432':走 TCP 本机(对应pg_hba.conf的host all all 127.0.0.1/32 scram-sha-256行,实测);CHARSET='UTF-8':应用侧字符集,与库编码 UTF8 一致(psql -l实测);ODBCDRIVER='PDO':数据访问走 PHP PDO(php8.3-pgsql扩展),不依赖 unixODBC DSN;LMB_ENC_KEY:64 位十六进制加密密钥,安装时生成,用于应用内加密字段;泄露等于库上加密失效,生产环境须按密钥管理,权限 600、属主 www-data。
5.2 UMGVAR 分类体系
143 项按 category 分 14 组(实测分布回显):
PGPASSWORD=q1w2e3r4 psql -h 127.0.0.1 -U limbas -d limbasdb -c \
"SELECT category, count(*) FROM lmb_umgvar GROUP BY category ORDER BY category;"
category | count
----------+-------
1893 | 21
1894 | 1
1895 | 4
1896 | 13
1898 | 9
1899 | 16
1900 | 13
1995 | 5
2700 | 7
2818 | 29
2819 | 9
2820 | 7
2935 | 4
2995 | 5
(14 rows)
按各分类成员变量的 beschreibung 归纳(实测):
| category | 项数 | 内容域(按成员变量归纳) |
|---|---|---|
| 1893 | 21 | 安装/全局默认:路径、公司名、新用户的语言/时区/布局/分页/日志级别、标题、更新检查 |
| 1894 | 1 | 调度路径:id 59 crontab 路径 |
| 1895 | 4 | 字体/字符集:默认字体、字号、charset、multiframe |
| 1896 | 13 | 列表与交互:锁定时长、最大行数、modal 尺寸/打开方式、刷新间隔 |
| 1898 | 9 | 检索索引:索引文件类型、大小写敏感、Detail-Level、执行时限 |
| 1899 | 16 | DMS/媒体文件:mimetype 校验、EXIF、重名处理、下载方式、md5 去重 |
| 1900 | 13 | 安全/认证/会话:代理白名单、HTTP 认证方式、口令散列算法、加密方法、会话保存时长 |
| 1995 | 5 | 诊断/调试:messages.log、错误解析开关、明文口令存储开关 |
| 2700 | 7 | 日历/时间显示:周起始日、FullCalendar 视图模式、时段粒度 |
| 2818 | 29 | 系统内部:jsgraphics、html2text、长字段上限、上传/POST 总量上限、表 ID 分配区间 |
| 2819 | 9 | ImageMagick/缩略图:路径、PDF 处理、缩略图尺寸 |
| 2820 | 7 | Ghostscript/PDF 输出:分辨率、位深、兼容级别、压缩 |
| 2935 | 4 | 打印:lpstat/lpoptions/lp 命令参数、打印机缓存 |
| 2995 | 5 | PostgreSQL 全文检索:启用开关、pg_ts_config 语言、headline、tsvector 瘦身 |
5.3 安装与全局默认(1893 组关键变量)
实测值(SELECT id, beschreibung, norm FROM lmb_umgvar WHERE id IN (...) 照抄):
| id | 描述(原文) | 实测 norm 值 | 说明/建议 |
|---|---|---|---|
| 3 | absolute path of installation | /srv/www/htdocs/projects/openlimbas/dependent/ | 出厂默认路径,装机后应改为本机真实 dependent/ 路径 |
| 21 | default path of Backup | localhost:////srv/www/htdocs/projects/openlimbas/dependent/BACKUP/ | 备份目的地;前缀 localhost:// 为「主机+四斜杠绝对路径」格式 |
| 27 | Base URL of installation | (空) | 留空自动探测;反向代理/HTTPS 场景应显式设置 |
| 110 | custom title %s | Limbas-Demo - %s | 登录页标题模板(3.2 已实测改动生效) |
| 111 | check for updates (0/1) | 0 | 更新检查开关,内网建议保持 0 |
| 45 | default layout for new users | comet | 新用户默认布局 |
| 46 | default count of datasets per page | 30 | 列表每页条数 |
| 47 | default uloadsize for new users (MB) | 5 | 每用户默认上传额度(MB),受 PHP 上限约束 |
| 49 | default language for new users | 1 | 指向 lmb_lang.language_id |
| 72 | default dateformat (1=german;2=US;3=fra) | 1 | 德语日期格式 dd.mm.yyyy |
| 73 | default timezone for new users | Europe/Berlin | 中国部署建议改 Asia/Shanghai |
| 74 | default setlocale for new users | de_DE | 与语言联动 |
| 78 | default numberformat for currency | 2,',','.' | 千分位点号、小数逗号(德式) |
| 86 | default loglevel (0=none;1=simple;2=full) | 1 | 应用内操作日志级别 |
| 134 | show update page … (background/foreground) | foreground | 更新提示呈现方式 |
⚠️ 注意:id 3 与 21 出厂值指向
/srv/www/htdocs/projects/openlimbas/(官方构建机路径)。本环境实测装机后 Web 备份功能可用,说明安装向导已按实际路径校正;若手工部署(如本文方案 B)务必核对这两项,否则备份/DMS 落盘失败。
5.4 上传与容量相关(跨层联动)
上传大小受三层共同约束,取最小值生效(实测默认值):
| 层 | 参数 | 实测默认 | 调整建议 |
|---|---|---|---|
| PHP | upload_max_filesize | 2M | 按业务调大 |
| PHP | post_max_size | 8M | ≥ upload 值 |
| UMGVAR | id 76 max size of upload/post submits (MB) | (空=不额外限制) | 显式设上限更可控 |
| UMGVAR | id 47 每用户默认上传额度 | 5(MB) | 按用户配额 |
| 用户表 | lmb_userdb.uploadsize(admin 实测 104857600) | 100MB | 按用户覆盖 |
💡 技术拓展:重名文件处理策略(id 53「handle dublicate files」)可选三档——
取值 行为 适用 rename(本文实测默认) 自动改名保留双方 不允许丢文件的台账 overwrite 覆盖旧文件 以最新版为准的文档位 versioning 生成版本链 需回溯历史的正式文档 配合 id 64「use md5 for files and dublicates」=1(实测开启)做内容级判重。
5.5 检索与索引(1898 + 2995 组)
- id 15 files to index(
pdf,text,html或 1=全部)、id 16 大小写敏感、id 28 Detail-Level、id 31 索引最大执行分钟(实测60)、id 57 忽略短词、id 62 非字母数字占比阈值; - id 124 启用 PostgreSQL 原生全文检索替代 Limbas 自研索引(实测
0关闭)、id 125 pg_ts_config 语言(可german/german,english/all)、id 126 DMS 用 PG headline、id 127 tsvector 去词位(省空间但失去短语检索)。
💡 技术拓展:全文检索引擎二选一——
方案 特点 取舍 Limbas 原生索引(默认,id 124=0) 跨库类型统一(MySQL/Oracle 也能用),配合 INDIZE 作业 中文分词弱,大库慢 PostgreSQL tsvector(id 124=1) PG 原生 GIN 加速、headline 上下文 仅限 PG,语言配置需与数据匹配 本环境 PostgreSQL 后端,两者皆可;默认保持原生以兼容 INDIZE 作业链路。
5.6 安全与认证(1900 + 1995 组)
实测关键值:id 115 口令散列算法=1(对应 PHP PASSWORD_DEFAULT,即 bcrypt——库内 lmb_userdb.passwort 实测均为 $2y$10$… 前缀);id 154 会话保存分钟=1440;id 37「save clear password」明文口令存储开关(生产必须关);id 38 允许代理服务器、id 95/96 HTTP 认证方式(default/htaccess、basic/digest)、id 123 数据加密方法、id 129 PGP 文件加密、id 141 超管越权开关。
⚠️ 注意:
LMB_ENC_KEY(include_db.lib)+ id 123/129 构成应用层加密链,换密钥等于旧密文不可解,迁移服务器时该文件必须原样带走。
5.7 PHP 运行参数(apache 与 cli 两份)
/etc/php/8.3/apache2/php.ini 实测关键行:
max_execution_time = 30
memory_limit = 128M
post_max_size = 8M
upload_max_filesize = 2M
CLI 形态(php -i 实测,Web 备份/索引作业走 cron.php/cli.php 时生效的是这套):
display_errors => Off => Off
max_execution_time => 0 => 0
memory_limit => -1 => -1
date.timezone => UTC => UTC
session.gc_maxlifetime => 1440 => 1440
差异解读:Web 请求受 30 秒/128M 约束,CLI 作业不限时不限内存(-1/0),因此大表索引、全量备份放 CLI/cron 跑更稳;date.timezone 未显式设置时 CLI 落 UTC,与 UMGVAR id 73(Europe/Berlin)分属两层——前者影响 PHP 函数默认时区,后者影响用户界面显示。
5.8 Apache vhost 与 .htaccess
vhost 实测全文见《Ubuntu 22.04 安装 Limbas 7.1.15 指南》4.7 节,要点:DocumentRoot 只暴露 public/、AllowOverride All 必须开(否则包内 .htaccess 失效、所有页面 404)、独立 limbas_error.log/limbas_access.log。
public/.htaccess 实测全文:
Satisfy any
Require all granted
<IfModule mod_rewrite.c>
RewriteEngine on
#RewriteBase /
RewriteCond %{REQUEST_URI} !(assets|localassets)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
</IfModule>
<IfModule mod_env.c>
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
</IfModule>
逐条:Satisfy any + Require all granted 放行入口目录;<IfModule mod_rewrite.c> 块内三条 RewriteCond 把「URI 不含 assets/localassets、且不是实体文件/目录」的请求统一经 RewriteRule ^(.*)$ index.php [L,QSA] 重写入 index.php(QSA 保留查询串);<IfModule mod_env.c> 的 SetEnvIf 把 Authorization 头透传给 PHP,是 REST 接口(/admin/jobs 等)认证可用的前提。
六、生产配置模板
适用场景:16GB 内存、NVMe SSD、50 人内网使用、PostgreSQL 同机部署。逐项给出与出厂默认的差异:
; /etc/php/8.3/apache2/php.ini(改后 systemctl reload apache2)
memory_limit = 512M
max_execution_time = 120
post_max_size = 128M
upload_max_filesize = 100M
date.timezone = Asia/Shanghai
-- lmb_umgvar 关键项(SQL 直改或 Web 配置中心等价)
UPDATE lmb_umgvar SET norm='/opt/limbas/openlimbas-7.1.15/dependent/' WHERE id=3;
UPDATE lmb_umgvar SET norm='localhost:////opt/limbas/backup/' WHERE id=21;
UPDATE lmb_umgvar SET norm='http://limbas-server/' WHERE id=27;
UPDATE lmb_umgvar SET norm='Asia/Shanghai' WHERE id=73;
UPDATE lmb_umgvar SET norm='2' WHERE id=72;
UPDATE lmb_umgvar SET norm='100' WHERE id=47;
UPDATE lmb_umgvar SET norm='0' WHERE id=37;
配套动作:备份目录 mkdir -p /opt/limbas/backup && chown www-data:www-data /opt/limbas/backup;include_db.lib 权限 600、属主 www-data;LMB_ENC_KEY 入密钥管理。该模板把上传上限拉到 100M(DMS 场景)、执行时限 120s(大列表导出)、内存 512M(mod_php 并发 10 路 × 50M 峰值余量),日期/时区本地化,明文口令存储关闭。
七、常见问题
Q1: 改了 php.ini 上传限制但网页仍报文件过大?
A: 三层取小(5.4):确认改的是 /etc/php/8.3/apache2/php.ini(不是 cli 那份)、已 systemctl reload apache2,并核对 UMGVAR id 76/47 与用户 uploadsize 是否更低。
Q2: 备份/DMS 落盘报路径错误?
A: 检查 id 3/id 21 是否仍是出厂值 /srv/www/htdocs/projects/openlimbas/(5.3 ⚠️),以及目标目录是否存在且属主 www-data(实测 Web 备份产物属主即 www-data)。
Q3: 全站 404 或登录 POST 无效?
A: 多为 AllowOverride All 未生效导致 .htaccess 被忽略:apache2ctl -M | grep rewrite 确认 rewrite_module 已加载,vhost <Directory> 段含 AllowOverride All,然后 systemctl reload apache2。
Q4: REST 接口收不到 Authorization 头?
A: .htaccess 的 SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 行必须存在(5.8 实测),缺失时 PHP 侧 $_SERVER['HTTP_AUTHORIZATION'] 为空。
Q5: 中文界面日期显示成 dd.mm.yyyy? A: 该格式来自 id 72(1=german)与 id 78 德式数字格式,属新用户默认值;已存在用户按各自偏好存储,改 UMGVAR 后需以新账号或重置用户偏好验证。
八、参考链接
- 站内姊妹篇:《Limbas 介绍与选型指南》《Ubuntu 22.04 安装 Limbas 7.1.15 指南》《Limbas 7.1.15 常用运维命令与排障实操》
- 官方文档:http://www.limbas.org/;仓库:https://github.com/limbas/limbas
- PHP 配置参考:https://www.php.net/manual/zh/ini.list.php
- PostgreSQL 全文检索(pg_ts_config):https://www.postgresql.org/docs/14/textsearch-controls.html