iTop 运维工具学习心得-持续更新 版本3.0.1
1.Portal 名字显示顺序调整文件路径iTop\web\env-production\itop-portal-base\portal\templates\layout.html.twig修改前:{% set sUserFullname = app['combodo.current_user'].Get('first_name') ~ ' ' ~ app['combodo.current_use
1.Portal 名字显示顺序调整
文件路径
iTop\web\datamodels\2.x\itop-portal-base\portal\templates\layout.html.twig
修改前: {% set sUserFullname = app['combodo.current_user'].Get('first_name') ~ ' ' ~ app['combodo.current_user'].Get('last_name') %} 修改后: {% set sUserFullname = app['combodo.current_user'].Get('last_name') ~ ' ' ~ app['combodo.current_user'].Get('first_name') %}
2.隐藏 Portal字段
文件路径
iTop\web\datamodels\2.x\itop-tickets\datamodel.itop-tickets.xml
修改前:
<div class="row">
<div class="col-sm-6">
<div class="form_field" data-field-id="impact">
</div>
</div>
<div class="col-sm-6">
<div class="form_field" data-field-id="urgency">
</div>
</div>
</div>
修改后:
<div class="row">
<!-- <div class="col-sm-6">
<div class="form_field" data-field-id="impact">
</div>
</div>
<div class="col-sm-6">
<div class="form_field" data-field-id="urgency">
</div>
</div> -->
</div>
3.SMTP 邮件设置
文件路径
iTop\web\conf\production\config-itop.php
'email_transport' => 'SMTP',
'email_transport_smtp.host' => 'IP地址',
'email_transport_smtp.port' => '25',
4.LDAP 域控访问设置
文件路径
iTop\web\conf\production\config-itop.php
'authent-ldap' => array (
'host' => 'IP地址',
'port' => 389,
'default_user' => '账户名',
'default_pwd' => '密码',
'base_dn' => 'dc=公司域名,dc=com',
'user_query' => '(SamAccountName=%1$s)',
'options' => array (
17 => 3,
8 => 0,
),
'start_tls' => false,
'debug' => false,
'servers' => array (
),
5.数据库备份设置
文件路径
iTop\web\conf\production\config-itop.php
'itop-backup' => array (
'mysql_bindir' => 'C:\wamp64\bin\mysql\mysql5.7.36\bin',
'week_days' => 'monday, tuesday, wednesday, thursday, friday',
'time' => '23:30',
'retention_count' => 5,
'enabled' => true,
'itop_backup_incident' => '',
),
6.局域网访问设置
6.1把绝对路径改成相对路径,可以使局域网访问时,正常加载页面和图片
文件路径
iTop\web\conf\production\config-itop.php
修改前
'app_root_url' => 'http://localhost/itop/web/',
修改后
'app_root_url' => '/itop/web/',
6.2 拒绝访问403错误
wamp64\bin\apache\apache2.4.51\conf\extra\httpd-vhosts.conf
把Deny from all 改为 Required all granted就可以解决
修改前
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot "${INSTALL_DIR}/www"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Deny from all
</Directory>
</VirtualHost>
修改后
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot "${INSTALL_DIR}/www"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
6.3 因为6.2改成相对路径,部分图片无法加载
文件路径
wamp64\www\iTop\web\data\cache-production\portals\itop-portal-prod\ContainerNmvmbxk\srcProdProjectContainer.php
删除http头,图片就可以正常加载。调试方法edge或是chrome,启用F12开发者工具,查看加载失败的URL,根据图片的名称在itop工程里搜索,即可找到对应的文件。
修改前
'logo' => 'http://localhost/itop/web/images/logo-itop-dark-bg.svg?t=1653041501.4401',
修改后
'logo' => '/itop/web/images/logo-itop-dark-bg.svg?t=1653041501.4401',
6.4 忘记密码,邮件里的链接地址不完整,缺少http头部的处理方法
文件路径
wamp64\www\iTop\web\application\loginwebpage.class.inc.php
追加完整路径,http://ip地址 或者 http://域名
修改前
$sResetUrl = utils::GetAbsoluteUrlAppRoot().'pages/UI.php?loginop=reset_pwd&auth_user='.urlencode($oUser->Get('login')).'&token='.urlencode($sToken);
修改后
$sResetUrl = 'http://ip地址'.utils::GetAbsoluteUrlAppRoot().'pages/UI.php?loginop=reset_pwd&auth_user='.urlencode($oUser->Get('login')).'&token='.urlencode($sToken);
7. Internet访问设置
IIS反向代理的核心设置代码
1.Internet访问地址
http://域名/itop/web/pages/UI.php
2.反向代理
Rewrite URL:http://192.168.0.2/{R:1}
Pattern:^(.*)
Conditon:{HTTP_HOST} ^域名$
3.局域网的访问URL:
http://192.168.0.2/itop/web/pages/UI.php
排错技巧,Rewrite写到哪里合适
如果改成 Rewrite URL:http://192.168.0.2/itop/web/{R:1}
会出现,只能打开首页,css加载不正确,点击登录提示找不到页面的错误,
因为链接变成了,itop/web/itop/web 多了一层。
8. 为已有的类添加共有属性
8.1准备工作
下载iTopDataModelToolkit-2.3.zip
下载完成后解压至wamp64\www\iTop\web路径下
完整路径wamp64\www\iTop\web\toolkit
8.2业务需求
父类:物理设备(PhysicalDevice)
子类:电脑(PC),服务器类(Server)
共同业务需求:创建PC和Server时,需要添加发票号码Invoice,采购编号:OrderNo共有信息,
PC需要,再增加配置项:硬盘容量HDD,CD机规格,CPU速度
8.3生成数据模型模板
步骤1:创建空模板,用于向数据库添加新的字段
https://www.itophub.io/wiki/page?id=2_5_0%3Acustomization%3Adatamodel#creating_a_module
Company Name:随意输入
Extension Name:随意输入
Extension Label:随意输入,安装时会以该名字显示
Version:随意输入

Dependencies:依赖的模型,这里选择itop-endusers-devices,因为PC属于该数据模型下,后续需要再该模型中配置页面显示
输入完成后,点击Generate
Generate一个zip压缩文件,解压缩后放入wamp64\www\iTop\web\extensions
完整路径wamp64\www\iTop\web\extensions\itop-pd-ext
重复上述步骤,制作PC模块的模板zip,解压结果如下
wamp64\www\iTop\web\extensions\itop-pc-ext
8.4运行setup,添加扩展模块itop-pc-ext和itop-pd-ext,只需下一步下一步,在最后一页选择对应的扩展名称就可以。
http://localhost/itop/web/setup/
8.5配置XML文件
8.5.1添加PhysicalDevice的字段
在wamp64\www\iTop\web\extensions\itop-pd-ext路径下
打开datamodel.itop-pd-ext.xml文件
class id="PhysicalDevice" 指定需要修改的数据库对象
filed id = orderno 指定追加的字段orderno
filed id = invoice 指定追加的字段invoice
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
<classes>
<class id="PhysicalDevice">
<fields>
<field id="orderno" xsi:type="AttributeString" _delta="define">
<sql>orderno</sql>
<defalut_value/>
<is_null_allowed>true</is_null_allowed>
</field>
<field id="invoice" xsi:type="AttributeString" _delta="define">
<sql>invoice</sql>
<defalut_value/>
<is_null_allowed>true</is_null_allowed>
</field>
</class>
</classes>
</itop_design>
8.5.2添加PC字段
找到并打开datamodel文件
在wamp64\www\iTop\web\extensions\itop-pc-ext路径下
打开datamodel.itop-pc-ext.xml
修改XML内容如下
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.6">
<classes>
<class id="PC">
<fields>
<field id="cpuspeed" xsi:type="AttributeString" _delta="define">
<sql>cpuspeed</sql>
<defalut_value/>
<is_null_allowed>true</is_null_allowed>
</field>
<field id="hdd" xsi:type="AttributeString" _delta="define">
<sql>hd</sql>
<defalut_value/>
<is_null_allowed>true</is_null_allowed>
</field>
<field id="cd" xsi:type="AttributeString" _delta="define">
<sql>cd</sql>
<defalut_value/>
<is_null_allowed>true</is_null_allowed>
</field>
</fields>
</class>
</classes>
</itop_design>
8.5.3在各个画面显示
首先在PC画面显示,orderno,invoice,cpuspeed,hdd,cd,打开编辑下面的文件
wamp64\www\iTop\web\datamodels\2.x\itop-endusers-devices\datamodel.itop-enduser-devices.xml
找到PC类,找到presentation下的details下的items,添加cpuspeed,hdd等信息

<item id="fieldset:Server:moreinfo">
<rank>20</rank>
<items>
<item id="cpu">
<rank>60</rank>
</item>
<item id="cpuspeed">
<rank>60</rank>
</item>
<item id="ram">
<rank>70</rank>
</item>
<item id="hdd">
<rank>80</rank>
</item>
<item id="cd">
<rank>90</rank>
</item>
...
<items>
8.6 运行更新
http://localhost/itop/web/toolkit
先点击iTop update下的Check DB Schema,更新SQL字段(根据提示内容,复制SQL语句然后黏贴到数据库管理器运行),再点击UpdateiTopCode更新代码。

9.修改MYSQL的参数,避免同步时提示如下错误信息
mysql_error = Index column size too large.
需要将default row format的值由campct改成dynamic
10.同步导入Persons
创建一个同步源,输入Name:任意,Target Class:必须,这里选择Person类,点击应用

设置:需要同步的字段,需要更新的字段,和同步后不允许手动修改的字段。

CSV文件
primary_key;first_name;name;org_id;email;function;mobile_phone
"admin";"wang";"haha";"IT-Department";"wanghaha@xx.cn";"Manager";"136XXXXXXXX"
执行语句
注意,这里data_source_id=4里面的数字4,是对应数据库的表
php synchro_import.php --auth_user=admin --auth_pwd=密码 --csvfile=persons.csv --data_source_id=4 --output=summary

完成后,可以查看记录,这里显示成功创建一条记录。

11.LDAP 同步
原文https://www.itophub.io/wiki/page?id=extensions%3Aldap-data-collector
下载Data collector for LDAP Extention扩展,解压后放在任意路径。
https://store.itophub.io/en_US/products/ldap-data-collector

复制params.distrib.xml,改名为params.local.xml
C:\wamp64\www\iTop\ldap-data-collector\conf\params.distrib.xml
给管理员添加REST角色

先添加组织,否则LDAP同步会失败

注意事项:
itop_login和itop_password写itop的管理眼账户和密码
ldapuri写ad服务器的ip地址,端口号默认389根据实际情况修改
ldapdn:根据实际AD目录填写,如
dc=com
|-ou=user
|-cn=zhangsan
关键点,根据实际需求填写过滤条件:
本项目的过滤条件说明:
(&(objectClass=user)(objectCategory=person)(mail=*@xx.cn)(title=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
(objectClass=user) 对象是user 这里官方教程写的是person,这里需要避坑
(objectCategory=person) 目录是person
(mail=*@mxx.cn) 所有的邮件都是以@xx.cn结尾,因为存在代理商的账户,通过邮件过滤该账户
(title=*) 所有职责不为空的用户,因为有的用户有两个账户,子账户职责为空,过滤该账户
(userAccountControl:1.2.840.113556.1.4.803:=2)) 过滤停用的账户
完整版内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Default values for parameters. Do NOT alter this file, use params.local.xml instead -->
<parameters>
<itop_url>http://localhost/iTop/web/</itop_url>
<itop_login>admin</itop_login>
<itop_password>root</itop_password>
<contact_to_notify>admin@xx.cn</contact_to_notify>
<synchro_user>admin</synchro_user>
<ldapuri>ldap://192.168.0.2:389</ldapuri>
<ldapdn>DC=org,DC=com</ldapdn>
<ldaplogin>账户</ldaplogin>
<ldappassword>密码</ldappassword>
<page_size>1000</page_size>
<!-- Parameters for Person synchronization -->
<ldappersonfilter>(&(objectClass=user)(objectCategory=person)(mail=*@xx.cn)(title=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))</ldappersonfilter>
<person_fields>
<!-- Mapping between LDAP fields and iTop Person's object fields -->
<primary_key>samaccountname</primary_key>
<name>sn</name>
<first_name>givenname</first_name>
<email>mail</email>
<phone>telephonenumber</phone>
<mobile_phone>mobile</mobile_phone>
<function>title</function>
<employee_number>employeenumber</employee_number>
<org_id>department</org_id>
</person_fields>
<person_defaults>
<!-- Default values for iTop Person's object fields -->
<org_id>MEACH</org_id>
<status>active</status>
</person_defaults>
<!-- Parameters for User synchronization -->
<collect_person_only>no</collect_person_only>
<ldapuserfilter>(&(objectClass=user)(objectCategory=person)(mail=*@xx.cn)(title=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))</ldapuserfilter>
<synchronize_profiles>no</synchronize_profiles>
<user_fields>
<!-- Mapping between LDAP fields and iTop UserLDAP's object fields -->
<primary_key>samaccountname</primary_key>
<login>samaccountname</login>
<contactid>mail</contactid>
</user_fields>
<user_defaults>
<!-- Default values for iTop UserLDAP's object fields -->
<profile>Portal user</profile>
<language>EN US</language>
</user_defaults>
</parameters>
运行如下命令,模拟运行,查看预导入的LADP用户,会有两个csv文件。
php exec.php --console_log_level=9 --collect_only

运行如下命令,正式导入。
php exec.php
导入成功后,可以在person和users处看到相关的数据。
更多推荐




所有评论(0)