简介:iTop是一款基于CMDB与ITIL最佳实践的开源IT服务管理工具,面向企业IT运维人员、系统管理员及希望搭建服务台与资产管理体系的团队,帮助解决IT资产混乱、服务流程不规范、变更与问题跟踪困难等问题。资源包共约2000个文件,以2128个php源码、313个png图片、256个js脚本、115个xml配置、82个css样式及twig模板、yml配置等为主,涵盖Web应用前端、后端逻辑与安装部署文件,压缩包约11.44MB。已有1974人学习下载。通过该资源可获取完整的iTop源码结构,理解CMDB关系建模、服务请求与变更管理、自动化工作流、报表分析等模块的实现方式,并借助INSTALL与LICENSE文件了解部署要求与开源许可,适合用于二次开发、功能定制与ITSM流程落地参考。
1. 从一台干净的 Linux 开始:iTop 装不上多半是 PHP 版本在作怪
上周帮一个朋友处理他公司内部那套 ITSM 系统,现象很典型:浏览器打开安装向导,第一步环境检查就红了一片,提示 PHP 版本不满足。他之前照着某篇两年前的帖子装的,PHP 还停在 7.2,而 iTop 从 3.x 开始对 PHP 的要求已经往上提了。这类问题我见过太多次,不是 iTop 难装,是很多人把「能跑起来」和「跑得稳」混为一谈,版本没对齐,后面 CMDB 数据一多就开始出玄学问题。
iTop 是一套开源的 IT 服务管理工具,覆盖工单、事件、变更、配置管理这些模块,适合中小团队自建内部 IT 运维台。它本质是个 PHP 应用,跑在 Web 服务器加数据库上,所以安装的核心就三件事:PHP 版本和扩展、数据库、Web 服务器配置。这篇笔记按我实际部署的顺序走一遍,从环境清单到装完验证,中间把踩过的坑都摊开讲。如果你正卡在环境检查那一步,或者装完登录进去一片空白,往下看应该能对上号。
2. 环境清单与版本选择:PHP、数据库、Web 服务器怎么搭
2.1 先定版本,再动手
iTop 的版本和 PHP 版本是强绑定的,选错了后面全是返工。我一般按这个对照关系来定:
| iTop 版本 | 推荐 PHP | 数据库 | Web 服务器 |
|---|---|---|---|
| 3.1.x | PHP 8.1 / 8.2 | MySQL 8.0 / MariaDB 10.6+ | Apache 2.4 / Nginx |
| 3.0.x | PHP 8.0 / 8.1 | MySQL 8.0 / MariaDB 10.5+ | Apache 2.4 / Nginx |
| 2.7.x | PHP 7.4 | MySQL 5.7 / MariaDB 10.3+ | Apache 2.4 |
这份对照是我自己装机时整理的,核心原则是「PHP 跟着 iTop 走,数据库跟着 PHP 走」。PHP 8.1 是目前比较稳的选择,8.2 也能跑,但个别扩展在老发行版上要额外装源。数据库我倾向 MariaDB,和 MySQL 协议兼容,装起来省事,10.6 以上对 PHP 8 的支持更顺。
提示:不要用发行版自带的 PHP 就直接上,很多老系统的默认源里 PHP 版本偏低,装之前先
php -v看一眼。
2.2 依赖扩展一个都不能少
iTop 对环境检查比较严,缺一个扩展就卡在向导第一步。常见做法是把下面这批一次性装齐:
# 以 Debian/Ubuntu 系为例,安装 PHP 8.1 及 iTop 必需扩展 sudo apt update sudo apt install -y php8.1 php8.1-cli php8.1-mysql php8.1-mbstring \ php8.1-xml php8.1-curl php8.1-gd php8.1-zip php8.1-ldap \ php8.1-soap php8.1-intl php8.1-opcache这里每个扩展都有用途:mysql连数据库,mbstring和intl处理多语言字符,gd画图表,ldap对接目录服务,soap走部分集成接口,zip用于导入导出。少装intl是最常见的翻车点,向导会直接报错但不一定说清是哪个。
装完用一条命令确认:
php -m | grep -E 'mysql|mbstring|xml|curl|gd|zip|ldap|soap|intl'输出里每个名字都在,才算过关。如果某个没出现,回去补装对应包再重启 Web 服务。
2.3 数据库和 Web 服务器的准备
数据库这边,装完 MariaDB 后建一个专用库和账号,别用 root 直接连:
-- 创建 iTop 专用数据库和账号 CREATE DATABASE itop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'itopuser'@'localhost' IDENTIFIED BY '换成你的强密码'; GRANT ALL PRIVILEGES ON itop.* TO 'itopuser'@'localhost'; FLUSH PRIVILEGES;字符集一定用utf8mb4,iTop 存中文工单内容时,用utf8会在某些生僻字上出问题。账号权限只给这一个库,符合最小权限原则。
Web 服务器如果用 Apache,确认mod_rewrite开了,iTop 的 URL 重写依赖它:
sudo a2enmod rewrite sudo systemctl restart apache2如果用 Nginx,后面配置里要单独写try_files规则,这个放到部署那章讲。到这一步,环境底座就算搭好了,接下来才是把 iTop 本体放进去。
3. 下载与部署 iTop:文件放哪、权限怎么给
3.1 拿到安装包并解压到位
iTop 的安装包从官方发布渠道获取,下载下来是个 zip。我一般放在 Web 根目录下一个独立目录里,不和其他站点混:
# 假设 Web 根目录是 /var/www/html cd /var/www/html sudo mkdir -p itop # 把下载好的安装包解压到 itop 目录 sudo unzip ~/itop-3.1.x.zip -d /var/www/html/itop解压后目录里应该能看到setup、web、conf这几个关键目录。web是应用入口,conf放配置文件,setup是安装向导。如果解压出来多了一层同名目录,把里层内容挪上来,别让入口路径变成/itop/itop-3.1.x/web,那样访问起来别扭。
3.2 权限设置:别图省事给 777
这是血泪经验最多的地方。很多人装不上就直接chmod -R 777,装完忘了改回来,等于把整个系统敞开。正确做法是让 Web 服务用户拥有必要目录的写权限:
# 假设 Web 服务用户是 www-data sudo chown -R www-data:www-data /var/www/html/itop # 目录 755,文件 644,保持常规权限 sudo find /var/www/html/itop -type d -exec chmod 755 {} \; sudo find /var/www/html/itop -type f -exec chmod 644 {} \; # 只给 conf 和 log 目录写权限 sudo chmod -R 775 /var/www/html/itop/conf sudo chmod -R 775 /var/www/html/itop/log逻辑是:代码文件只读,配置和日志目录可写。安装向导需要往conf写配置文件,运行时要往log写日志,这两个给够就行。装完之后可以把conf的写权限再收紧,但安装阶段先留着。
3.3 Web 服务器指向与重写规则
Apache 的话,加一个虚拟主机或者直接用默认站点指向web目录:
<VirtualHost *:80> ServerName itsm.example.local DocumentRoot /var/www/html/itop/web <Directory /var/www/html/itop/web> Options FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/itop_error.log CustomLog ${APACHE_LOG_DIR}/itop_access.log combined </VirtualHost>AllowOverride All是让 iTop 自带的.htaccess生效,重写规则靠它。Nginx 的话对应配置长这样:
server { listen 80; server_name itsm.example.local; root /var/www/html/itop/web; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; } }Nginx 这边try_files是关键,少了它,iTop 的页面跳转会 404。改完配置记得nginx -t测一下语法再 reload,别直接重启把线上其他站点带崩。
4. 跑安装向导:数据库参数和几个必填项
4.1 进入向导并过环境检查
浏览器打开你的域名或 IP,iTop 会自动跳到setup向导。第一步是环境检查,会逐项列出 PHP 版本、扩展、目录权限。前面环境搭对了,这一步应该全绿。如果有红项,按提示补,别硬点下一步,硬过后面会出更奇怪的错。
这一步常见的一个坑是时区没设,PHP 会警告。在php.ini里补一行:
date.timezone = Asia/Shanghai改完重启 PHP-FPM 或 Apache 生效。
4.2 数据库连接参数怎么填
向导第二步要填数据库信息,对应前面建的库和账号:
| 参数 | 填什么 |
|---|---|
| 服务器 | localhost |
| 数据库名 | itop |
| 用户名 | itopuser |
| 密码 | 你设的强密码 |
| 表前缀 | 留空或自定义,单库单应用就留空 |
如果这里报连接失败,先确认itopuser能不能从本机连上,用命令行测一下:
mysql -u itopuser -p -h localhost itop -e "SELECT 1;"能返回结果说明账号没问题,那就是 PHP 的mysql扩展没装好,回去查php -m。
4.3 管理员账号与安装收尾
后面几步是设管理员账号、选语言、确认安装。管理员密码别用弱口令,iTop 后台权限不小。语言选中文,装完界面就是中文的。点完安装,向导会往conf目录写配置文件,等它提示成功。
装完第一件事是把setup目录移走或删掉,防止被人重新跑一遍安装覆盖数据:
sudo mv /var/www/html/itop/setup /var/www/html/itop/setup_done我习惯改名而不是直接删,万一要重装还能翻出来看。到这一步,iTop 本体就算落地了,但能不能稳定用,还得看下面这些坑有没有避开。
5. 避坑与排查:装完打不开、登录空白、中文乱码
5.1 现象:向导第一步环境检查报扩展缺失,但明明装了
原因通常是装的是 CLI 版本的扩展,Web 用的 PHP-FPM 走的是另一套配置,或者装完没重启服务。解决:确认php -m在 Web 用户环境下也能看到扩展,重启php-fpm和 Web 服务,再刷新向导页面。别只看命令行,命令行和 FPM 可能加载不同的php.ini。
5.2 现象:装完访问首页一片空白,没有任何报错
原因多半是 PHP 错误没显示出来,被吞了。解决:临时打开错误显示,在php.ini里设display_errors = On、error_reporting = E_ALL,重启后刷新,错误就出来了。看完记得关回去,生产环境别一直开着。另一个可能是web目录权限不对,Web 用户读不了文件,检查属主。
5.3 现象:中文工单内容存进去变问号或乱码
原因在建库时字符集用了utf8而不是utf8mb4,或者连接字符集没对齐。解决:确认库和表的字符集是utf8mb4,iTop 配置文件里数据库连接也指定utf8mb4。已经建错库的,导出数据、重建库、再导入,别指望改个参数就自动修好存量数据。
5.4 现象:页面跳转 404,尤其是 Nginx 环境
原因是重写规则没生效。Apache 查AllowOverride和mod_rewrite,Nginx 查try_files那行有没有写对。解决:Apache 用apachectl -M | grep rewrite确认模块加载;Nginx 用nginx -t测配置,再看location /块里的try_files是不是指向了index.php。
5.5 现象:装完能登录,但过一段时间会话频繁掉线
原因通常是 PHP 的 session 目录权限或 session 回收配置问题。解决:确认session.save_path指向的目录 Web 用户可写,检查session.gc_maxlifetime是否设得太短。我一般把 session 目录单独指到一个固定路径,权限给足,避免和系统临时目录清理策略打架。
6. 装完怎么验证跑通:三步确认加一个习惯
装完别急着交付,我一般走三步验证,确认这套 iTop 是真能用的,不是「看起来能打开」。
第一步,登录后台建一条测试工单,走完创建到关闭的流程。这一步验证的是数据库读写、权限、表单提交整条链路。能建能改能关,说明核心功能通了。
第二步,进配置管理模块,手动加一个配置项,比如一台服务器,然后看它能不能在关系图里显示出来。这一步验证 CMDB 相关表结构和前端渲染。很多人装完只测登录,结果 CMDB 一用就报错,就是没走这步。
第三步,看日志目录有没有异常堆积。装完跑一遍操作后,去log目录翻一下最近的错误日志:
# 查看 iTop 错误日志尾部,确认没有持续报错 tail -n 50 /var/www/html/itop/log/error.log如果只有零星几条无关紧要的警告,正常;如果同一条错误反复刷,说明有配置没对齐,回去按上一章的排查思路对。
验证通过后,我有个固定习惯:把这次装的版本号、PHP 版本、数据库版本、关键配置项记到一个部署备忘里,连同conf目录的配置文件一起备份。iTop 升级时,这份备忘能省掉大量「当时到底装的哪个版本」的回忆成本。从那以后我每次部署 iTop,都强制走一遍这三步验证加备份,再没出现过交付后才发现问题的尴尬。希望帮到你。
本文还有配套的精品资源,点击获取