开源地址:https://github.com/sivann/itdb
下载地址:https://github.com/sivann/itdb/tags
一、itdb介绍
1.itdb概念
ITDB 全称为 IT Items Database——免费 IT 资产管理软件,是一款基于 Web 的资产库存管理工具,用于存储办公环境中的资产信息,重点关注(但不限于)IT 资产。ITDB 附带源代码,并根据 GNU 公共许可证分发。

2.itdb特点
- 项目:规格、保修、序列号、IP 信息、与此硬件相关/连接的其他硬件、项目状态、事件日志、受让人;
- 软件:规格、许可信息;
- 关系:每个软件的安装位置、许可证数量、组件关系、软件/硬件/发票的合同关系;
- 发票:注明日期、供应商、价格、附加文件的购买证明;
- 代理商:供应商、硬件和软件制造商、买家(针对不同部门)、承包商;
- 位置:每个资产的位置:建筑物、楼层、房间、机架、机架行、行深度;
- 合同:定义自定义合同类型,如支持和维护、SLA 等。跟踪合同事件;
- 标签:项目和软件的多个标签。您可以使用标签根据用途、预算、所有者、重要性等进行分组;
- 文件:将文档附加到每个主要对象实体(项目、软件、发票、合同);
- 用户:谁拥有什么或谁负责什么;
- 货架:展示货架布局,每个货架行分配有物品。(支持多个物品/货架行);
- **打印标签:**打印标签贴纸,标记所有资产(带或不带条形码),从手机和笔记本电脑到冷却装置和 UPS。通过 GUI 轻松定义新的标签纸布局;
- 一键备份:从主菜单中获取 .tar.gz 格式的 ITDB 安装和数据的完整备份。要恢复,只需在 Web 服务器上提取备份文件即可;
- 所有页面均可打印:所有屏幕页面/列表/报告均可很好地打印出来,没有菜单、滚动条和其他杂乱内容;
- 界面翻译:翻译文件支持。您可以创建自己的翻译(v1.3);
- 基本的 LDAP 支持:从 LDAP URL 中提取用户列表以进行项目分配。(未经活动目录测试,且未用于身份验证。
二、准备工作
- 操作系统:
CentOS 7.9
- 内存:
>= 4G
- Apache:
>= 2.0
- PHP:
>= 5.2.x 且 <= 7.3.x
三、安装依赖
1.安装Apache
这里安装的版本为 2.4.62
,可参考我博客中《CentOS7 源码安装Apache 2.4.62》文档 。
2.安装PHP
这里安装的版本为 7.3.4
,可参考我博客中《CentOS7 源码安装PHP 8.3.11》文档 ,版本虽然不同,但安装过程一样。
四、安装itdb
这里安装的版本为
1.23
为例。
1.下载并解压itdb源代码
下载 itdb 源码包并解压到指定路径 /usr/local
目录下,并重命名为 itdb
目录:
cd /usr/local/src
wget https://github.com/sivann/itdb/archive/refs/tags/1.23.tar.gz
tar -xzf 1.23.tar.gz
mv itdb-1.23 /usr/local/itdb
2.重命名itdb数据库
在 /usr/local/itdb
目录下,进入 data
目录,将 pure.db
重命名为 itdb.db
(pure.db 是一个空白数据库):
cd /usr/local/itdb/data
cp pure.db itdb.db
3.设置itdb目录所有权
设置 itdb
目录所有权为 php
用户:
chown -R php.php /usr/local/itdb
由于前面安装的PHP,使用的是PHP-FPM,因此授权的用户为
php
。
4.Apache配置
4.1 修改Apache配置文件
进入 Apache 安装目录下的 conf
目录,修改 Apache 的主配置文件 httpd.conf
:
cd /usr/local/apache/conf
sed -i 's/#LoadModule proxy_module/LoadModule proxy_module/g' httpd.conf
sed -i 's/#LoadModule proxy_fcgi_module/LoadModule proxy_fcgi_module/g' httpd.conf
echo 'Include conf/conf.d/*.conf' >> /usr/local/apache/conf/httpd.conf
解释说明:
LoadModule proxy_module
:启用proxy_module
模块,是 Apache 的代理模块,用于处理反向代理的功能,比如把请求转发到其他服务器。LoadModule proxy_fcgi_module
:启用proxy_fcgi_module
模块,是专门为处理 FastCGI 请求的代理模块,常用于将 PHP-FPM 的 FastCGI 请求转发到 PHP 处理器。Include conf/conf.d/*.conf
:将指定目录下的所有.conf
配置文件包含到主配置文件中。这样,/usr/local/apache/conf/conf.d/
目录下的所有配置文件都会自动加载,无需手动添加每个文件的路径。这种方式常用于模块化管理 Apache 配置,便于扩展和维护。
4.2 创建站点配置目录
mkdir -p /usr/local/apache/conf/conf.d
4.3 生成站点配置文件
在 Apache 的站点配置目录中,设置一个虚拟主机 itdb.conf
配置文件,用于设置 itdb Web 界面的访问,存放于/usr/local/apache/conf/conf.d
目录下:
cat > /usr/local/apache/conf/conf.d/itdb.conf <<'EOF'
listen 8090
<VirtualHost *:8090>
ServerName localhost
DocumentRoot /usr/local/itdb
DirectoryIndex index.php
AddDefaultCharset UTF-8
<Directory /usr/local/itdb>
AllowOverride None
<IfVersion >= 2.3>
Require all granted
</IfVersion>
<IfVersion < 2.3>
Order Deny,Allow
Allow from all
</IfVersion>
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
LogLevel warn
ErrorLog /usr/local/apache/logs/itdb_error.log
CustomLog /usr/local/apache/logs/itdb_access.log combined
</VirtualHost>
EOF
解释说明:
listen 8090
:指示Apache监听端口8090。<VirtualHost *:8090>
:定义一个虚拟主机,*
表示所有IP地址,监听端口8090。ServerName localhost
:定义虚拟主机的服务器名称。在这里,它被设置为localhost
,表示只在本地主机上访问。DocumentRoot /usr/local/itdb
:设置虚拟主机的文档根目录为/usr/local/itdb
,即itdb Web界面的文件存放位置。DirectoryIndex index.php
:设置默认的索引文件为index.php
,当访问根目录时会自动加载此文件。AddDefaultCharset UTF-8
:设置默认的字符编码为UTF-8,确保页面正确显示各种语言字符。<Directory /usr/local/itdb>
:配置/usr/local/itdb
目录的访问权限。
AllowOverride None
:禁止.htaccess文件覆盖此目录的配置。<IfVersion >= 2.3>
:对于Apache 2.3及以上版本。
Require all granted
:允许所有访问。<IfVersion < 2.3>
:对于Apache 2.3及以下版本。
Order Deny,Allow
:设置访问控制顺序。Allow from all
:允许所有来源访问。<FilesMatch \.php$>
:匹配所有以.php
结尾的文件。
SetHandler "proxy:fcgi://127.0.0.1:9000"
:设置.php
文件通过 FastCGI 协议转发给运行在本地127.0.0.1
上的 PHP-FPM 进程(监听9000
端口)。LogLevel warn
:设置日志记录的级别为警告级别,记录警告及以上级别的信息。ErrorLog
:设置错误日志文件的位置为/usr/local/apache/logs/itdb_error.log
。CustomLog
:设置访问日志文件的位置为/usr/local/apache/logs/itdb_access.log
,并使用组合日志格式。
5.4 重载apache服务
httpd -t # 检查配置文件语法是否正确
httpd -k restart # 重载 apache 服务
五、访问itdb
浏览器 itdb 平台地址 http://<IP>:8090/
,默认管理员登录名为 admin
,密码为 admin
:
六、使用itdb
1.设置系统语言为中文
登录 itdb 平台后,点击左栏【Settings】,选择【Interface Language】为 cn
,然后点击【Save】:

2.修改网站标题
itdb 平台的网站标题默认如下图所示:

修改 /usr/local/itdb/php/header.php
配置文件,可修改网站标题:
vim /usr/local/itdb/php/header.php
# 找到以下内容
<title>ITDB - [<?php echo $title." $id";?>] - IT Items Database</title>
# 修改为以下内容
<title>[ Sunline ] - ITDB</title>
3.修改登录界面布局
3.1 修改面板内容
itdb 登录界面右方的面板内容如下图所示:
修改 /usr/local/itdb/index.php
配置文件,可修改面板的标题:
vim /usr/local/itdb/index.php
# 找到以下内容
echo "<b>Please log in</b>";
# 修改为以下内容
echo "<b>请登录</b>";
修改 /usr/local/itdb/php/about.php
配置文件,可修改面板的内容:
vim /usr/local/itdb/php/about.php
# 找到以下内容
<div style='text-align:left;width:90%;'>
......
</div>
# 修改为以下内容
<div style='text-align:left;width:90%; height:350px;'>
<ol>
<li>IT固定资产管理:服务器所在机房位置,硬件配置信息。</li>
<li>IT软件管理:软件使用情况</li>
</ol>
</div>
3.2 修改登录按钮内容
itdb 登录界面左方的登录按钮默认为英文的 Login
,修改 /usr/local/itdb/index.php
配置文件,可修改按钮的内容:
vim /usr/local/itdb/index.php
# 找到以下内容
<br><br><button type=submit><img src='images/key.png'> Login</button>
# 修改为以下内容
<br><br><button type=submit><img src='images/key.png'> 登录</button>
3.3 删除版本及提示内容
itdb 登录界面左方默认显示了一个提示和版本内容,如下图所示:

vim /usr/local/itdb/index.php
# 找到以下内容
<?php
}
if (strstr($authmsg,"elcome") || strstr($authmsg,"thenticated"))
......
<a title='phpinfo' href='phpinfo.php'><img src='images/infosmall.png'></a>
# 修改为以下内容,其实就是将内容清除掉
<?php } ?>
3.4 删除服务时间信息值
itdb 登录界面右方的面板下面默认显示了一个服务时间信息值,如下图所示:

修改 /usr/local/itdb/index.php
配置文件,可删除该信息:
vim /usr/local/itdb/index.php
# 找到以下内容
echo "<span style='color:#aaa'>server time = ".number_format(($itdb_end - $itdb_start),3)." secs</span>";
# 注释掉该内容
//echo "<span style='color:#aaa'>server time = ".number_format(($itdb_end - $itdb_start),3)." secs</span>";
4.删除“关于”模块
登录 itdb 平台后,左栏有个【关于】模块,如下图所示:
修改 /usr/local/itdb/index.php
配置文件,可将其删除:
vim /usr/local/itdb/index.php
# 找到以下内容,将其删除,该内容主要为点击【关于】后跳转显示的信息
case "about":
$title="About";
$stitle="About";
$req="php/about.php";
break;
# 找到以下内容,将其删除,该内容主要为界面栏上显示的【关于】模块
<tr><td><a style='<?php echo $style_about?>' class='ahdr' href="<?php echo $scriptname?>?action=about" ><?php te("About")?></a></td> <td></td> </tr>
5.修改登录后的标题
登录 itdb 平台后,左上角为平台的标题,如图所示:

修改 /usr/local/itdb/index.php
配置文件,可修改标题名:
vim /usr/local/itdb/index.php
# 找到以下内容
<span style='padding-top:5px;'> <a href='<?php echo $scriptname?>'> ITDB </a></span>
# 修改为以下内容
<span style='padding-top:5px;'> <a href='<?php echo $scriptname?>'> Sunline </a></span>
# 找到以下内容
<span id=logo>
IT ITems DataBase
</span>
# 修改为以下内容
<span id=logo>
资产<br>管理系统
</span>
6.修改翻译文件内容
在 /usr/local/itdb
目录下,进入 translations
目录,修改 cn.txt
翻译文件:
cd /usr/local/itdb/translations
sed -i 's/DNS Name#DNS 名称/DNS Name#管理跳线/g' cn.txt
sed -i '/DnsName#Dns名称/a Dpt Types#所属部门\nDpt Name#部门名称\nDpt responsible for this item#该硬件所属部门' cn.txt
sed -i '/Edit#编辑/a Edit Dpt Types#修改所属部门' cn.txt
sed -i 's/Function#功能/Function#用途/g' cn.txt
sed -i 's/HDs (TB)#HDs (TB)/HDs (TB)#硬盘/g' cn.txt
sed -i 's/Log\/Journal#日志/Log\/Journal#维护日志/g' cn.txt
sed -i 's/MACs#MACs/MACs#MAC/g' cn.txt
sed -i 's/Maintenance Instructions#维护说明/Maintenance Instructions#维护记录/g' cn.txt
sed -i '/Patch Panel Port#插线板端口/d' cn.txt
sed -i 's/Ptch.PnlPrt#Ptch.PnlPrt/Ptch.PnlPrt#Bond名称/g' cn.txt
sed -i 's/Rack Pos\. (topmost)#机架位置\. (从顶部算起)/Rack Pos\. (topmost)#机架位置/g' cn.txt
sed -i 's/RAM (GB)#内存 (GB)/RAM (GB)#内存/g' cn.txt
sed -i 's/S\/N 2#库存编号 2/S\/N2#序列号2/g' cn.txt
sed -i 's/S\/N#库存编号/S\/N#设备序列号/g' cn.txt
sed -i '/Select User#选择用户/a Select Dpt#选择部门' cn.txt
sed -i 's/Shop\/Origin#商店\/自有/Shop\/Origin#供应商/g' cn.txt
sed -i 's/Specify model#指定型号/Specify model#型号不能为空/g' cn.txt
sed -i 's/Switch Port#交换机端口/Switch Port#业务跳线/g' cn.txt
sed -i '/Warranty#维保/a Misc#硬件配置' cn.txt
cat >> cn.txt <<'EOF'
Principal#负责人
Rem.Adm.IP#远程管理IP
Raid Card#Raid卡型号
Raid Config#Raid配置
History of Changes#操作日志
EOF
7.修改硬件类型
点击左栏【硬件类型】,可自定义修改和删除硬件类型:

8.修改状态类型
点击左栏【状态类型】,可自定义修改状态类型:

但不能直接删除固定的前4个状态类型,需要在后台数据库中进行删除,执行以下命令:
# 查看状态类型表结构
sqlite> PRAGMA table_info(statustypes);
0|id|INTEGER|0||1
1|statusdesc||0||0
# 查看状态类型表数据
sqlite> select * from statustypes;
0|使用中
1|库存
2|有故障
3|报废
4|
# 删除id为4的数据
sqlite> delete from statustypes where id=4;
9.修改标记
点击左栏【标记】,可自定义修改标记:
10.修改地点
点击左栏【地点】,可自定义修改地点。
11.添加机架
点击左栏中的【机架】——点击【Add new Rack】,即可添加相应的信息,这里以1条为例:
- 【高度 (U)】:
42U
; - 【标签】:
服务器柜1
; - 【深度(mm)】:
800
; - 【型号】:
晟图
; - 【地点】:
xxx,楼层:5
; - 【区域】:
机房
; - 【硬件】:
11
,然后点击【保存】。
12.修改“DB log”模块名
登录 itdb 平台后,左栏中有一个只有为英文名字的模块没有被翻译到,名为 DB log
,如图所示:
修改 /usr/local/itdb/index.php
配置文件:
vim /usr/local/itdb/index.php
# 找到以下内容
DB Log
# 修改为以下内容
<?php te("History of Changes") ?>
修改 /usr/local/itdb/php/showhist.php
配置文件:
vim /usr/local/itdb/php/showhist.php
# 找到以下内容
<h1>History of Changes</h1>
# 修改为以下内容
<h1><?php te("History of Changes") ?></h1>
13.添加“所属部门”模块
13.1 配置按钮
登录 itdb 平台后,左栏中的【文件类型】下方添加【所属部门】按钮,修改 /usr/local/itdb/index.php
配置文件:
vim /usr/local/itdb/index.php
# 找到以下内容
case "editfiletypes":
$title="Edit File Types";
break;
# 在该内容下方添加内容
case "editdpttypes":
$title="Edit dpt Types";
break;
# 找到以下内容
<tr><td colspan=2><a style="<?php echo $style_editfiletypes; ?>" class='ahdr' href="<?php echo $scriptname?>?action=editfiletypes" ><?php te("File Types");?></a></td></tr>
# 在该内容下方添加内容
<tr><td colspan=2><a style="<?php echo $style_editdpttypes; ?>" class='ahdr' href="<?php echo $scriptname?>?action=editdpttypes" ><?php te("Dpt Types");?></a></td></tr>
13.2 创建数据表
为【所属部门】创建对应的部门数据表,进入 /usr/local/itdb/data
目录,执行 sqlite3
命令进入数据库:
sqlite3 itdb.db
创建部门数据表,名为 dpttypes
:
CREATE TABLE "dpttypes" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
"typeid" INTEGER,
"dptname" TEXT
);
各字段说明:
id
:INTEGER PRIMARY KEY AUTOINCREMENT
表示这是表的主键,且会自动递增。typeid
: 用INTEGER
数据类型来表示一个数字的typeid
。dptname
: 用TEXT
来存储部门名称,适合存储字符串数据。
创建后,可以通过以下命令查看表的结构:
sqlite> PRAGMA table_info(dpttypes);
0|id|INTEGER|0||1
1|typeid|INTEGER|0||0
2|dptname|TEXT|0||0
# 查看表的创建语句
.schema dpttypes
创建后,可以直接退出 SQLite:
.quit
SQLite 会自动保存操作到数据库文件中,你可以随时关闭 SQLite 会话,无需手动保存。
13.3 配置模块信息
为【所属部门】按钮点击后的界面进行配置模块信息,先复制一份【硬件类型】的php配置文件 edititypes.php
,并重命名为 editdpttypes.php
(改命名对应之前配置的 case