起始

背景

刚接手某个坑位组织的技术总监位置,在短学期工训的时候被指导老师拉进了某个群聊,告知学校的旧心理测评平台需要重新启用,至于为什么和我有关,是因为这个旧服务借挂在组织的内网服务器上,作为当代的技术总监,自然就被捎带上了,不过具体情况我还不清楚,好在看了眼群里还有前两代技术总监在压阵。
这里简单提一下服务器的情况,组织在内网有 2 台 PVE 的服务器,一台近一年有使用过(代称 1 号机),另一台目前没怎么用过(代称 2 号机),旧心理测评的服务就在 2 号机上。

这里提一下 PVE,简单讲可以类比为 VMware,下面介绍摘自维基百科。

Proxmox Virtual Environment(简称:Proxmox VE、PVE),是一个开源的服务器虚拟化环境 Linux 发行版。Proxmox VE 基于 Debian,使用基于 Ubuntu 的定制内核,包含安装程序、网页控制台和命令行工具,并且向第三方工具提供了 REST API,在 Affero 通用公共许可证第三版下发行。Proxmox VE 支持两类虚拟化技术:基于容器的 LXC 和硬件抽象层全虚拟化的 KVM。

工训闲暇时翻了下服务器的祖传文档,发现心理测评这个服务开的是 Windows Server 2008R2 Enterprise 的清朝遗物虚拟机,还贴了个已废弃的 tag,估计是没想到还有要重启的一天,除此之外就没有用的信息了。和上代技术总监沟通了下,只要上 PVE 把心理测评的虚拟机启动就行。

失联的 2 号机

PVE 通常是通过 Web 管理界面去操作虚拟机,有图形化谁用命令行,但是前提是 8006 的端口(Web 管理界面的访问端口)开放。由于学校内网默认只开放 80 端口,其他端口开放需要和信息办申请,因此先找相关老师去走了波流程。
联系完的第二天,在得到端口已经开放的答复后,2 号机的管理界面却依旧访问不了,原以为是开放出了岔子,但是发现 1 号机的管理界面能正常访问。于是排查了一下得出结论,端口开放了,2 号机出问题了。
2 号机有问题其实早有预兆 ,实际上在我刚接手服务器的时候就没连上过 2 号机,根本 ping 不通,我以为是文档有问题或者是哪里加了限制,但是 1 号机的访问正常,且 2 号机并未在使用也就没有多深究。如今看来,是在接手前 2 号机就失联了。
不确定 2 号机是被关了还是没跑起来,于是又联系了上代总监。

由于服务器在另一个校区,只能先联系信息办的老师去排查了。

上不去的 1 号机

然而祸不单行,当我想上 1 号机的管理界面去看看时,根据文档里记录的账密却怎么也登不上去,你这文档保熟吗。于是又又联系了上代总监。

得出的结果为 1 号机和 2 号机做了集群,于是 2 号机挂了顺带踢了一脚 1 号机,又导致 1 号机登不上了,于是现在都堵在 2 号机了,只能先等待信息办的回复了。

失联的 1 号机

信息办去完现场后给了一个返图。

坏了两个硬盘,然后他们说把 2 号机强行启动了。
但是不出意外的话,又要出意外了,2 号机还是失联,而且这次 1 号机也一起失联了,两台一起寄了,具体故障原因未知。更寄的是组织的一部分服务还挂在 1 号机的虚拟机上,不出意外的,服务也歇菜了。
原本不急的,因为旧心理测评的服务和我们组织实质的关系不大,现在不得不急了。不过庆幸的是还值暑假,服务并没有多少流量,临时将服务切回公网的服务器也算没造成太大影响。那么接下来就是得想办法去抢救一下这两哥哥弟弟了。

抢救服务器

由于只玩过云服务器,对于线下的物理服务器一窍不通,只好联系前前前···总监出手了,约了时间一起去现场看服务器,中途顶着大太阳去找垃圾佬整了几块硬盘,然后开始抢救服务器。
初期判断 2 号机组的是 raid10,损坏的两个都是备份盘,理论上的数据没有丢失,可以尝试更换硬盘进行重建,于是乎半场准备开香槟了,一块换了后正常重建了,但是另一块换了好几块硬盘依旧是 Failed,继续排查了两三个小时,最后赶在机房工作人员下班前得出了结论,那块的硬盘盒读写有问题,导致了无法重建。
由于到了点且手头没有多的硬盘盒于是只能先行撤退,但并非无功而返,重启了几次后的 2 号机能够连上了,且 1 号机也恢复了正常,同时管理界面也都能正常访问且登录了,但可惜的是心理测评服务所在的虚拟器由于硬盘问题无法启动。

走前给群里发了个反馈,这事就暂时停滞了,等着后面再来抢修。

转机

其实在准备去抢救服务器的前两天,相关老师发过一个 21 年的网站备份数据。

我姑且进去扫了一眼目录。

但是没有什么印象,也不知道是什么网站数据的备份,问了上代总监也没什么头绪,于是也没有在意,等着后面先去抢救服务器。
但是服务器没有完全抢救成功,心理测评的服务还是没有恢复,于是心血来潮我又打算研究一下这个备份文件,然后被我在 wwwroot 下翻到了一个安装说明.txt。

这下事件开始迎来了转机,补首诗在此。

游山西村
陆游

