lrlkjtDevOps 文档¶
安装文档¶
快速部署¶
这里先简单说明下,由于有些项目暂未开始实施,只能先把web服务放在集团公司。
注意
- 需要单独创建web目录
- 由于网络原因,无法集成监测监控数据
- 由于gis未实施,一张图无法观看
- 需要集团开通对应端口,使用IP:端口号的方式登录
分布式安装¶
安装操作系统¶
本安装及设置教程适用于使用Windows2008R2为操作系统的服务器,目的是让服务器实现下列环境。
- 语言脚本环境:ASP.Net4.0
- 数据库环境: MSSQL 2014
- FTP环境:FileZilla
- 常见组件:
一、系统准备
- Windows2008R2原版安装文件、服务器硬件驱动程序(RAID磁盘阵列卡驱动、网卡驱动等)、SQL SERVER 2014安装盘、FileZilla Server、winpe、rufus、镜像制作GimageX。Windows2008R2和SQL SERVER 2014安装文件可以购买正版光盘或其他途径获得。Windows2008R2最好是原版,SQL SERVER 2014可以选择企业版或者标准版。服务器硬件驱动应该在购买服务器的同时附带了。
- FileZilla Server等均可以通过购买或者其他途径来获得。winpe、rufus、GimageX安装文件可以到其官方网站免费下载,或到其他下载网站获得。
二、系统安装
- 分区:服务器的硬盘推荐1T,分成了3个区,C盘做系统盘(100-200G),D盘做数据库和软件盘(500G),E盘做备份盘(300G),以NTFS格式4K对齐对3个区进行格式化。一般情况下服务器的磁盘阵列已经设置好了,不需要重新设置,可以使用winpe进行分区,只要winpe集成有服务器的磁盘阵列卡驱动,都能正常分区。
- 安装系统:启动服务器,设置BIOS为光盘启动,重启,插入Windows2008R2安装盘至光驱中,根据提示安装操作系统。若没有光盘,可以使用rufus将镜像烧录到U盘,可根据服务器实际情况选择MBR还是UEFI模式,其中最新的服务器一般都是UEFI引导的,烧录完以后需将服务器的RAID磁盘阵列卡驱动解压后、网卡驱动安装包复制到U盘备用。也可以自行将最新的补丁和驱动程序打包到wim镜像中。
- 根据服务器的启动设置选择u盘启动,联想ibm服务器一般是F12,顺利执行U盘引导,若在格式化磁盘的界面发现找不到磁盘,则需要加载RAID磁盘阵列卡驱动,找到U盘对应目录的驱动程序。如图2-1所示。
- 图2-1 加载RAID磁盘阵列卡驱动
- 设置登录时不弹出“管理您的服务器”窗口:启动计算机,弹出“管理您的服务器”窗口,勾选窗口左下方的“登录时不要显示此页”。
- 启动自动更新:选择初始配置任务--启动自动更新和反馈--启动自动更新和反馈。
- 下载并安装更新:选择初始配置任务--下载并安装更新--更改设置--重要更新--选择下载更新,但是让我选择是否安装更新--确定。
- 修改计算机名:选择初始配置任务--提供计算机名和域--更改--输入计算机名--确定--重启。
- 安装驱动:系统安装更新完毕,进入系统,按照主板-显卡-声卡-网卡-其他设备的顺序安装各类驱动程序。主要是安装网卡驱动,网卡正常后请联系机房管理员配置ip(有可能要绑定网卡MAC地址)并开放端口。
常用端口配置说明:
一张图地图服务:8400
一张图协同服务:8056
一张图文档浏览服务:8405
Web服务:80
SQL SERVER: TCP-1433、UDP-1434
NTP时间同步:UDP-123
三、安装WEB服务器
- (1).进入服务器管理器
- (2).选择角色,添加角色
- (3).选择WEB服务器,下一步
- (4).选择除FTP服务器外的所有选项,下一步
- (5).安装
四、安装.NET3.5功能
- (1).进入服务器管理器
- (2).选择功能,添加功能
- (3).选择.net Framework 3.51功能
- (4).下一步,安装
五、防火墙设置
默认关闭防火墙。
六、远程访问服务
6.1.启动远程访问服务
- (1).选择服务器管理器--启用远程桌面
- (2).选择允许运行任意版本远程桌面的计算机连接(较不安全)。备注:方便多种版本Windows远程管理服务器。
- (3).确定
6.2.修改远程访问服务端口
- (1).在开始--运行菜单里,输入regedit,进入注册表编辑,按下面的路径进入修改端口的地方
- (2).HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
- (3).找到右侧的 "PortNumber",用十进制方式显示,默认为3389,改为(例如)6666端口
- (4).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp
- (5).找到右侧的 "PortNumber",用十进制方式显示,默认为3389,改为同上的端口
- (6).在控制面板--Windows 防火墙--高级设置--入站规则--新建规则
- (7).选择端口--协议和端口--TCP/特定本地端口:同上的端口
- (8).下一步,选择允许连接
- (9).下一步,选择公用
- (10).下一步,名称:远程桌面-新(TCP-In),描述:用于远程桌面服务的入站规则,以允许RDP通信。[TCP 同上的端口]
- (11).删除远程桌面(TCP-In)规则
- (12).重新启动计算机
堵住资源共享隐患:打开“本地连接”界面,选择“属性”,左键点击“Microsoft网络客户端”,再点击“卸载”,在弹出的对话框中“是”确认卸载。点击“Microsoft网络的文件和打印机共享”,再点击“卸载”,在弹出的对话框中选择“是”确认卸载。
6.3解除Netbios和TCP/IP协议的绑定:
打开“本地连接”界面,选择“属性”,在弹出的“属性”框中双击“Internet协议版本(TCP/IPV4)”,点击“属性”,再点击“高级”—“WINS”,选择“禁用TCP/IP上的NETBIOS”,点击“确认”并关闭本地连接属性。
禁止默认共享:点击“开始”—“运行”,输入“Regedit”,打开注册表编辑器,打开注册表项“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters”,在右边的窗口中新建Dword值,名称设为AutoShareServer,值设为“0”。
七、虚拟内存设置
修改虚拟内存的位置或禁用虚拟内存两者选择其一,在内存足够大的情况下可以禁用虚拟内存。如果内存不是非常大,还是修改虚拟内存到硬盘的非系统盘。一般情况下不建议禁用虚拟内存。
- (1)、修改虚拟内存的位置:右键点击“计算机”,选择“属性”—“高级系统设置”—“高级”—“设置”—“高级”—“虚拟内存”—“更改”,取消勾选“自动管理所有驱动器的分页文件大小”,在“驱动器”选择框里面选中系统盘,选择“无分页文件”,在非系统盘如D盘,选择“自定义大小”,输入“初始大小”和“最大值”,点击“设置”,并确认修改。
- (2)、禁用虚拟内存:右键点击“计算机”,选择“属性”—“高级系统设置”—“高级”—“设置”—“高级”—“虚拟内存”—“更改”,取消勾选“自动管理所有驱动器的分页文件大小”,对所有驱动器都选择“无分页文件”,然后点击“设置”并确认修改。
八、本地安全策略
- (1)更改管理员账号和来宾账号:本地策略-安全选项-账户,重命名系统管理员账户,把Administrator改名。重命名来宾账户,把Guest用户改名为Administrator,不过是什么权限都没有的那种,然后打开记事本,一阵乱敲,复制,粘贴到"密码"里去。
- (2)组策略:计算机配置—Windows设置—安全设置—本地策略—安全选项交互式登陆:不显示最后的用户名(启用)
- (3)关闭自动播放: 控制面板,自动播放,取消勾选,保存。 点击“开始”—“运行”,输入“Gpedit.msc”,打开组策略编辑器,依次展开“计算机配置”—“管理模板”—“Windows组件”,在右侧窗口找到“自动播放策略”选项并打开,双击右侧关闭自动播放,在打开的对话框上部选择“已启用”,在对话框下部选择“所有驱动器”,点击“确定”完成设置。
九、开机自动登录设置
- (1).开始菜单搜索框输入 “netplwiz” 按回车或“Win+R”组合键打开“运行”框内输入“netplwiz”在弹出的“用户帐户”窗口中,把“要使用本机,用户必须输入用户名和密码”前面的复选框中的勾去掉。然后点击“应用”。
- (2).弹出“自动登录”窗口,输入自己的“用户名”和“密码”,然后点击“确定"回到”用户帐户“窗口;再点击”确定“即可。在下次登录时就会生效。
十、启动项设置
- (1).开始-启动,加入软件快捷方式。
- (2).Windows Server 2012配置开机启动项需使用资源管理器打开这个目录
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
十一、密码免更改设置
开始-管理工具-计算机管理,系统工具-本地用户和组-用户,在右侧选择administrator,右键属性,更改为密码永不过期。如图11-1所示。
图11-1 管理员属性设置
十二、漏洞修复
操作系统安装好,把所有软件都安装好。优先打高危漏洞。打完重启。
- (1).先补高危漏洞
360高危漏洞免疫工具下载地址:http://www.360.cn/webzhuanti/mianyigongju.html
- (2).再打常规补丁
使用360安全卫士等工具把所有补丁慢慢打上。打完重启。
十三、病毒查杀
- (1).安装杀毒软件
操作系统安装好,把所有软件都安装好。安装杀毒软件,并更新病毒库,把自家程序添加到白名单,若查杀出病毒后需要重启再次杀毒。
- (2).升级病毒库
使用杀毒软件定期升级病毒库,保证杀毒效率。
- (3).勒索病毒防治
勒索病毒只能防御,中招之后无法修复,唯一有效的操作就是平时多进行数据异地备份。
十四、备份系统:
至此重启服务器,对刚刚做好的操作系统做一个备份。备份推荐用GimageX。
环境准备¶
部署安装之前,你应该了解下每个模块的用途.
注意
- 不同的服务器可选择性的部署服务
- 综合自动化服务单独部署(要求的环境必须是32位服务器)
建议配置
- 系统: windows server 2008 R2 X64
- CPU: 2Core+
- 内存: 8G+
- 磁盘: >=50+
准备基础环境
基础环境需要用到以下服务。
- 建议版本
- .NET4.0
- Sql Server 2014 R2 X64
- python2.7
注意: 不要安装32位MSSQL软件,32位的版本只能调用4G以下的内存。
调试网络
需提前调试好煤矿的这些网络,实现服务器之间互联互通。
工业网(视频厂家硬盘录像机服务器、综合自动化厂家服务器) 生产网(安全监测厂家服务器、人员定位厂家服务器、束管监测厂家服务器) 办公室内网(应力与微震厂家服务器、水文监测厂家服务器) 集团公司与矿业公司的VPN专线(用于接通集团公司web服务器和数据库服务器)
安装IIS服务
用于搭建web平台。建议开发人员直接进行操作,创建web网站后默认使用80端口,第一次打开需要先注册。
安装服务器监测程序
直接复制ServerMonitorService程序目录到D盘,然后运行ServerMonitorService.exe主程序,选择好该服务器的用途并保存设置。
设置自动更新web代码脚本
用于定期更新web网站的代码,这样每次开发人员提交修改后就能自动推送到生产环境服务器了。注意: 要先在D盘新建upload目录,并拷贝wget.exe文件到C:\Windows\System32文件夹下,安装7z解压缩工具到c盘默认目录。
安装python环境
用于搭建地质编录服务和安全巡检服务 python版本2.7
安装定时任务服务
用于定期上报预警信息。
安装定时诊断服务
用于监测服务器的运行状态,如cpu、内存、硬盘的实时使用情况。
安装进程监控服务
用于自动重启监测监控接口程序和厂家转换接口程序。
安装FTP服务
用于接收监测厂家传输的数据
安装监测监控数据接入服务
用于读取安全监测、人员定位、束管、水文、应力和微震厂家数据和转发报警信息。
安装综合诊断服务
安装帆软报表服务
用于平台报表资料的填报
安装三级预警服务
安装厂家数据转换服务(可选)
用于将安全监测、人员定位、束管、水文、应力和微震厂家数据从厂家数据库中读取出来,按照龙软转换协议生成文件,注意: 目前安全监测、人员定位厂家最多,接口程序稳定性也最好,水文厂家转换接口程序的稳定性一直不是很好。
项目前端¶
若以前未部署过该项目,则直接从源码编译一份webui目录。 若以前在其他地方已经部署过,则直接将以前的web目录打包复制到新的web服务器上。
- 前端的web配置文件主要是根目录下的
Web.config
和App_Data\config
目录下的base.config
文件 - 测试一下其他内网浏览器是否能打开web页面
第一次部署都需要联系开发人员进行web目录的注册
管理后端¶
webui-admin
是基于 框架 风格的API 实现后台管理(在这里似乎不能称之为后端,因为没有专门从框架中分离出后端),搭配使用webui
前端组成的一套后台用户、主要权限以及系统管理的解决方案(提供登录,注册 密码修改 鉴权 用户管理 角色管理 权限管理 前端组件管理 前端路由管理 通知服务API 系统基础信息接口)
部署 web目录参数只要配置好就能使用。需联系开发人员进行配置。
修改相关配置
创建数据库
主库关键字base
- 各类监测监控中心库
- 储量中心库
- 各类监测监控节点库如下:
- 3d_LY #3D节点库
- LKJT_HydrologicalMonitor_LY #水文监测节点库
- LKJT_MinePressure_LY #应力与微震节点库
- LKJT_PersonLocation_Note_LY #人员定位节点库
- LKJT_SafeyMonitor_Node_LY #安全监测节点库
帆软报表
报表修改 报表启动 报表同步
webui-admin 部署完毕
监测监控部署¶
搭建FTP服务¶
- 本教程只适合曲靖、临矿集团、陕煤集团。
- 1.安装ftp软件 在监测监控服务器安装FileZilla_Server软件到操作系统,一路下一步即可。
- 2.创建ftp目录
- 在D盘新建ftp目录,创建以下子目录,详见表1。
- 表1 ftp目录说明
| 序号 | 目录名称 | 说明 | |----|----------------|----| | 1 | anquanjiance | 安全监测上传数据 | | 2 | kuangya | 矿压上传数据 | | 3 | renyuandingwei | 人员定位上传数据 | | 4 | shuiwen | 水文上传数据 | | 5 | weizhen | 微震上传数据 | | 6 | yingli | 应力上传数据 |
- 根据需要还要在这些目录下面创建煤矿编码文件夹和LOG文件夹,用于存储上传监测数据和已读取的历史数据。如下图所示。
- 3.创建用户名 初始化用户名和密码为用户名ftpuser,密码LONGruan123,在ftp管理界面编辑用户,如下图所示。
- 添加用户名称,再设置密码,然后启用该帐户。
- 4.权限配置 添加该目录,并配置权限,不要勾选目录的删除权限。确定以后保存配置。如下图所示。
- 5.测试上传
- 在其他主机上打开资源管理,输入ftp://ip,此ip为监测监控主机的ip,输入用户名和密码,登录到ftp目录,进行上传和删除测试。
数据接入与调试¶
- 监测类数据接入
目前完成word文档的编写,请参考:矿井监测数据接入实施手册。下载地址:矿井监测数据接入实施手册 链接: https://pan.baidu.com/s/1O_4s-bDITxi4iT8xCftsZQ 提取码: nj7s
设置开机启动项¶
使用进程监控工具定期重启龙软接口程序。 参考:服务器接口程序自动监测2.0
目的¶
实现接口程序的自动监测:若未运行,则启动接口程序;若已运行但60秒内无响应,则重启接口程序。
部署监控程序¶
1.下载进程监控小工具(RestartOnCrash)--全网独家汉化版,解压缩程序到一个文件夹,如d:\temp,在此文件夹下创建log.txt文件作为日志记录。
运行汉化版后的主程序界面:
2.将日志文件的设置与路径相关联,勾选“将事件记录到文件中”,在下面的...里配置路径为d:\temp\log.txt。
3.设置监测无响应的时间(宽限期默认60秒),主程序设置为开机自动启动,启动后最小化。 4.添加需要监测的程序。点击添加,依次填入需要监测的程序路径,监测条件,(2)若勾选“已经不再运行”,则被监测的程序未运行,则会自动启动该程序,(4)里也需要选路径。
设置完以后,需要修改时,可以在已配置的列里右键,选择编辑或删除。
5.写一个批处理,用于重启所有接口程序,删除历史文件,并设置为每天定时执行。 在桌面上新建"一键启动接口程序2.bat”文件,执行时先关闭监控程序,再关闭所有接口程序,清理垃圾文件后重启监控程序。把脚本放置在开机启动项里,内容如下:
@echo off
ping 127.0.0.1 -n 5 >nul
echo 正在关闭接口程序
taskkill /f /im RestartOnCrash汉化版.exe
ping 127.0.0.1 -n 5 >nul
taskkill /f /im SafetyMonitor.exe
ping 127.0.0.1 -n 5 >nul
ping 127.0.0.1 -n 5 >nul
echo 正在清除系统垃圾文件,请稍等......
del /f /s /q C:\inetpub\logs\LogFiles\FTPSVC2\*.*
echo 清除缓存完成!
ping 127.0.0.1 -n 5 >nul
echo 正在重新打开程序
start D:\temp\RestartOnCrash汉化版.exe
ping 127.0.0.1 -n 2 >nul
echo 执行完毕。此脚本将于60秒后自动关闭!
ping 127.0.0.1 -n 60 >nul
注意事项¶
不能多开需要监测的程序,若遇到多开情况,请关闭所有程序以后,再执行批处理。 主程序关闭后就无法实现监测了,所以,最小化即可。
视频接入¶
- 需要在厂家的视频录像机上单独创建用户并接入视频信号。
- 使用IE11浏览器,并已经安装插件。
- 三网能互相访问。办公网、工业网、生产网。视频一般处于工业网,视频厂家有海康威视、宇视之类。
- 硬盘录像机上已创建了对应的用户。如地面办公楼是一个用户。
- 在平台上录入视频的配置信息,获取视频。
GIS服务部署¶
协同服务
主要是gis软件后台管理及使用客户端进行图纸更新。
- 安装gis软件后注册软件,数据库可以在另一台主机上,然后调用该主机的数据库即可。再配置一下gis协同服务,注意:不要多个协同服务调用同一个数据库,只能有一个协同服务。启动快速,但若有新图层添加后需手动重启该服务。进行配置后调用co_server.exe开启服务。
地图服务
主要是用来在平台进行一张图的展示。
- 有图纸入库后,可以使用地图服务。默认读取admin账号的地图图层分类及图层信息。启动缓慢。进行配置后调用map_server.exe开启服务。
文档浏览服务
主要作用是平台的上传下载菜单上传文件后可以进行在线预览。
- 找一张龙软lfmx格式的图纸(有无内容均可),放在指定目录下,选择地图服务,不调用数据库,而是调用文件,指定工作目录和工作名。数据源类型选file。进行配置后调用map_server.exe开启服务。
测试通过后把所有的gis服务勾选监控,并把LrSvrConfTool.exe程序设置为开机启动项即可。
使用文档¶
这部分是介绍安全生产共享平台用户使用文档
验收文档¶
文档整理¶
公式编辑
在编写项目文档的过程中,有些公式是图片格式,需要转换为公式编辑器能编写的公式。
- 参考:工具使用技巧:将图片公式转为Word里的公式 https://blog.csdn.net/weixin_40165004/article/details/89676582
- 操作方法:主要是用来将图片公式转为LaTex公式,使用的工具Mathpix Snipping Tool,下载后用一个临时邮箱注册一下,转换会有次数限制,到时候换一个邮箱注册即可。先进行图片识别,识别时就把需要识别的图片先准备好,或者直接截图,简单的就不要截图了,直接手动输入更快。转换为LaTeX的格式,有识别准确率的问题,需人工校阅后,再插入word中。把LaTeX格式的公式复制到MathType,再粘贴到word中。
- 优势:通过机器学习识别图片中的公式,至少比手动录入公式要节约时间。
插件部署¶
浏览器部署文档¶
临矿安全生产共享平台所用浏览器插件部署文档, 部分文档会因为版本迭代不可用,此文档只作为参考文档,谢谢。
1.Google Chrome
推荐使用Google Chrome(谷歌浏览器)简体中文版下载地址 但偶尔上传资料时或者查看视频时无法调用插件,可以使用360浏览器开启极速模式作为备用。
2.Internet Explorer 11(IE11)
推荐使用Internet Explorer 11(IE11)简体中文版下载地址 上传资料时或者查看视频时需先安装插件。
3.Flash Player插件
分为for IE和非IE两种版本,建议都安装下载地址 链接: https://pan.baidu.com/s/1wzvLpHIXFvPO_jAzWDQD2g 提取码: u4xw 上传资料时需先安装此插件。
4.PDF插件
Adobe Acrobat Reader DC简体中文版下载地址 在线预览文档时需先安装此插件。
5.视频插件
登录平台-帮助中心-视频监控插件,下载到本地后执行安装文件。配置方法 链接: https://pan.baidu.com/s/1Fh3UdW-xkoiUlhYy9V7imQ 提取码: i4b9 在线查看视频时需先安装此插件。
GIS制图¶
gis数据库¶
地质测量数据库
主要是保存地测类钻孔与巷道坐标信息。
- 数据库命名规范:GCKDC #古城煤矿地质测量数据库
地质测量数据库
主要是保存一张图图纸信息。
- 数据库命名规范:GCKGIS #古城煤矿GIS数据库
地测四件套使用说明书¶
1.地测空间管理信息系统
讲解gis软件基础命令和地质专业菜单的使用方法。
- 地测空间管理信息系统使用手册:下载地址 链接: https://pan.baidu.com/s/1hxzJLbbgAOirWDRz5qv2LQ 提取码: vj7s
2.通风安全管理信息系统
讲解通风专业菜单的使用方法。
- 通风安全管理信息系统使用手册:下载地址 链接: https://pan.baidu.com/s/1N-c1tXkgGesVzEI5kW5Hzw 提取码: bmd7
3.煤矿井下供电设计系统
讲解机电专业菜单的使用方法。
- 煤矿井下供电设计系统使用手册:下载地址 链接: https://pan.baidu.com/s/1VgsN84wz9qhC3YpS4FYO1w 提取码: kpb1
4.采矿辅助设计系统
讲解设计专业菜单的使用方法。
- 采矿辅助设计系统使用手册:下载地址 链接: https://pan.baidu.com/s/1jCwRQGfvblG0UhL3HNdh8A 提取码: 4ky5
一张图图纸管理¶
1.一张图制图平台协同及地图服务管理、图种分类标准
讲解地图服务和协同服务的管理方法。
- 一张图制图平台协同及地图服务管理手册:下载地址 链接: https://pan.baidu.com/s/1Ij6VmHlS0zjwj0sIwi2AOQ 提取码: qvvx
注意:先把admin用户下的所有图层类别和图层都创建并添加好,再创建其他用户(建议都为英文),创建时该用户会继承admin的当前分类和图层名,但不会自动与admin实时同步。而且创建用户后可以在用户名称上右键添加该用户的中文姓名,方便区分。
2.一张图数据处理规范
讲解矿井图纸数据处理规范和属性数据录入要求。
- 临矿属性表:下载地址 链接: https://pan.baidu.com/s/1PZBixCXuJs75SRlwfGh3xA 提取码: z2dr
- 制图字体规范:下载地址 链接: https://pan.baidu.com/s/1jC5GTZladOoACdLCvnNkPg 提取码: qkwp
3.人员定位路径画法
讲解人员定位路径的绘制方法。
- 人员定位路径画法:下载地址 链接: https://pan.baidu.com/s/1k_flD41c__qSLnWXJrPGcQ 提取码: atxk
gis其他功能¶
1.一张图登录地址
- 临矿集团一张图登录地址:下载地址 链接: https://pan.baidu.com/s/103lzr23mnZkVfqcl8Q8PWQ 提取码: njha
2.安全巡检操作
- 安全巡检简易操作:下载地址 链接: https://pan.baidu.com/s/1tcvae3HKHEcXZjGlf4tgew 提取码: 9bxi
3.地质三书
讲解自动生成地质三书的方法。
- 地质三书功能:下载地址 链接: https://pan.baidu.com/s/1qb7vB1VipKlCJqIdXM-5iA 提取码: hg2i
4.水害预测
讲解生成水害预测图的方法。
- 水害预测功能:下载地址 链接: https://pan.baidu.com/s/1HjFgg7wlcE7jr1-CmrUYJg 提取码: mec8
一张图配置¶
坐标转换¶
在已入库的采掘工程平面图上查找井田边界图层,找到井田边界所有关键点的坐标,再进行坐标转换操作。
- 坐标转换方法详见《坐标转换教程》:下载地址 链接: https://pan.baidu.com/s/1DmDccNnZ6-EP_aGC-eDRSw 提取码: 1utm
- 坐标转换时需要用到的软件,运行坐标转换程序文件夹下的坐标转换.exe程序:下载地址 链接: https://pan.baidu.com/s/1UiGgFI-zGsEhkLzEAe8UKg 提取码: crey
坐标转换方法¶
由于矿井提供的图纸的井田边界坐标是高斯坐标,需要转换成地理坐标才能被识别。和上面的《坐标转换教程》内容一致,讲解坐标转换步骤。
准备转换数据¶
- 例如这里准备的数据放在临时文件02.xls,不能是xlsx格式。其中x坐标是7位,y坐标是8位。
使用坐标转换程序进行转换¶
- 使用专用的转换程序进行坐标转换,才能使用这些坐标。打开坐标转换程序文件的坐标转换.exe程序,进行如下设置,陕西这些煤矿的中央经度应该都是108。再导入数据。根据y值前2位判断度带,再选择中央经度。
- 计算完以后再进行度分秒转换,转换时需要excel里都转成数字格式,否则转出的数据有误,附件1中有转换的参考资料。导出数据,生成03.xls文件,把经度和纬度转换为数字。
- 选中数值,点击左上角的黄色感叹号,再点击“转换为数字”。
- 把纬度和经度复制到xx煤矿范围拐点坐标(转换后).xls文件中,替换纬度和经度,生成最右侧的数据。
转换后检查数据¶
如果填入到矿井边界里验证时发现范围不对(图形轮廓对比一下原图的井田边界轮廓和图形位置:对比一下设置以后能否在平台的一张图看到煤矿的图纸),还有图形的形状是否有异常,可以通过与相邻的矿井边界对比判断,若有问题,需要重新生成拐点坐标,先检查原始数据,再验证转换过程,一般出问题都因为转换过程中的excel表的内容未改为数字格式引起的。
平台设置¶
注意:请使用超级管理员进行操作
添加煤矿代码和边界
将煤矿代码和井田边界数据提供给开发人员。超级管理员登录集团平台,在平台运维-系统管理配置-一张图配置-矿井信息管理菜单添加煤矿。 参考其他煤矿的井田边界坐标格式进行配置。
new L.Polygon([
L.latLng(35.6348, 116.6266),
L.latLng(35.6329 , 116.6244 ),
L.latLng(35.5746 , 116.6244 ),
L.latLng(35.5746 , 116.6744 ),
L.latLng(35.5815 ,116.6911 ),
L.latLng(35.5913 ,116.6911 ),
L.latLng(35.5912 ,116.7105 ),
L.latLng(35.5996 ,116.7244 ),
L.latLng(35.6093 ,116.7244 ),
L.latLng(35.6154 , 116.7094 ),
L.latLng(35.6273 ,116.6958 ),
L.latLng(35.6290 , 116.7013 ),
L.latLng(35.6301 , 116.7116 ),
L.latLng(35.6357,116.7127),
L.latLng(35.6413,116.6911),
L.latLng(35.6579,116.6911),
L.latLng(35.6579,116.6577),
L.latLng(35.6413,116.6577),
L.latLng(35.6401,116.6352),
])
设置需要显示的图层
在一张图配置里进行煤层管理。 根据gis库里的煤层分类进行煤层标识的设置。 默认要显示地形图和主要在采煤层的图层。
设置默认打开的图种
联系开发人员设置默认图种。 进入到平台一张图界面,只勾选采掘工程平面图,在右侧设为默认图形。
测试
测试是否能正常显示,若检查时发现煤矿的边界位置错乱或有飞点的情况,则是添加的拐点坐标有问题,可能是格式错误,需要检查拐点坐标,重新进行配置。
采掘工程类¶
修改web目录下的MLfunc.js文件,在该文件夹下找data.map_矿名简写.js名称的文件。修改后提交代码,清理浏览器缓存。
回采工作面
- gis里的图层在这里`注意:工作面属性的是否在采要改为是才能在平台显示该工作面的信息。
- 再修改data.map_矿名简写.js文件。图层名称可以使用模糊搜索,如只写一个回采工作面,但一般掘进和回采工作面都用全称会好一些。其他的若有多个图层,需要属性都配置一致,而且有内容。
- associationModule: '掘进地质说明书,回采地质说明书,采掘作业规程',的意思是从这三个菜单中找工作面关键字,若包含这些关键字,则显示出来。
- 属性扩展信息意思是显示这些菜单
- 最后的 labelDisplay意思是怎么显示列表,若可以改成这样的。
labelDisplay: '名称,块段编号'
显示效果如下
掘进工作面
采区
煤巷
岩巷
衔接计划
防治水类¶
防治水 观测站、积水区、水泵房、涌水点
一通三防类¶
修改web目录下的MLfunc.js文件,在该文件夹下找data.map_矿名简写.js名称的文件。修改后提交代码,清理浏览器缓存。
通风 主扇、局扇、测风站
防尘系统 隔爆水棚、供水管路
机电运输类¶
机电不用配置
一张图后台管理¶
主要适用于临矿。以下都是直接编辑mlfunc.js文件。
加载图种分类设置
根据不同矿井的图种分类来单独进行设置。 搜索function openTZ(tzmodulename, callback) 在下面找到需要单独设置的矿井
else if (tzmodulename == '压风系统') {
if (deptName == "王楼煤矿" || deptName == "郭屯煤矿" || deptName == "新驿煤矿") #有的矿井是压风管路系统图,把这些矿井名称填好
tzName = "安全类^压风管路系统图";
else
tzName = "安全类^压风自救系统图";
}
修改另一个设置
新加入的矿井需要设置。
搜索function InitModule_data_z(m_index, s_index, t_index) 在下面添加新的矿井,如&& deptName != "里彦煤矿"
if (selectModuleName == "监测分站" || selectModuleName == "检测分站" || selectModuleName == "截止阀" || selectModuleName == "岩巷" || selectModuleName == "回柱绞车" || selectModuleName == "检测读卡器" || selectModuleName == "电话" || selectModuleName == "回采工作面") {
if (deptName != "郭屯煤矿" && deptName != "彭庄煤矿" && deptName != "新驿煤矿" && deptName != "里彦煤矿") {
Module_Data_z.sort(SortByProperty);
显示人员轨迹
新加矿井需设置。 搜索function print_rygj(stationID, trace) 在下面添加新矿井
else if (deptName == "古城煤矿")
person_layer = "人员定位路径GCK0000ARY";
else if (deptName == "王楼煤矿")
person_layer = "人员定位参考路径WLK0000ARY";
else if (deptName == "里彦煤矿")
person_layer = "人员定位路径LYK0000ARY";
else if (deptName == "郭屯煤矿")
person_layer = "人员定位路径GTK0300ARY";
else if (deptName == "彭庄煤矿")
person_layer = "人员定位路径PZK0303ARY";
else if (deptName == "新驿煤矿")
person_layer = "人员定位路径XYK0000ARY";
掘进头危险源设置
掘进工作面的危险源图层设置方法。 搜索function EarlyWarning() 在下面添加新的矿井
else if (deptName == "王楼煤矿") {
jjtlayer = "掘进工作面";
dangerlayer = "断层,已采采空区";
jjtkey = "USER__CUSTOMPROPERTY_中文名称";
}
else if (deptName == "鲁西煤矿") {
jjtlayer = "掘进工作面";
dangerlayer = "村庄,保护煤柱";
jjtkey = "USER__CUSTOMPROPERTY_掘进头名称";
}
else if (deptName == "新驿煤矿") {
jjtlayer = "掘进头";
dangerlayer = "陷落柱,村庄,井田边界,断层,保护煤柱";
jjtkey = "USER__CUSTOMPROPERTY_掘进头名称";
}
else if (deptName == "郭屯煤矿") {
jjtlayer = "掘进工作面";
dangerlayer = "陷落柱,村庄,井田边界,断层,煤巷,保护煤柱";
jjtkey = "USER__CUSTOMPROPERTY_掘进头名称";
}
else if (deptName == "彭庄煤矿") {
jjtlayer = "掘进工作面";
dangerlayer = "陷落柱,村庄,井田边界,断层,保护煤柱";
jjtkey = "USER__CUSTOMPROPERTY_掘进头名称";
}
else if (deptName == "里彦煤矿") {
jjtlayer = "掘进工作面";
dangerlayer = "陷落柱,村庄,井田边界,断层,保护煤柱,积水区,岩巷,煤巷,钻孔"; #主要修改这些图层名称关键字
jjtkey = "USER__CUSTOMPROPERTY_掘进头名称";
}
监测监控维护¶
配置管理
- 需定期检查各业务数据库和龙软转发接口程序的配置,若现场的对接ip或读取的源有更新,配置需同步更新。
数据检查
- 需定期抽查上传的源数据。
- 检查log中经常出现的报警,优先对能引起传输中断和数据异常的安全监测和人员定位问题进行处理。
- 对数据库中已写入的数据进行抽查,是否和源数据一致。
- 对平台展示内容进行抽查,查看是否和数据库一致。
精简数据库
- 监测类的数据库中安全监测和人员定位的节点数据库的数据量是最大的,需要定期进行清理。
- 下面是删除安全监测节点库历史数据的脚本:人员定位节点库类似,把'%SM_AnalogStatistics_%'换成其他的就行。目前只能手动指定时间段,改create_date<'2019-04-01'的时间为1个月或三个月前的日期,不知道有没有自动根据当前时间删除3个月前数据的方法。
declare @TableName nvarchar(64);
declare @create_date nvarchar(64);
DECLARE MY_CUR CURSOR FOR --声明游标
SELECT name,create_date FROM sys.tables where (name like '%SM_AnalogStatistics_%' or name like '%SM_HistoryData_%' or name like '%SM_HourStatistics_%' or name like '%SM_DayStatistics_%')
and create_date<'2019-04-01' and create_date>'2015-12-09'
OPEN MY_CUR --打开游标
FETCH NEXT FROM MY_CUR --获取游标的下一行
into @TableName,@create_date
WHILE @@FETCH_STATUS = 0 --FETCH语句执行成功
BEGIN
declare @exesql nvarchar(1000);
declare @table varchar(50);
set @table=@TableName;
IF EXISTS (SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'['+@table+']') AND OBJECTPROPERTY(ID, 'IsTable') = 1)
begin
set @exesql='DROP TABLE '+@table+''
print @exesql
execute sp_executesql @exesql
end
ELSE
PRINT'不存在'
FETCH NEXT FROM MY_CUR --获取游标的下一行
into @TableName,@create_date
END
CLOSE MY_CUR --关闭游标
DEALLOCATE MY_CUR --释放游标
- 中心库中会积累很多过期的报警数据,需要定期进行清理。
- 下面是删除报警数据的脚本:
delete FROM [SafetyMonitor_Center_ZM].[dbo].[SM_WarnData] where Time<='2019-01-01'
平台运维¶
权限文档¶
这部分主要讲解关于系统中权限相关的说明 注意:超级管理员用户不受权限限制,默认拥有所有权限。
代码更新¶
版本更新¶
主要介绍下前后端都是如何进行版本更新的
- 代码自动部署计划
- 1.任务要求:
- (1)每天夜里2点更新最新源码到8个煤矿web服务器和集团的2个web服务器(鲁西旧平台不同步,由开发人员手动同步),共10个。
- 2.准备工作:
- (1)准备所有待更新的服务器的ip地址和登录密码清单。
- (2)部署jenkins的服务器要求能访问外网,并且其他web服务器能通过http下载此服务器的文件。
- (3)svn源码库的地址和svn帐号(建议只分配只读权限)。
- (4)下载jenkins部署时需要的安装包。
- (5)开发人员正在使用的源码一套。
- (6)做好web服务器的备份工作。
- 3.具体实施步骤:
- (1)先测试网络。A服务器分发下载包,其他服务器使用脚本自动下载并解压缩。测试网络速度和稳定性。
- (2)部署jenkins的服务器最好设置到集团,若集团服务器无法满足需求,只能部署到某一矿端服务器。若安装jenkins后无法自动编译,则需要安装vs2012开发环境。设置为每天2点20分0秒自动下载源码并编译打包。构建一次并推送(一定要保证矿端都已经手动更新到最新),若成功,则只会把刚提交的文件打包。然后把开机启动jenkins的命令设置一下。
- 4.测试:
- (1)jenkins执行构建后是否能正确打包?构建需要5分钟,期间请勿进行任何操作。构建服务器需删除360安全卫士,否则无法执行bat命令。
- (2)打包文件是否可以用解压缩软件正确解压?需安装7z压缩软件。
- (3)打包文件是否能按日期正常筛选最新文件?(若不能,则执行构建时不要中途暂停,重新下载svn源码后,按日期搜索的命令会失效,导致打包文件体积暴增,需要等一个月,解决方法是把开发人员本地备份的源码替换上去)。
- (4)矿业公司是否能正常下载更新包?检查目录是否正确创建好,7z压缩软件和wget.exe下载程序是否已经安装。
- (5)矿业公司手动修改版本号后是否能自动重新下载更新包?
- (6)更新后是否能正常显示出新功能?
- 5.回滚:
- (1)回滚原理是通过手动输入svn版本来确定打包成哪个版本,再强制修改已经部署好的文件。一般情况下不要使用。
前端更新¶
由于前端是静态文件+配置文件+上传资料,更新起来需要单独更新某几个目录,在svn同步最新代码,然后编译后覆盖对应文件即可。 目前已实现自动编译并定时分发给生产环境服务器和测试服务器。
后端更新¶
后端主要是帆软报表的修改和数据库的修改。
Jenkins部署方案2.0¶
改进¶
- 构建后能立即推送到web服务器,而且是并发推送,互不影响。
- 完善的反馈机制,推送更新后,会自动反馈更新结果,并发邮件进行提醒。
- 实现一键回滚。
- 增加参数化构建,使用规范的变量名称。
实施思路¶
先完成基本的功能需求
- 获取最新源码或获取指定版本(默认获取最新),指定版本则是进行回滚。注意:目前需要开发人员提交代码到svn3分钟后才能获取到,无解。
- 打包打成全量包和半增量包(半增量包改为2个月以内的文件)
- 构建、打包是一套,和部署进行分离。通过触发条件进行升级包的定向分发。
- 兼容1.0方案的矿端被动获取的脚本,增加部署成功率。
- 更新后反馈更新结果,并进行检查,若触发条件则发邮件进行提醒。
以单独打包的方式实现新功能,若新功能有问题,则能通过一键回滚进行恢复。
- 压缩图片文件(非常稳定,需先手动压缩一次全部推送,以后就只需要压缩修改过的文件即可)
- 对cshtml文件加js和css文件的版本号(有两种实现方式,手动的快速而且稳定,自动需要配很多参数,已解决了乱码问题,测试也稳定了,但cshtml文件有的保存时不是按utf-8 with bom编码进行存储的(是开发的问题,等开发统一保存文件的编码后才算真正解决),暂不推广)
- 压缩js文件(目前矿端正常,但集团有菜单打不开,不推广)
- 若发现自动更新有问题可以手动删除web目录下的revision.txt文件,再手动运行脚本D:\upload\自动更新矿端web代码\自动更新web代码.bat。这样会重新覆盖一次全量文件,算是做了一次全量更新。俗称万能的后悔药。
实施步骤¶
- 1.创建一个Jenkins工程作为编译打包用。
- 2.清理临时目录。
- 3.build并输出文件到临时文件夹。
可以执行参数化构建,在svnurl里加一个参数如:
https://xxxxxxxx/svn/xm18-007-01${SVN_VERSION_NO}
构建时默认为空,则会打包最新的svn版本,构建时输入@2333之类的版本号则会回滚到任意版本。(高危操作,请谨慎执行)
- 4.生成全量包
- 5.生成半增量包(2个月内)
- 6.检查各矿是否需要更新代码 在Jenkins服务器上新建ftp目录websvn,矿端版本文件上传到oldsvn文件夹。
新建D:\upload\oldsvn.bat文件,内容如下
@echo off
set localPath=D:\ftp\websvn\oldsvn
echo 更新前先检查各矿web的svn信息
set /p var0=<%localPath%\jituan163_revision.txt
echo 临矿集团163当前的版本号是:%var0%
set /p var1=<%localPath%\jituan164_revision.txt
echo 临矿集团164当前的版本号是:%var1%
set /p var2=<%localPath%\jituan169_revision.txt
echo 临矿集团169当前的版本号是:%var2%
set /p var3=<%localPath%\wanglou_revision.txt
echo 王楼煤矿当前的版本号是:%var3%
set /p var4=<%localPath%\gucheng_revision.txt
echo 古城煤矿当前的版本号是:%var4%
set /p var5=<%localPath%\liyan_revision.txt
echo 里彦煤矿当前的版本号是:%var5%
set /p var6=<%localPath%\xinyi_revision.txt
echo 新驿煤矿当前的版本号是:%var6%
set /p var7=<%localPath%\guotun_revision.txt
echo 郭屯煤矿当前的版本号是:%var7%
set /p var8=<%localPath%\pengzhuang_revision.txt
echo 彭庄煤矿当前的版本号是:%var8%
set /p var10=<%localPath%\luxi_revision.txt
echo 鲁西煤矿当前的版本号是:%var10%
set /p var9=<%localPath%\svn_revision.txt
echo svn最新的版本号是:%var9%
echo 判断是否需要更新
if %var0% geq %var9%(
echo pass
) else (
echo 临矿集团163服务器未更新为最新版,更新web代码
echo you_need_update_server
curl http://172.22.101.11:8080/job/jituan163_webserver/build?token=fe20f2d33760fbeec0a362dbbf59cd18
)
if %var1% geq %var9%(
echo pass
) else (
echo 临矿集团164服务器未更新为最新版,更新web代码
echo you_need_update_server
curl http://172.22.101.11:8080/job/jituan164_webserver/build?token=fe20f2d33760fbeec0a362dbbf59cd18
)
if %var2% geq %var9%(
echo pass
) else (
echo 临矿集团169服务器未更新为最新版,更新web代码
echo you_need_update_server
curl http://172.22.101.11:8080/job/jituan169_webserver/build?token=fe20f2d33760fbeec0a362dbbf59cd18
)
if %var3% geq %var9%(
echo pass
) else (
echo 王楼煤矿服务器未更新为最新版,更新web代码
echo you_need_update_server
curl http://172.22.101.11:8080/job/wanglou_webserver/build?token=fe20f2d33760fbeec0a362dbbf59cd18
)
if %var4% geq %var9%(
echo pass
) else (
echo 古城煤矿服务器未更新为最新版,更新web代码
echo you_need_update_server
curl http://172.22.101.11:8080/job/gucheng_webserver/build?token=fe20f2d33760fbeec0a362dbbf59cd18
)
if %var5% geq %var9%(
echo pass
) else (
echo 里彦煤矿服务器未更新为最新版,更新web代码
echo you_need_update_server
curl http://172.22.101.11:8080/job/liyan_webserver/build?token=fe20f2d33760fbeec0a362dbbf59cd18
)
if %var6% geq %var9%(
echo pass
) else (
echo 新驿煤矿服务器未更新为最新版,更新web代码
echo you_need_update_server
curl http://172.22.101.11:8080/job/xinyi_webserver/build?token=fe20f2d33760fbeec0a362dbbf59cd18
)
if %var7% geq %var9%(
echo pass
) else (
echo 郭屯煤矿服务器未更新为最新版,更新web代码
echo you_need_update_server
curl http://172.22.101.11:8080/job/guotun_webserver/build?token=fe20f2d33760fbeec0a362dbbf59cd18
)
if %var8% geq %var9%(
echo pass
) else (
echo 彭庄煤矿服务器未更新为最新版,更新web代码
echo you_need_update_server
curl http://172.22.101.11:8080/job/pengzhuang_webserver/build?token=fe20f2d33760fbeec0a362dbbf59cd18
)
if %var10% geq %var9%(
echo pass
) else (
echo 鲁西煤矿服务器未更新为最新版,更新web代码
echo you_need_update_server
curl http://172.22.101.11:8080/job/luxi_webserver/build?token=fe20f2d33760fbeec0a362dbbf59cd18
)
ping 127.0.0.1 -n 3 >nul
- 7.执行包文件的分发(若ftp目录里判断出矿端的版本不需要更新,则不推送)
新建几个新工程,为每个矿新建一个ssh的远程,若执行了curl命令则会触发该工程,通过ssh执行矿端的更新脚本,更新完成后会上传矿端版本文件到ftp目录。因为是并发部署,各矿之间不会互相干扰,若出现网络问题,则不会更新成功,同时还有矿端设置的1.0用的更新脚本定期检查做备用。可以把Jenkins的并发执行工程数设置大一些,默认是2,同时只能执行2个工程。
矿端的2.0更新脚本内容是这样的
@Echo Off
set localPath=D:\lyWeb\revision.txt
set renname=liyan_revision.txt
set ftpip=172.22.101.11
set username=ftpuser
set password=LONGruan123
set ftpPath=.\websvn\oldsvn
wget.exe -O D:\upload\upload.zip http://172.22.101.11/Resources/upload-semi.zip
del /f /s /q D:\upload\temp\*.*
RD /s /q D:\upload\temp\
mkdir D:\upload\temp\
call C:\"Program Files"\7-Zip\7z.exe x D:\upload\upload.zip -oD:\upload\temp
echo d | xcopy D:\upload\temp\update\Areas D:\lyWeb\Areas /s /e /r /y
echo d | xcopy D:\upload\temp\update\bin D:\lyWeb\bin /s /e /r /y
echo d | xcopy D:\upload\temp\update\Content D:\lyWeb\Content /s /e /r /y
echo d | xcopy D:\upload\temp\update\fonts D:\lyWeb\fonts /s /e /r /y
echo d | xcopy D:\upload\temp\update\Scripts D:\lyWeb\Scripts /s /e /r /y
echo d | xcopy D:\upload\temp\update\Views D:\lyWeb\Views /s /e /r /y
echo f | xcopy D:\upload\temp\update\revision.txt D:\lyWeb\revision.txt /r /y
del /f /s /q D:\upload\temp\*.*
RD /s /q D:\upload\temp\
mkdir D:\upload\temp\
Echo open %ftpip% >ftp.del
Echo %username%>>ftp.del
Echo %password%>>ftp.del
Echo Cd %ftpPath% >>ftp.del
Echo binary>>ftp.del
Echo delete %renname%>>ftp.del
Echo bye>>ftp.del
FTP -s:ftp.del
del ftp.del /q
Echo open %ftpip% >ftp.up
Echo %username%>>ftp.up
Echo %password%>>ftp.up
Echo Cd %ftpPath% >>ftp.up
Echo binary>>ftp.up
Echo put %localPath% %renname%>>ftp.up
Echo bye>>ftp.up
FTP -s:ftp.up
del ftp.up /q
echo lyweb-up执行完毕
1.0版矿端的定时检查脚本内容如下:
@echo off
echo update配置,用于设置本地更新路径,若需要更新多个web,请自行添加为webPath1、2,例如D:\lyWeb (注意最后不要加\)
set webPath=D:\lyWeb
set jenkinsip=10.155.128.234
echo ftp配置,用于上传更新后的版本信息
set localPath=D:\lyWeb\revision.txt
set renname=liyan_revision.txt
set ftpip=172.22.101.11
set username=ftpuser
set password=LONGruan123
set ftpPath=.\websvn\oldsvn
echo 下载最新的版本号
RD /s /q D:\upload\sync\
mkdir D:\upload\sync\
wget.exe -O D:\upload\sync\revision.txt http://%jenkinsip%/revision.txt
set /p var1=<D:\upload\sync\revision.txt
echo 最新的版本号是%var1%
echo 查看本地的版本号,先检查文件是否存在.
if exist %webPath%\revision.txt (
echo web目录下revision.txt文件已存在,可以进行进行版本号确认.
) else (
echo web目录下无revision.txt,开始创建revision.txt文件并写入数值1.
echo 1 > %webPath%\revision.txt
)
set /p var2=<%webPath%\revision.txt
echo 本地的版本号是%var2%
if %var2% geq %var1% (
echo 本地的版本大于或等于svn版本,不需要更新。
) else (
echo 执行更新,将下载最新的文件进行同步。
del /f /q /s D:\upload\upload.zip
RD /s /q D:\upload\temp\
mkdir D:\upload\temp\
if %var2% == 1 (
echo 将进行全量更新,下载full更新包
wget.exe -O D:\upload\upload.zip http://%jenkinsip%/Resources/upload-full.zip
) else (
echo 只进行半增量更新,下载半增量更新包
wget.exe -O D:\upload\upload.zip http://%jenkinsip%/Resources/upload-semi.zip
)
call C:\"Program Files"\7-Zip\7z.exe x D:\upload\upload.zip -oD:\upload\temp
echo d | xcopy D:\upload\temp\update\Areas %webPath%\Areas /s /e /r /y
echo d | xcopy D:\upload\temp\update\bin %webPath%\bin /s /e /r /y
echo d | xcopy D:\upload\temp\update\Content %webPath%\Content /s /e /r /y
echo d | xcopy D:\upload\temp\update\fonts %webPath%\fonts /s /e /r /y
echo d | xcopy D:\upload\temp\update\Scripts %webPath%\Scripts /s /e /r /y
echo d | xcopy D:\upload\temp\update\Views %webPath%\Views /s /e /r /y
echo f | xcopy D:\upload\temp\update\revision.txt %webPath%\revision.txt /r /y
Echo open %ftpip% >ftp.del
Echo %username%>>ftp.del
Echo %password%>>ftp.del
Echo Cd %ftpPath% >>ftp.del
Echo binary>>ftp.del
Echo delete %renname%>>ftp.del
Echo bye>>ftp.del
FTP -s:ftp.del
del ftp.del /q
Echo open %ftpip% >ftp.up
Echo %username%>>ftp.up
Echo %password%>>ftp.up
Echo Cd %ftpPath% >>ftp.up
Echo binary>>ftp.up
Echo put %localPath% %renname%>>ftp.up
Echo bye>>ftp.up
FTP -s:ftp.up
del ftp.up /q
)
echo 执行完毕。此脚本将于60秒后自动关闭!
ping 127.0.0.1 -n 60 >nul
- 8.等一段时间后检查部署情况。等120秒进行检查新建D:\upload\newsvn.bat文件,内容如下:
@echo off
set hour1=%time:~0,2%
if %hour1% lss 4 (
echo 当前小时小于4,等待时间长一些
ping 127.0.0.1 -n 300 >nul
) else (
echo 当前小时大于4,等待时间短一些
ping 127.0.0.1 -n 120 >nul
)
set localPath=D:\ftp\websvn\oldsvn
set localPathtemp=D:\ftp\websvn\temp
del /f /q %localPathtemp%\all_svn.txt
echo 各矿web最新的版本信息如下
set /p var0=<%localPath%\jituan163_revision.txt
echo 临矿集团163当前的版本号是:%var0%
echo 临矿集团163当前的版本号是:%var0% > %localPathtemp%\jituan163_revision.txt
set /p var1=<%localPath%\jituan164_revision.txt
echo 临矿集团164当前的版本号是:%var1%
echo 临矿集团164当前的版本号是:%var1% > %localPathtemp%\jituan164_revision.txt
set /p var2=<%localPath%\jituan169_revision.txt
echo 临矿集团169当前的版本号是:%var2%
echo 临矿集团169当前的版本号是:%var2% > %localPathtemp%\jituan169_revision.txt
set /p var3=<%localPath%\wanglou_revision.txt
echo 王楼煤矿当前的版本号是:%var3%
echo 王楼煤矿当前的版本号是:%var3% > %localPathtemp%\wanglou_revision.txt
set /p var4=<%localPath%\gucheng_revision.txt
echo 古城煤矿当前的版本号是:%var4%
echo 古城煤矿当前的版本号是:%var4% > %localPathtemp%\gucheng_revision.txt
set /p var5=<%localPath%\liyan_revision.txt
echo 里彦煤矿当前的版本号是:%var5%
echo 里彦煤矿当前的版本号是:%var5% > %localPathtemp%\liyan_revision.txt
set /p var6=<%localPath%\xinyi_revision.txt
echo 新驿煤矿当前的版本号是:%var6%
echo 新驿煤矿当前的版本号是:%var6% > %localPathtemp%\xinyi_revision.txt
set /p var7=<%localPath%\guotun_revision.txt
echo 郭屯煤矿当前的版本号是:%var7%
echo 郭屯煤矿当前的版本号是:%var7% > %localPathtemp%\guotun_revision.txt
set /p var8=<%localPath%\pengzhuang_revision.txt
echo 彭庄煤矿当前的版本号是:%var8%
echo 彭庄煤矿当前的版本号是:%var8% > %localPathtemp%\pengzhuang_revision.txt
set /p var10=<%localPath%\luxi_revision.txt
echo 鲁西煤矿当前的版本号是:%var10%
echo 鲁西煤矿当前的版本号是:%var10% > %localPathtemp%\luxi_revision.txt
set /p var9=<%localPath%\svn_revision.txt
echo svn最新的版本号是:%var9%
echo --------svn当前的版本号是:%var9%-------- > %localPathtemp%\svn_revision.txt
echo 判断是否需要发邮件,若有一个煤矿未更新到最新版,则发邮件
if %var0% geq %var9%(
echo pass
) else (
echo 临矿集团163服务器未更新为最新版,将发邮件给运维人员
echo you_need_update_server
)
if %var1% geq %var9%(
echo pass
) else (
echo 临矿集团164服务器未更新为最新版,将发邮件给运维人员
echo you_need_update_server
)
if %var2% geq %var9%(
echo pass
) else (
echo 临矿集团169服务器未更新为最新版,将发邮件给运维人员
echo you_need_update_server
)
if %var3% geq %var9%(
echo pass
) else (
echo 王楼煤矿服务器未更新为最新版,将发邮件给运维人员
echo you_need_update_server
)
if %var4% geq %var9%(
echo pass
) else (
echo 古城煤矿服务器未更新为最新版,将发邮件给运维人员
echo you_need_update_server
)
if %var5% geq %var9%(
echo pass
) else (
echo 里彦煤矿服务器未更新为最新版,将发邮件给运维人员
echo you_need_update_server
)
if %var6% geq %var9%(
echo pass
) else (
echo 新驿煤矿服务器未更新为最新版,将发邮件给运维人员
echo you_need_update_server
)
if %var7% geq %var9%(
echo pass
) else (
echo 郭屯煤矿服务器未更新为最新版,将发邮件给运维人员
echo you_need_update_server
)
if %var8% geq %var9%(
echo pass
) else (
echo 彭庄煤矿服务器未更新为最新版,将发邮件给运维人员
echo you_need_update_server
)
if %var10% geq %var9%(
echo pass
) else (
echo 鲁西矿服务器未更新为最新版,将发邮件给运维人员
echo you_need_update_server
)
echo web版本信息解析完毕
echo 将最新web版本信息保存成文本
copy %localPathtemp%\*.txt %localPathtemp%\all_svn.txt
echo f | xcopy %localPathtemp%\all_svn.txt D:\devopsweb\all_svn.txt /r /y
ping 127.0.0.1 -n 3 >nul
- 9.发邮件进行通知。发给技术负责人和提交代码的开发人员。模板如下:
<hr/>
<h3>(本邮件是由程序自动下发的,请勿回复!)</h3><hr/>
项目名称:临矿集团安全生产共享平台<br/><hr/>
构建工程:$PROJECT_NAME<br/><hr/>
SVN版本:${SVN_REVISION}<br/><hr/>
构建编号:$BUILD_NUMBER<br/><hr/>
构建状态:$BUILD_STATUS(若失败可能是矿端某台web服务器断线导致主动推送失败)<br/><hr/>
触发原因:${CAUSE}<br/><hr/>
构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><hr/>
构建地址:<a href="${BUILD_URL}">${BUILD_URL}</a><br/><hr/>
变更集:${JELLY_SCRIPT,template="html"}<br/><hr/>
将要推送到:临矿集团163(负载均衡165)、临矿集团164(负载均衡165)、临矿集团169、鲁西新平台、王楼、古城、里彦、郭屯、彭庄、新驿<br/><hr/>
推送结果:<pre>${BUILD_LOG_EXCERPT, start="^各矿web最新的版本信息如下", end="^web版本信息解析完毕"}</pre><br/><hr/>
在线查询最新版本信息(实验室功能):http://dp.hzl201.tk:8060/all_svn.txt<br/><hr/>
代码评审(实验室功能):http://sonar.hzl201.tk:8060<br/><hr/>
Jenkins研发:韩志龙<br/><hr/>
- 10.gulp打包实现cshtml文件自动加js和css文件md5戳的功能。gulp还需要很多配置,这里只展示集成到Jenkins的方法。脚本如下:
echo 把不需要转换的cshtml文件复制到临时目录cshtmlmd5
call D:\upload\iconv\copy-unc.bat
echo 把GB2312格式的cshtml文件复制到临时目录iconv
call D:\upload\iconv\copy-gb2312.bat
echo 把GB2312格式的cshtml文件的编码格式转换成utf-8,解决中文乱码问题
call D:\upload\iconv\iconv2.bat
echo 把GB2312转utf-8格式的cshtml文件从临时目录iconv复制到cshtmlmd5目录
echo d | xcopy D:\upload\lyweb-release\_PublishedWebsites\iconv D:\upload\lyweb-release\_PublishedWebsites\cshtmlmd5 /s /r /y
echo gulp打包,获取所有js和css文件的md5戳,修改所有cshtml的引用信息,增加v,若有js或css文件被修改,则md5值会变化,相应的cshtml会更新js或css的文件版本信息,解决浏览器缓存未更新的问题,这样就不需要在客户端浏览器手动清理缓存了。
echo 复制gulp依赖包
call C:\"Program Files"\7-Zip\7z.exe x D:\upload\gulp.7z -oD:\upload\lyweb-release\_PublishedWebsites
echo 执行gulp打包命令
ping 127.0.0.1 -n 3 >nul
d:
cd D:\upload\lyweb-release\_PublishedWebsites
gulp
ping 127.0.0.1 -n 3 >nul
echo 执行7z压缩命令
call C:\"Program Files"\7-Zip\7z.exe a D:\upload\sync\upload-semi-md5.zip D:\upload\lyweb-release\_PublishedWebsites\update\
echo f | xcopy D:\upload\sync\upload-semi-md5.zip D:\devopsweb\Resources\upload-semi-md5.zip /r /y /d
- 11.gulp打包实现压缩js文件功能。gulp还需要很多配置,这里只展示集成到Jenkins的方法。脚本如下:
echo 将压缩js文件
echo 清空D:\upload\update
del /f /q /s D:\upload\update\*.*
RD /s /q D:\upload\update\
mkdir D:\upload\update
echo 复制所有文件到D:\upload\min-temp
echo d | xcopy D:\upload\lyweb-release\_PublishedWebsites\LRSMES.WebUI\Areas D:\upload\min-temp\Areas /s /r /y
echo d | xcopy D:\upload\lyweb-release\_PublishedWebsites\LRSMES.WebUI\bin D:\upload\min-temp\bin /s /r /y
echo d | xcopy D:\upload\lyweb-release\_PublishedWebsites\LRSMES.WebUI\Content D:\upload\min-temp\Content /s /r /y
echo d | xcopy D:\upload\lyweb-release\_PublishedWebsites\LRSMES.WebUI\fonts D:\upload\min-temp\fonts /s /r /y
echo d | xcopy D:\upload\lyweb-release\_PublishedWebsites\LRSMES.WebUI\Scripts D:\upload\min-temp\Scripts /s /r /y
echo d | xcopy D:\upload\lyweb-release\_PublishedWebsites\LRSMES.WebUI\Views D:\upload\min-temp\Views /s /r /y
echo 将无法压缩的文件先放在临时目录里
call D:\upload\dist\copytotemp.bat
echo 删除无法压缩的文件
call D:\upload\dist\delupdatefile.bat
echo 执行gulp打包命令,压缩js文件
ping 127.0.0.1 -n 3 >nul
d:
cd D:\upload\
gulp
ping 127.0.0.1 -n 3 >nul
echo 复制无法压缩的文件到打包文件夹
echo d | xcopy D:\upload\temp D:\upload\update /s /r /y
echo 执行7z压缩命令
call C:\"Program Files"\7-Zip\7z.exe a D:\upload\sync\upload-full-jsmin.zip D:\upload\update\
echo f | xcopy D:\upload\sync\upload-full-jsmin.zip D:\devopsweb\Resources\upload-full-jsmin.zip /r /y
注意:xcopy命令选用/S时对源目录下及其子目录下的所有文件进行COPY。除非指定/E参数,否则/S不会拷贝空目录, 若不指定/S参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录。若只复制单个文件,不要加/S参数。
使用gulp加md5戳¶
请先了解gulp的基本用法:使用gulp部署web前端代码https://www.zybuluo.com/hzl201/note/1639542
目标¶
- cshtml文件引用js和css文件时若js或css文件有变化,则刷新浏览器后能自动加载最新的js或css文件,不需要清理浏览器缓存文件(目前能实现大部分js出现md5戳)。
- 开发人员不需要进行任何适配,保留当前的开发习惯和开发流程。
- cshtml文件加完md5戳以后能多次增加md5戳,不会出现运行多次后出现多个版本号的情况。
- cshtml文件转换后不能出现乱码。
- 出现新的cshtml文件后能自动加入转换列表(目前无法实现,只能手动添加)。
实施思路¶
分析源码
- js和css文件有重名的情况,只能根据根目录的相对路径+文件名的方式实现索引的唯一性,使用gulp先生成一个映射表,映射表内容分别是:“相对路径+文件名”和处理后的“相对路径+文件名+md5戳”,再通过gulp查询映射表修改所有cshtml文件中的匹配内容。若cshtml文件引用js和css文件不是相对路径,则无法识别并转换。
- 临矿pc端web将近2000个cshtml文件,其中有115个文件是GB2312格式的(又分为两种情况,若这些文件内容中没有中文字符,则不需要转换也能加md5戳,但只要内容存在中文字符,转换后必定乱码),需先转换成UTF-8格式,进行加md5处理后再转换成UTF-8 with BOM格式。其余的cshtml文件是UTF-8 with BOM格式的,可以直接加md5戳。
手动实现
- 使用UltraCodingSwitch软件可进行手动把所有文件转换成UTF-8 with BOM格式,速度快,稳定性高。但无法集成到Jenkins的自动发布流程里。
集成到Jenkins
- 使用iconv可进行转换,下载地址:http://files.cnblogs.com/adgnat/iconv.7z,但转换前需要先分离cshtml文件,把GB2312格式的文件复制到iconv文件夹,再使用iconv转换成UTF-8格式,再复制到cshtmlmd5文件夹;其他的cshtml文件直接复制到cshtmlmd5文件夹。,若GB2312格式的cshtml文件直接复制到cshtmlmd5文件夹,则必然出现中文乱码。若不是GB2312格式的cshtml文件使用iconv进行处理,则文件内容会变成“锘”。
- 需要把iconv.exe文件放在一个单独的文件夹,并添加好环境变量。否则Jenkins无法正确识别iconv命令。
- gulp进行转换
实施步骤¶
手动获取cshmtl文件的转换列表
- 检查是否有新的cshtml未转换。其中能转换的文件是gb2312格式的,需要加到gb2312处理的脚本里。全部文件是被删除的文件及路径。所有gb2312文件都被加到处理脚本(del和copy都加)以后,剩下的文件就是utf-8格式的,添加到utf-8的白名单里(del和copy都加)。
- 只需要单独运行一次即可,在Jenkins里不需要集成这个方法。
@echo off
echo 检查是否有新的cshtml未转换
echo 清理临时文件夹
del /f /q /s D:\upload\lyweb-release\_PublishedWebsites\update\*.*
RD /s /q D:\upload\lyweb-release\_PublishedWebsites\update\
mkdir D:\upload\lyweb-release\_PublishedWebsites\update\
del /f /q /s D:\upload\lyweb-release\_PublishedWebsites\iconv\*.*
RD /s /q D:\upload\lyweb-release\_PublishedWebsites\iconv\
mkdir D:\upload\lyweb-release\_PublishedWebsites\iconv\
del /f /q /s D:\upload\lyweb-release\_PublishedWebsites\cshtmlmd5\*.*
RD /s /q D:\upload\lyweb-release\_PublishedWebsites\cshtmlmd5\
mkdir D:\upload\lyweb-release\_PublishedWebsites\cshtmlmd5\
echo 复制所有文件到iconv文件夹
echo d | xcopy D:\upload\lyweb-release\_PublishedWebsites\LRSMES.WebUI D:\upload\lyweb-release\_PublishedWebsites\iconv /s /r /y
echo 删除iconv文件夹中已经被处理过的cshtml文件
call D:\upload\iconv\del-unc.bat
call D:\upload\iconv\del-gb2312.bat
echo 删除iconv文件夹中文件名有空格的的cshtml文件
del /f /q /s D:\upload\lyweb-release\_PublishedWebsites\iconv\Areas\MonitorWarning\Views\DM\"副本 Index.cshtml"
echo iconv检查
call D:\upload\iconv\iconv2.bat
echo iconv:cannot convert的cshtml文件是utf-8格式,请添加到utf-8的白名单copy-unc.bat和del-unc.bat里。先把所有的utf-8的文件都添加好。
echo 去除utf-8的文件后,下面的删除列表是gb2312文件,需添加到copy-gb2312.bat和del-gb2312.bat里。
del /f /q /s D:\upload\lyweb-release\_PublishedWebsites\iconv\*.cshtml
- del-unc.bat内容如下:
@echo off
set path=D:\upload\lyweb-release\_PublishedWebsites\iconv
del /f /q %path%\Areas\Base\Views\_ViewStart.cshtml
del /f /q %path%\Areas\Base\Views\DataDictionary\Index.cshtml
del /f /q %path%\Areas\Base\Views\Demo\CheckPerson.cshtml
del /f /q %path%\Areas\Base\Views\DocCheckRecord\CheckEditPage.cshtml
del /f /q %path%\Areas\BDDM\Views\MineReport\JT_SC_ExpectReport.cshtml
- del-gb2312.bat内容如下:
@echo off
set path=D:\upload\lyweb-release\_PublishedWebsites\iconv
del /f /q %path%\Areas\Base\Views\ExaminationType\ExaminationTypePage.cshtml
del /f /q %path%\Areas\Base\Views\ExaminationWebSiteConfig\Index.cshtml
del /f /q %path%\Areas\Base\Views\Ex_ExaminationItem\ExItemPage.cshtml
del /f /q %path%\Areas\Base\Views\MSG_MAIL_TEMP\MSG_MAIL_TEMPPage.cshtml
del /f /q %path%\Areas\Base\Views\MSG_SMS_TEMP\MSG_SMS_TEMPPage.cshtml
- iconv2.bat的内容如下:
@echo off
d:
cd D:\upload\lyweb-release\_PublishedWebsites\iconv
for /r D:\upload\lyweb-release\_PublishedWebsites\iconv %%i in (*.cshtml) do (
echo 修改GB2312文件编码为UTF-8格式,名称为****.bkp
iconv -f GB2312 -t UTF-8 %%i > %%i.bkp
if exist %%i.bkp (
echo 删除原GB2312格式文件
del %%i
echo 重命名UTF-8格式文件为原文件名称
ren %%i.bkp %%~nxi
) else (
echo pass
)
)
del /f /q /s D:\upload\lyweb-release\_PublishedWebsites\iconv\*.bkp
echo 执行完毕。此脚本将于10秒后自动关闭!
ping 127.0.0.1 -n 10 >nul
自动统一cshtml文件的格式
- 需要集成到Jenkins里,打完full包和拷贝完semi包的文件后,运行这些脚本。
echo 把不需要转换的cshtml文件复制到临时目录cshtmlmd5
call D:\upload\iconv\copy-unc.bat
echo 把GB2312格式的cshtml文件复制到临时目录iconv
call D:\upload\iconv\copy-gb2312.bat
echo 把GB2312格式的cshtml文件的编码格式转换成utf-8,解决中文乱码问题
call D:\upload\iconv\iconv2.bat
echo 把GB2312转utf-8格式的cshtml文件从临时目录iconv复制到cshtmlmd5目录
echo d | xcopy D:\upload\lyweb-release\_PublishedWebsites\iconv D:\upload\lyweb-release\_PublishedWebsites\cshtmlmd5 /s /r /y
- copy-unc.bat的内容如下:
@echo off
echo 选用/S时对源目录下及其子目录下的所有文件进行COPY。除非指定/E参数,否则/S不会拷贝空目录,若不指定/S参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录
set from=D:\upload\lyweb-release\_PublishedWebsites\LRSMES.WebUI
set to=D:\upload\lyweb-release\_PublishedWebsites\cshtmlmd5
del /f /q /s D:\upload\lyweb-release\_PublishedWebsites\cshtmlmd5\*.*
RD /s /q D:\upload\lyweb-release\_PublishedWebsites\cshtmlmd5\
mkdir D:\upload\lyweb-release\_PublishedWebsites\cshtmlmd5
echo f | xcopy %from%\Areas\Base\Views\_ViewStart.cshtml %to%\Areas\Base\Views\_ViewStart.cshtml /r /y
echo f | xcopy %from%\Areas\Base\Views\DataDictionary\Index.cshtml %to%\Areas\Base\Views\DataDictionary\Index.cshtml /r /y
echo f | xcopy %from%\Areas\Base\Views\Demo\CheckPerson.cshtml %to%\Areas\Base\Views\Demo\CheckPerson.cshtml /r /y
echo f | xcopy %from%\Areas\Base\Views\DocCheckRecord\CheckEditPage.cshtml %to%\Areas\Base\Views\DocCheckRecord\CheckEditPage.cshtml /r /y
echo f | xcopy %from%\Areas\Base\Views\DocCheckRecord\CheckPage.cshtml %to%\Areas\Base\Views\DocCheckRecord\CheckPage.cshtml /r /y
- copy-gb2312.bat的内容如下:
@echo off
echo 选用/S时对源目录下及其子目录下的所有文件进行COPY。除非指定/E参数,否则/S不会拷贝空目录,若不指定/S参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录
set from=D:\upload\lyweb-release\_PublishedWebsites\LRSMES.WebUI
set to=D:\upload\lyweb-release\_PublishedWebsites\iconv
del /f /q /s D:\upload\lyweb-release\_PublishedWebsites\iconv\*.*
RD /s /q D:\upload\lyweb-release\_PublishedWebsites\iconv\
mkdir D:\upload\lyweb-release\_PublishedWebsites\iconv
echo f | xcopy %from%\Areas\Base\Views\ExaminationType\ExaminationTypePage.cshtml %to%\Areas\Base\Views\ExaminationType\ExaminationTypePage.cshtml /r /y
echo f | xcopy %from%\Areas\Base\Views\ExaminationWebSiteConfig\Index.cshtml %to%\Areas\Base\Views\ExaminationWebSiteConfig\Index.cshtml /r /y
echo f | xcopy %from%\Areas\Base\Views\Ex_ExaminationItem\ExItemPage.cshtml %to%\Areas\Base\Views\Ex_ExaminationItem\ExItemPage.cshtml /r /y
echo f | xcopy %from%\Areas\Base\Views\MSG_MAIL_TEMP\MSG_MAIL_TEMPPage.cshtml %to%\Areas\Base\Views\MSG_MAIL_TEMP\MSG_MAIL_TEMPPage.cshtml /r /y
echo f | xcopy %from%\Areas\Base\Views\MSG_SMS_TEMP\MSG_SMS_TEMPPage.cshtml %to%\Areas\Base\Views\MSG_SMS_TEMP\MSG_SMS_TEMPPage.cshtml /r /y
echo f | xcopy %from%\Areas\Base\Views\T_SYS_ROLE_CATEGORY\T_SYS_ROLE_CATEGORYPage.cshtml %to%\Areas\Base\Views\T_SYS_ROLE_CATEGORY\T_SYS_ROLE_CATEGORYPage.cshtml /r /y
获取js和css文件的映射表、对cshtml文件进行转换
- 需要集成到Jenkins里,在统一cshtml文件格式后执行。由于gulp打包后无法执行后续的脚本,需要在Jenkins里再新建一个win的批处理才行。
echo gulp打包,获取所有js和css文件的md5戳,修改所有cshtml的引用信息,增加v,若有js或css文件被修改,则md5值会变化,相应的cshtml会更新js或css的文件版本信息,解决浏览器缓存未更新的问题,这样就不需要在客户端浏览器手动清理缓存了。
echo 复制gulp依赖包
call C:\"Program Files"\7-Zip\7z.exe x D:\upload\gulp.7z -oD:\upload\lyweb-release\_PublishedWebsites
echo 执行gulp打包命令
ping 127.0.0.1 -n 3 >nul
d:
cd D:\upload\lyweb-release\_PublishedWebsites
gulp
合并到semi包
- 在Jenkins里新建一个windows batch command,在gulp转换后执行。添加到semi包打成压缩包的脚本之前。
echo 把经过gulp转换后带md5戳的cshtml文件复制到d盘的upload目录的update目录
echo d | xcopy D:\upload\lyweb-release\_PublishedWebsites\update D:\upload\update /s /r /y
验证¶
未对cshtml文件加md5戳之前打开pc端平台按f12查看js文件时是这样的,是没有md5戳的:
未对cshtml文件加md5戳之前打开gb2312格式的cshtml文件是这样的:
使用iconv转换后的gb2312格式的cshtml文件是这样的:
错误示范:使用iconv转换utf-8格式的cshtml文件是这样的:
使用gulp处理cshtml文件前是这样的:
使用gulp处理cshtml文件后加md5戳是这样的:
集成到semi包并进行更新后是这样的,js文件已经有md5戳了,以后只要代码更新后,执行Jenkins打包部署工程后,js文件若发生变化,md5戳也会变化,相应的刷新浏览器就能自动加载最新的js文件:
更新记录¶
20200328¶
- 新增:安全管理-职业健康 最下面新增了四个菜单:机构设置、基础数据总览、专项费用计划投入、主要项目管理。
- 新增:显示全部的矿端重点工程。
20200325¶
- 修改:榆树井煤矿/新上海一号矿 领导安排任务新增显示子部门。
- 修改:矿端储量模块更新。
- 修改:根据上海一号井 修改三违导入和三违录入需求。
20200322¶
- 新增:矿端平台-安全管理-双重预防管理 菜单集。
20200320¶
- bug修复:修改生产数据无法显示销售额的问题。
20200319¶
- 新增:鲁西平台调度和生产专业新增集团标准化填报菜单。
- 新增:锁定功能 矿端平台的暂时锁定生产经营日报,矿端调度填报中所有数据,生产技术下掘进重点工程配置。
- 新增:集团端平台运维也加了考核结果手动修改的功能。 集团端平台-平台运维-业务考核-考核详情修改 (可修改已考核的数据,修改后这些数据不再与考核配置进行联动)。
- 新增:平台自检,使用jenkins平台定期运行Selenium自动测试脚本,检查每天的监测数据传输情况。
- 修改:根据集团安监处wang的要求,隐藏安全管理下面的风险管控类菜单,后续可能会上新的其它功能。
- 新增:鲁西平台新增综合调度的调度会功能。
20200310¶
- 修改:临矿矿端平台-综合调度-集团上报-调度周报填报(填报报表的安全情况列以前是无法填报数据的,修改为可以填报数据,但不与其他报表关联)
- 新增:矿端平台-安全管理-安全专项管理-薄弱人物排查-管控闭合 菜单。使用前注意:薄弱人物解除状态C类的一天自动解除,其他手动解除。手动解除就打开管控闭合菜单,需要上传一个图片,然后闭合。上传的图片具体什么要求?没有,就是一个解除凭证。
- 矿端平台-生产技术-生产图件下面的菜单已调整。标记为(关联)字样的菜单只能预览和下载。
- 部署:鲁西煤矿更新gis3.2软件为20191024版本。
- 新增:矿端平台→安全管理→隐患治理→煤矿月度隐患汇总(非煤月度隐患汇总)
- 新增:平台→安全管理→安全专项管理→各矿井作业地点统计表。
贡献者¶
写在前面
非常感谢各位的贡献、感谢各位的付出,临矿项目一路走来历经坎坷,此排名贡献不分前后,谢谢大家。
项目管理人员
- 毛善君 项目的精神领袖
- 雷小平 项目的总负责人
- 李祥 系统测试,验收文档整理
- 孟庆喜 项目后期主要领导人员,主导客户关系
- 徐波 移动端工程师兼项目经理,兼带项目演示汇报
- 刘磊 验收文档整理
核心开发人员
- 任金权 资深架构师,设计平台架构,贡献核心代码和文档
- 马祥龙 高级开发工程师,核心代码贡献者
- 吴优 高级开发工程师,调度、生产、地测专业核心开发
- 颜琦森 高级开发工程师,安全专业核心开发
- 张可 高级开发工程师,一张图核心开发
- 赵本阔 高级开发工程师,监测监控核心开发
- 周柏文 高级开发工程师,通防专业开发
- 孙兔兰 高级开发工程师,移动端开发
- 刘巧娟 中级开发工程师,
- 王瑶 高级开发工程师,通防和安全专业开发
- 陈超 高级开发工程师,调度和生产专业开发
- 宋凯 高级开发工程师,
运维人员
- 韩志龙 中级运维工程师, 贡献文档、功能测试、项目运营
- 阚青雷 中级运维工程师, gis培训、功能测试
- 藤岩 中级运维工程师, gis培训、功能测试
- 姜淮天 初级运维工程师, 功能测试、项目运营
- 周祥 初级运维工程师, 功能测试、项目运营
- 时国忠 中级运维工程师兼项目经理, 功能测试、项目运营
外协人员
- 王盼超 前端一张图协助开发
- 战诗猛
- 孙钰岭
- 黄克强
- 段超上
为临矿平台贡献代码
贡献可以有很多
- 贡献最佳实践文档,对贡献者署名
- 贡献重要模块的人员纳入核心开发者
- 对模块提出建议、贡献、修订者、纳入贡献
临矿项目平台是一款为煤矿企业提供一站式综合管理的安全生产共享平台
我们深知自己能力有限,大家都是为了一个共同的目标不停的在努力。
FAQ¶
管理平台-平台运维¶
- Q: 我用360浏览器怎么打不开平台的菜单?
A: 360浏览器需改为极速模式,若是IE浏览器,请更新到IE11。
- Q: 为什么视频插件安装后还是无法查看平台的视频监控中的实时视频?
A: 需要使用IE浏览器才能观看视频,请更新到IE11。并按照帮助里的用户手册前几页进行插件配置。
- Q: 某一矿端平台主页访问失败了?
A: 估计是改了服务器的盘符,导致IIS服务的目录错误。或者看提示信息,有可能是web的应用池挂掉了,需重启iis里对应的应用池,若还是频繁挂掉,需检查是哪个web服务导致的。
- Q: 平台无法登陆,提示红字“更新条目时出错。有关详细信息,请参见内部异常。”?
A: web服务器需重启。
- Q: 平台无法登陆,提示红字“基础提供程序在Open上失败”?
A: 先ping一下集团数据库服务器,ping不通则是矿端与集团的网络故障。待网络恢复后就能登陆。再检查一下集团数据库,看是否是因为磁盘满了。
- Q: 我的密码忘记了怎么办?
A: 请联系各矿的运维人员重置密码。
- Q: 为什么我的账号登录时右下角会提示越权操作,提示“您正在尝试,越权操作,请求已被终止!错误代码:500”?
A: 请联系各矿的运维人员开通权限。一般情况下新账号都要先赋予“矿端基础角色”权限,这个角色配置权限时要在模块授权中把系统配置-个人资料和消息平台-消息列表勾选,在按钮授权中的个人资料和消息列表全部勾选。
- Q: 平台公文接收无法下载公文?
A: 网络延迟,能下载,但速度慢。
- Q: 为什么有些矿端角色的菜单会丢失?
A: 由于使用了集团账号进行了矿端角色配置,只能通过恢复集团主数据库才能解决。站点管理只能开发人员或者运维人员配置 其他人不能给权限的,以后先用超级管理员创建矿端管理员角色,再用矿端管理员统一调整其他角色。现在陕煤的矿业公司的管理员操作角色的时候能看到矿井的角色,但是操作的时候不能操作,这个从他们的角度看的话就是bug。以后可以通过技术手段直接不给矿业公司操作矿井角色的权限。
- Q: 请问给矿端配置完考核项以后,能在考核时间点之前弹窗提醒吗?
A: 目前还不能。
- Q: 平台代码更新后,为什么新功能刷不出来?
A: 需清理本地浏览器缓存。
- Q: 为什么有些组织机构会错乱?
A: 矿井下面的部门要选择对应的选项,不能把部门选成二级公司,例如销售管理部,不能算是一个二级公司。
- Q: 我的手机是苹果手机,能安装手机app吗?
A: 由于苹果商店上架需要审核,暂时不能提供ios的app。
- Q: 我的手机是安卓手机,怎么安装手机app吗?
A: 请登录平台,在帮助中心里有移动端的二维码,扫码下载即可。
- Q: 为什么早期的平台会出现组织机构里新建的班组,但再用户管理里找不到的情况?
A: 鲁西煤矿的平台未和其他平台进行同步更新,用户管理里的组织机构不全的问题,目前只能用lrsys账号登录鲁西平台,修改数据授权里的全矿数据授权角色,把新加的班组勾选才行。lrsys 密码longruan123!@#
管理平台-帆软报表服务¶
- Q: 报表类菜单打开后一片空白,xxx服务器拒绝了我们的连接请求,无法填报报表。
A: 有可能是有数据异常导致帆软报表的内存溢出,检查并重启报表服务。stop2次,start1次。陕煤可以这样重启帆软服务,找到服务: 选择帆软服务重启,比如有apache tomcat字样的服务,重启成功 再访问系统。
- Q: 报表类菜单打开后提示用户数量过多。
A: 帆软服务过期了,联系开发人员重新注册。
- Q: 报表类菜单打开一会儿正常一会儿不正常。
A: 同时访问的人过多会出现帆软服务占用服务器cpu过高,导致服务失去响应。
- Q: 矿领导下井记录无法填报超过2天前的内容。
A: 矿领导下井记录,有填报时间限制,超过两天无法填报。只能找集团开权限进行修改。
- Q:为什么有小部分报表打不开?
A:各局单位还有有用外网地址访问数据库的,请自行修改地址。
管理平台-上传下载菜单¶
- Q: 为什么我无法上传文件?
A: 需下载安装flash插件,并在浏览器里开启flash允许运行的选项。
- Q: 为什么我能看到其他煤矿创建的文件夹?
A: 创建文件夹后默认是共享状态,请进行编辑,把是否公用改为否,这样就只能本矿才能看到该文件夹。
- Q: 为什么有些word文件上传后无法预览,预览时一直在提示“文件待转换,请等待或下载查看!”?
A: 后台正在进行排队转换,自动转换成pdf格式,有一定的时间延迟,另外本机需安装adobe reader程序才能查看pdf文件。
- Q: 为什么我上传的图纸无法预览?
A: 请不要上传cad的图纸,目前cad文件只是能打开,但不能保证预览线型会和本机cad软件打开的一致。请上传龙软的lfmx格式的图纸。而且不要把多个类型的图纸都放在一个文件里。
管理平台-生产技术¶
- Q: 陕煤双龙矿生产技术模块矿井自检里地质灾害防治与测量标准化打分是90多分,到统计里地质灾害防治与测量是100分,请问为什么会出现这样的情况?
A: 安全质量标准化得分,标准化两个都配置成真,(是否冲击地压选是,是否复杂选复杂,则显示真实值),否则显示100。地质灾害防治与测量标准化打分才是实际值,否则默认100。因为根据安全质量标准化的标准,是否有冲击地压和地质条件复杂与否,计算公式不同。
- Q: 为什么我录入了煤层的描述信息,但无法保存?
A: 录入的文字过多,超过了限制,请删减后再录入。
管理平台-应急救援¶
- Q: 提交了错误的演练评估,需要怎么删除?
A: 默认从页面是无法删除的,只能通过后台数据库进行删除。在集团166服务器的SafeManager数据库里有MockDrillingAssess表,通过以下命令进行筛选,然后执行删除操作。
SELECT
TOP 10 *
FROM
MockDrillingAssess
where AssessTitle like '%矿井顶板%' or ScriptID='0514a67fe9544a5ba7afb5cc34fa13be'
其中AssessTitle 是计划名称 或者计划名字 搜出来 的数据里面有 ScriptID 然后在 用这个模糊匹配就能发现 空的数据,或者手动打分,打分成91这样的容易辨识的数据,然后再筛选。
gis-协同¶
- Q: 我的用户登录后一直显示在加载图层,等了30分钟还是这样?
A: 从任务管理器中强制关闭gis软件,重启gis协同服务。若还不行,则删除该账户,重新创建,有可能是打开图层太多而导致加载慢。
- Q: 我在gis软件里进行一张图协同操作,复制了一个实体,但提示没有创建新图层的权限?
A: 外部文件里的图层名与服务器一张图的图层名不一致,而只有通过后台才能进行图层创建,可以把实体复制后手动放置到已经存在的图层中。
- Q: 我在gis软件里进行一张图协同操作,然后再ctrl+z进行恢复,为什么属性信息就没有了?
A: 属性是依附于实体的,实体删除、移动到其他图层都会导致属性丢失,对于一些重要的图层尽量保证实体不再使用后再删除。
- Q: 我在gis软件里进行一张图协同操作,为什么有些图例无法修改颜色?
A: 由于有些图纸是外部cad图纸,没有进行符号对应,对应后把这些实体改为前景色和背景色都随层,就能同步显示图层默认颜色。
- Q: gis协同里有两个图层想置顶,请问怎么操作?
A: 图层调整需要在协同中打开SQLServer操作。
- Q: 无法登录一张图
A:(1)服务器地址是否正确,内网和外网地址不一样,注意冒号要是英文状态下。
- (2)用户名和密码是否正确。
- (3)检查服务器协同服务是否正常运行。
- (4)检查客户端gis软件的版本,是否和服务器一致。
- Q:图纸更新签入怎么这么慢
A:若通过外网ip登录gis协同,可能会出现网络带宽瓶颈,使用内网签入会快很多。
- Q: 一张图协同更新后,保存成功,但平台上不显示。
A:(1)强制获取更新,检查协同是否能保存。 (2)检查协同服务和地图服务是否运行正常。 (3)重启协同和地图服务后看是否正常,若不正常,联系龙软技术人员。
- Q: 原图上的实体无法复制到一张图上。
A:(1)检查原图坐标是否正确,注意原图比例尺。 (2)原图图层名称与一张图不一致。 (3)一张图的当前图层设置成了0或2或经纬网图层。 (4)连接失效,需要重新验证身份。可能是有另一个人使用该帐号进行登录了,重新登录即可。
- Q: 一张图协同用户密码怎么重置。
A: 只能把原有用户名删除,重建。重建时可以在图层分组模版里选admin账号,可以不用重新创建图种分类和添加图层了。也可以在gis库中查看表里的信息。
- Q: 一张图协同用户不小心把某一个类别的图删掉了怎么恢复。
A: 图纸的图层还在数据库里,只不过未显示,可右键根节点,新建一个分类,并添加对应的图层,也可以把这个账号删除重建。
- Q: 图纸不小心删除了一些实体,如何恢复?
A:(1)打开协同一张图,在图层分组管理器上选择某一图层。 (2)右键单击该图层,选择历史记录,查看该图层修改的时间节点。 (3)选择获取特定时间数据,选一个你需要恢复的时间节点后与下一个时间节点前的任意时刻,将图纸恢复到该时刻。这种情况下无法保存到协同一张图上。
- (4)复制。
- (5)重新登录协同一张图,并进行粘贴。
- Q: 在平台无法查看一张图图纸。
A: 检查服务器的地图服务,看是否运行正常。
- Q: 服务器上的一张图地图服务和协同服务无法启动。
A:(1)检查数据库,看是否可以访问。 (2)检查内网和外网的端口映射情况。 (3)检查lrgis3.2的注册情况。 若lrgis3.2未注册,极有可能是虚拟服务器的网卡被更换了,只能重新提交机器码注册。例如曲靖市局一张图服务器的网卡MAC地址变了,无法注册龙软gis软件,导致无法启动地图和协同服务。根据新机器码重新生成注册码后,一张图服务才正常启动。
- Q: 图纸里的实体颜色入库后都变成黑色该怎么还原为入库前的颜色?
A: 入库前底图的颜色是cad图定义的图层的颜色,入库后无法自定义图层的颜色,默认显示为黑色。需要修改只能改实体的颜色。复制到gis以后手动修改颜色,选中实体,分别设置前景色和背景色。
综合自动化¶
- Q:为什么管理平台的自动化菜单打开空白?
A:可能是综合自动化服务器意外断电后需重新登陆一次并手动开启主进程,或者网络中断。
- Q:为什么管理平台的自动化菜单中有部分数据显示为空,但厂家系统正常?
A:可能是厂家修改了下位机程序,把PLC下位机数据点表地址修改了,需要联系矿方让厂家提供新的数据点表地址。