iTop 3.3.0 配置参数详解
逐项详解 iTop 3.3.0 config-itop.php 核心参数与修改机制,实测时区调整、扩展声明与 CLI 装载全链路,附生产配置模板。
iTop 3.3.0 配置参数详解
iTop 的全部运行期配置集中在一个 PHP 数组文件 conf/production/config-itop.php 中,由安装向导/无人值守安装器生成;扩展与数据模型变更则通过"重新编译"落入 env-production/。本文基于 iTop 3.3.0 实测,逐类详解核心参数、修改方法(手工编辑与向导两条路径)与扩展声明机制,并附生产配置模板。
一、环境信息
| 项目 | 值 |
|---|---|
| 操作系统 | Ubuntu 22.04 |
| Web 服务器 | Apache/2.4.52 (Ubuntu),监听 8130 |
| 数据库 | MariaDB 10.6.23 |
| PHP | PHP 8.2.35 (cli) (NTS) |
| iTop 版本 | 3.3.0(/var/www/html/itop) |
| 配置文件 | /var/www/html/itop/conf/production/config-itop.php |
| 访问地址 | http://10.89.58.1:8130/itop/ |
二、前置条件
- 已按《Ubuntu 22.04 安装 iTop 3.3.0 指南》完成安装并可正常登录;
- 具备服务器 root 与 iTop admin 账号;
- 理解配置文件属主:Web 进程(www-data)必须可读,文件默认权限 440。
三、参数查看与修改
3.1 文件位置与权限
安装器生成的配置文件默认只读:
-r--r----- 1 www-data www-data 11751 Nov 2 22:26 config-itop.php
手工修改需临时放开写权限,改完恢复只读(实测流程):
chmod 644 /var/www/html/itop/conf/production/config-itop.php
# ...编辑...
chmod 440 /var/www/html/itop/conf/production/config-itop.php
3.2 手工修改实测(时区)
安装后默认 'timezone' => 'Europe/Paris'。实测将其改为上海时区并验证:
sed -i "s/'timezone' => 'Europe\/Paris'/'timezone' => 'Asia\/Shanghai'/" \
/var/www/html/itop/conf/production/config-itop.php
curl -s -o /dev/null -w "%{http_code}\n" http://10.89.58.1:8130/itop/pages/UI.php
# 200
改后第 241 行:'timezone' => 'Asia/Shanghai',,站点正常,工单/日志时间按新时区显示。绝大多数参数(语言、时区、日志开关、显示条数等)手工编辑后立即生效,无需重启 Apache。
3.3 向导与响应文件
两类参数不能只改配置文件:
- 影响数据模型/模块集合的参数(安装扩展、改 URL、换数据库账号):必须重跑 Setup 向导(
/itop/setup/wizard.php,选"更新"模式)或无人值守安装器,向导会重新编译env-production/并回写 config-itop.php; - 向导每次运行都会把本次全部选择落盘为响应文件
log/install-<日期>.xml(口令脱敏为**removed**),它既是审计记录,也是 CLI 重装的参数模板。
实测:执行过一次 update 模式重编译后,手工改过的 timezone 参数被保留(安装器合并既有配置,不整体覆盖),但文件属主会被重置为 root,需再次 chown www-data:www-data(见 8.2)。
四、参数总览
config-itop.php 是一个 $aConfig = array(...) 大数组,实测包含约 60 个全局参数与按模块分组的扩展参数数组(authent-cas、authent-ldap、itop-attachments、itop-backup 等),文件末尾 $MyModules = array(); 列出加载的模块。全局参数按职责分为八类,详见下文。
五、核心参数分类详解
5.1 数据库与 URL
| 参数 | 实测值 | 说明 |
|---|---|---|
| db_host | localhost | 数据库主机 |
| db_user / db_pwd | root / 明文口令 | 连接账号;口令明文存储,务必收紧文件权限 |
| db_name | itop | 库名 |
| db_subname | '' | 表前缀(多实例共库时用) |
| app_root_url | http://10.89.58.1:8130/itop/ | 站点根 URL,改此值必须重跑向导 |
| source_dir | datamodels/2.x/ | 数据模型源目录 |
| behind_reverse_proxy | false | 反代后取 X-Forwarded-* 头,HTTPS 终结于代理时设为 true |
| secure_connection_required | false | 强制 HTTPS 跳转 |
5.2 语言、时区与格式
| 参数 | 实测值 | 说明 |
|---|---|---|
| default_language | ZH CN | 界面默认语言 |
| timezone | Asia/Shanghai(改后) | 显示与调度时区,参考 PHP 时区表 |
| date_and_time_format | date=Y-m-d time=H:i:s | 按语言键覆盖日期时间格式 |
| csv_file_default_charset | ISO-8859-1 | CSV 导出编码,中文环境建议改 UTF-8 |
5.3 安全与认证
| 参数 | 实测值 | 说明 |
|---|---|---|
| encryption_key | 64 位十六进制 | 敏感字段加密密钥,安装时随机生成,迁移须带走 |
| encryption_library | Sodium | 加密后端(可选 OpenSSL) |
| password_hash_algo | 2y | bcrypt 口令散列 |
| allowed_login_types | form|external|basic|token | 允许的登录方式 |
| session_name | iTop | 会话 Cookie 名 |
| access_mode | 3 | 1=只读 2=只写 3=读写(停机公告时用 1) |
| access_message | iTop is temporarily frozen... | 非读写模式的公告文案 |
模块级认证数组:authent-cas(cas_host/cas_port/cas_version 等)、authent-ldap(uri、base_dn、user_query、start_tls、servers 多服务器列表)在安装后为占位默认值,启用对应认证模式时按注释填写即可,无需改代码。
5.4 日志与调试
| 参数 | 实测值 | 说明 |
|---|---|---|
| log_global | true | 全局日志开关 |
| log_issue / log_notification / log_web_service | true | 工单变更/通知/WS 调用审计日志 |
| log_params(data/log/) | - | 日志级别与文件在 data/log 配置,详见运维篇 |
5.5 邮件
| 参数 | 实测值 | 说明 |
|---|---|---|
| email_transport | PHPMail | 可选 SMTP(配 email_smtp_* 参数) |
| email_default_sender_address / label | 空 | 出站默认发件人,生产必配 |
| email_asynchronous | false | true 时经后台任务异步发信(配合 cron.php) |
5.6 性能与缓存
| 参数 | 实测值 | 说明 |
|---|---|---|
| apc_cache.enabled | true | PHP APCu 对象缓存(装了 php8.2-apcu 自动开启) |
| apc_cache.query_ttl | 3600 | OQL 查询缓存 TTL |
| optimize_requests_for_join_count | true | 列表页 JOIN 计数优化 |
| fast_reload_interval / standard_reload_interval | 60 / 300 | 页面自动刷新周期(秒) |
| cron_max_execution_time | 600 | 后台任务单次最长执行时间 |
| php_path | php | CLI 内部调用用的 PHP 路径,多版本共存建议改为 php8.2 |
5.7 UI 与交互
| 参数 | 实测值 | 说明 |
|---|---|---|
| max_display_limit / min_display_limit | 30 / 20 | 列表每页条数上下限 |
| shortcut_actions | UI:Menu:Modify,... | 对象页快捷按钮 |
| mentions.allowed_classes | '@' => 'Person' | CaseLog @ 提及自动补全的类 |
| inline_image_max_display_width | 250 | 内嵌图片显示宽度 |
| graphviz_path | /usr/bin/dot | 影响关系图渲染器 |
| online_help | http://www.combodo.com/itop-help | 在线帮助跳转地址 |
5.8 备份扩展参数(itop-backup)
实测生成的模块级数组:
'itop-backup' => array (
'mysql_bindir' => '', // mysqldump 不在 PATH 时指定
'week_days' => 'monday, tuesday, wednesday, thursday, friday',
'time' => '23:30', // 每日备份时刻(cron 时区)
'retention_count' => 5, // 保留份数
'enabled' => true,
'itop_backup_incident' => '', // 备份失败时通知的 CI
),
该配置由后台任务 BackupExec 消费,实测任务计划时刻与 time=23:30 一致(见运维篇 cron 实测)。
六、生产配置模板
在默认配置基础上,生产环境建议显式调整(实测可用):
'timezone' => 'Asia/Shanghai',
'default_language' => 'ZH CN',
'csv_file_default_charset' => 'UTF-8',
'app_root_url' => 'https://itop.example.com/itop/', // 改后必须重跑向导
'behind_reverse_proxy' => true,
'secure_connection_required' => true,
'email_transport' => 'SMTP',
'email_default_sender_address' => 'itop@example.com',
'email_default_sender_label' => 'iTop 服务台',
'php_path' => '/usr/bin/php8.2',
'log_issue' => true,
'cron_max_execution_time' => 600,
修改流程:备份 config-itop.php → chmod 644 → 编辑 → chmod 440 → 属主确认 www-data → 涉及 URL/模块的改动重跑向导 → curl 验证 200。
七、扩展机制实测
iTop 的定制以扩展为载体。实测从零构建并安装一个最小扩展 combodo-test-ext,完整走通"声明 → 编译 → 注册"链路。
7.1 扩展声明文件
扩展放入 /var/www/html/itop/extensions/combodo-test-ext/,extension.xml 必须使用 store 格式(实测旧式 <extension_root> 根节点会被安装器静默忽略):
<?xml version="1.0" encoding="UTF-8"?>
<extension format="1.0">
<extension_code>combodo-test-ext</extension_code>
<version>1.0.0</version>
<label><![CDATA[Test Extension]]></label>
<description><![CDATA[Minimal test extension]]></description>
<mandatory>false</mandatory>
<more_info_url></more_info_url>
</extension>
7.2 模块声明文件
仅有 extension.xml 不够——模块发现要求目录内存在 module.<code>.php(源码 setup/modulediscovery.class.inc.php 以正则 ^module\.(.*).php$ 识别)。实测缺失该文件时安装器回显 installed! 但什么都不装。补齐后:
<?php
SetupWebPage::AddModule(
__FILE__,
"combodo-test-ext/1.0.0",
[
"label" => "Test Extension",
"category" => "customizations",
"dependencies" => [],
"mandatory" => false,
"visible" => true,
"datamodel" => [],
"dictionary" => [],
"data.struct" => [], // 缺失时报 exit 255:
"data.sample" => [], // Error: Module 'combodo-test-ext/1.0.0': missing argument 'data.struct'
"doc.manual_setup" => "",
"doc.more_information" => "",
]
);
实测键不全时报错并中止:
Error: Module 'combodo-test-ext/1.0.0': missing argument 'data.struct'
Encountered stopper issues. Aborting...
7.3 CLI 装载扩展
--installation_xml 模式下扩展清单只认 installation.xml 已知模块,自定义扩展会被忽略。实测可行做法:参数文件 <mode> 改为 update,把全部模块(含新扩展,共 58 项)显式写入 selected_modules,不带 --installation_xml 执行:
cd /var/www/html/itop/setup/unattended-install
php8.2 unattended-install.php --param-file=/root/itop-update2.xml
# ...
installed!
Restart the webserver in order to get the updated data model
7.4 编译产物验证
安装后扩展被拷贝进编译目录并注册到自动加载:
/var/www/html/itop/env-production/combodo-test-ext/
├── datamodel.combodo-test-ext.xml
├── extension.xml
└── module.combodo-test-ext.php
# env-production/autoload.php 第 183 行起:
'combodo-test-ext' =>
'root_dir' => $sCurrEnv.'/combodo-test-ext',
随后 chown www-data:www-data conf/production/config-itop.php 并重启 Apache,站点 HTTP 200 正常。
八、常见问题
8.1 改参数不生效
先确认改的是 conf/production/ 下生产环境配置(多环境实例各有 conf/<env>/);涉及数据模型的参数(URL、模块集合)必须重跑向导编译后才生效。
8.2 重跑安装/更新后站点 500
安装器以 root 重写 config-itop.php(root:root 440),www-data 不可读即抛 ConfigException: Could not read configuration file。固定动作:每次安装器运行后执行 chown www-data:www-data /var/www/html/itop/conf/production/config-itop.php。
8.3 扩展装了没反应
按序检查:extension.xml 是否为 <extension format="1.0"> 根节点;目录内是否有 module.<code>.php 且 AddModule 键完整;参数文件 selected_modules 是否包含该模块;env-production/<code>/ 是否生成。