莫笑农家腊酒浑,丰年留客足鸡豚。
山重水复疑无路,柳暗花明又一村。
箫鼓追随春社近,衣冠简朴古风存。
从今若许闲乘月,拄杖无时夜叩门。

根据说明基本得知是 Windows Server 上部署的一个 ASP 项目,事后回来看,前面的目录就是 ISS 网站的目录,果然还是阅历尚浅了,平常 linux 服务器用的多,栽在 windows 服务器上了。
所以接下来的数据恢复实质上就是重新将服务在 Windows Server 上跑起来,但是能否恢复还是未知数,得看数据库的数据是否有备份,下面简单记录下折腾了半天的部署过程。

ASP 网站部署

由于打算先在本地尝试恢复,因此使用 VMware 演示,Windows Server 的版本没有选择 2008 的老古董,直接上了最新版的 2022,测试下来的流程基本相同。

1.安装 IIS 服务

首先打开服务器管理器,一般启动时会自动打开。

打开后的服务器管理器页面如下所示,点击添加角色和功能,之后一直点击下一步。




选择服务器角色时添加**Web 服务器(IIS)**,添加完后继续下一步。



选择角色服务时添加应用程序开发下的ASP,会同时添加ISAPI 扩展,添加完后继续下一步



确认选择无误后安装

等待进度条跑完后点击关闭即可,到此 ISS 服务就安装完成了。

打开浏览器输入 127.0.0.1,出现下图就说明安装成功了。

另外此时打开资源管理器,可以看到熟悉的 inethub 目录。

这里的目录是安装完 ISS 服务默认创建的,对应/inethub/wwwroot存放的就是项目文件夹,后文的Default Web Site的内容就在此处,可以选择在该目录直接部署,备份文件中的部署方式应该就是直接覆盖了默认网站的内容,不过后续演示采用添加新网站的方式。

2.添加网站

回到服务器管理器页面,依次点击工具->Internet Information Services (IIS)管理器

展开左侧目录后可以看到网站下有一个Default Web Site,绑定监听的是*:80,即刚才访问127.0.0.1所看到的页面,然后右键网站->添加网站

填写网站名称物理路径IP 地址后点击确定。

  • 网站名称自取
  • 物理路径即 ASP 项目的路径,即备份文件中/inethup/wwwroot文件夹的内容,这里我重命名为了 xlcp
  • IP 地址点击下拉框选择即可,默认是本机的 ip 地址
    • 注:全部未分配即*已经分配给了Default Web Site

3.设置网站目录权限

如果不编辑权限直接访问 192.168.108.136(上文的 IP 地址),会显示如下页面并提示权限不足,因此需要先设置权限。

回到IIS 管理器,右键xlcp->编辑权限

依次点击安全->编辑->添加->高级

点击立即查找,在搜索结果中找到并选择Everyone后确定。


Everyone添加完全控制权限后一路确定回去。

4.配置 ASP 应用程序属性

点击xlcp->ASP,将启动父路径修改为True后应用。

5.设置默认文档

点击xlcp->默认文档,将index.asp移动至最上方。

6.配置应用程序池

依次点击应用程序池->xlcp(添加网站时自动创建)->高级设置,将启用 32 位应用程序修改为True后确定。

7.配置数据库

如果没有其他环境依赖的项目在上一步就可以正常运行了,但是心理测评还有一个数据库需要处理,不处理直接访问会出现下面的错误。

原先我较为担心的是使用 MySQL 或者 SQL Server 数据库,没有带着数据库内容一起备份,导致即使服务重新跑起来也没用,因为实际上要的是旧心理测评平台里的老数据。
但是翻了下 db 目录后放心了,是 Access 数据库,数据都存在 mdb 文件里了,看时间基本是备份时的数据都在了。

在项目文件夹里找到了 global.asa 的配置文件,看了眼只需要将 Data Source 的路径修改为当前 mdb 文件所在的路径即可。

重新访问页面,可以看到已经正常运行了。

后续

在本地 VMware 上成功部署恢复后,后续就是在 PVE 2 号机上重新部署一遍了,于是又申请开放了几天的端口进行操作。
在本地部署踩了一遍坑后,PVE 上又踩了一波新的坑,因为坑太多所以懒得再一一记录了。中途还因为换服务器的问题导致在线注册时的系统检测没过(提示系统运行环境与上次注册时不同,不能注册!),拉了心海软件的客服进群处理,所以你原来能联系到客服的吗
最后补一张心理测评平台进去的图,好像网上搜心理测评都是这个平台

最后总算是结束了这个坑。

然后补一个梳理时间线罢。

day1

被拉入群聊,告知需要重启旧心理测评平台

day2

联系信息办开放 PVE Web 管理界面的访问端口

day3

端口开放,发现 2 号机失联,1 号机管理界面无法登录,联系信息办先排查线下物理机

day4

信息办反馈 2 号机坏了 2 个硬盘,强制重启了 2 号机,结果带着 1 号机一起失联

day5

相关老师发送了原心理测评网站的备份文件

day6

和前辈去线下抢救服务器,1 号机和 2 号机恢复连接

day12

根据备份文件在本地 VMware 尝试恢复成功,联系信息办再次开放端口

day13

端口开放,开始在 1 号机上尝试恢复

day14

1 号机上恢复成功,联系心海客服处理注册问题

day15

和心海客服联系处理完毕,可以正常使用,下班