CentOS7 源码部署itdb

开源地址:https://github.com/sivann/itdb

下载地址:https://github.com/sivann/itdb/tags

一、itdb介绍

1.itdb概念

ITDB 全称为 IT Items Database——免费 IT 资产管理软件,是一款基于 Web 的资产库存管理工具,用于存储办公环境中的资产信息,重点关注(但不限于)IT 资产。ITDB 附带源代码,并根据 GNU 公共许可证分发。

image-20241008231124106

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

image-20241012211615964

六、使用itdb

1.设置系统语言为中文

登录 itdb 平台后,点击左栏【Settings】,选择【Interface Language】为 cn,然后点击【Save】:

image-20241012205342639

2.修改网站标题

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

image-20241012212513675

修改 /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 登录界面右方的面板内容如下图所示:

image-20241012211734630

修改 /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 登录界面左方默认显示了一个提示和版本内容,如下图所示:

image-20241012214037444
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 登录界面右方的面板下面默认显示了一个服务时间信息值,如下图所示:

image-20241012214408185

修改 /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 平台后,左栏有个【关于】模块,如下图所示:

image-20241012211203401

修改 /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 平台后,左上角为平台的标题,如图所示:

image-20241012211236888

修改 /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.修改硬件类型

点击左栏【硬件类型】,可自定义修改和删除硬件类型:

image-20241012235524048

8.修改状态类型

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

image-20241012235842640

但不能直接删除固定的前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.修改标记

点击左栏【标记】,可自定义修改标记:

image-20241013000450754

10.修改地点

点击左栏【地点】,可自定义修改地点。

11.添加机架

点击左栏中的【机架】——点击【Add new Rack】,即可添加相应的信息,这里以1条为例:

  • 【高度 (U)】:42U
  • 【标签】:服务器柜1
  • 【深度(mm)】:800
  • 【型号】:晟图
  • 【地点】:xxx,楼层:5
  • 【区域】:机房
  • 【硬件】:11 ,然后点击【保存】。

12.修改“DB log”模块名

登录 itdb 平台后,左栏中有一个只有为英文名字的模块没有被翻译到,名为 DB log,如图所示:

image-20241013001958134

修改 /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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值