运维两周:乐学网的重建

山穷水尽疑无路,柳暗花明又一村

乐学网(https://cms.hit.edu.cn,现外网无法访问),是哈尔滨工业大学主管创立的一个教学服务平台。该平台最早由孙志岗老师创建,是以Moodle为框架,进行了大量的修改并且开发了许多独有的插件。

但是好景不长,2012年乐学网创始人孙老师从哈尔滨工业大学离职,乐学网的升级也出现了问题,大量老代码无法升级到新版本,并且出现了许多奇怪的问题。

在2018年,田径老师一如既往地为英才学院的大一新生教授课程《哲学概论》。田老师是当时为数不多的乐学网忠实用户,为乐学网当时的状态深感惋惜。于是田老师召集了英才学院的一些有志之士(主要是自动化的,其次是计算机的),找到了史建焘老师,希望能够重建乐学网。

我当时听闻了乐学网的故事,也十分热血沸腾,也想为乐学网的重建贡献自己的微薄之力。但是当时,我正忙于大一年度项目(我的队友很开心地加入了乐学网项目),无暇再顾及乐学网重建,于是就没有参加。

可是这个项目组,并没有做出任何东西,乐学网的事情只能无限期搁置。直到后来,网络中心再一次停电(为什么要说再),乐学网数据库服务器出现问题,访问乐学网的每一个页面都需要等待19秒。再加上乐学网的SSL证书过期问题,每次访问都要信任这个已经过期的证书。

但是在2020年,事情出现了转机。开源文化与软件开发俱乐部横空出世,为了打响第一枪,便派我负责乐学网的重建。

千淘万漉虽辛苦,吹尽黄沙始到金

乐学网首先需要解决的一件事是,服务器问题。据史老师说,原来乐学网的服务器在网络中心,由于网络中心限制,从校园网内访问非常麻烦。于是史老师就想到使用一个无人使用的闲置服务器,作为乐学网的主机。

机房的风扇声音非常大,虽然我之前通过远程管理过许多远程服务器,但是却是第一次走进机房里。不过我最后还是克服了这一困难,成功在服务器上安装了Debian操作系统,得以在远程通过SSH连接到服务器。

接着,又出现了新的问题。众所周知,服务器需要一个IP地址,才能被访问。虽然新的乐学网服务器能够通过其中一个网卡通过NAT访问到外部服务器,进行服务器的软件下载和更新,但是却只能被同一局域网的服务器访问,不能从校园网进行访问。为了解决这一问题,史老师找到了一个闲置IP地址,拉一根网线到交换机里,设置IP地址应该就能够使用了。但是,在设置IP地址之后,这台服务器新的IP地址仍然不能被访问。经过排查,是IP地址与MAC地址进行了绑定。这简单,改一下MAC地址,马上就可以用了。

这个IP地址不能被外网访问(因为没续费),而服务器能通过另一个网卡访问外网,这样达到了节省经费的效果。

乐学网的重建需要考虑到的一个很重要的问题是储存的问题,原有乐学网的储存阵列已经全部塞满,在建立新的乐学网的时候不得不考虑可拓展性的问题。因此,使用了KVM的方案。使用虚拟机,首先其环境是与外部隔离的,能够保证很大程度上的安全性。其次,在虚拟机内部使用LVM,方便扩容,以后使用人数多还可以使用更大的磁盘空间。

虚拟机1号选择的系统是CentOS8(我们学校买不起RHEL,而且好像禁运了也买不了),用上国产的某运维管理面板。我身经百战,见得多了,最后还选择使用傻瓜式配置方案是因为PHP手动配置过于繁琐,我一点都不想再Nginx里手写PHP的配置,因此选择了使用某面板。不过这个面板实属给力,解决了很多问题。

接着就是搭建新的乐学网,使用了Nginx+PHP+MySQL的方案。在进行安装配置之后,新乐学网的雏形就出现了。

现在又遇到了新的问题,首先是域名问题,原来的cms.hit.edu.cn铁定是用不了了,而且申请新的域名还遇到了很多的问题。这个问题的解决方案是注册一个新的域名,(最后选择了hitcc.top),这个域名便宜,而且cc代表了Cloud Course、Cloud Curriculum的意思。

其次是Online Judge的问题,原来的乐学网是有配套在线评测系统的,不过这套系统是针对Moodle 2.x开发的,在最新版本的Moodle下已经跑不起来。在这个系统的原仓库中,发现已经有人在着手重构这一套系统,但是并没有开发完成,而且表明了大大的“Not for production use”。这套系统很明显已经不能用了,于是我又在网上找到了一个名为CodeRunner的插件,这个插件能够满足基本的需求。但是其功能仍有确实,于是最后的方案是先使用这个插件,然后再开发一套在线评判的系统。我们学校这个学期的C语言已经开课,已经开的课已经不太可能迁移到新的平台上,而且新开发的系统预计下学期前能开发完毕。因此选择这套方案并无问题。

接着就是用户问题,首先开放注册是一个非常危险的事情,而且也不能长久。登陆原来的乐学网,发现使用的是CMS单点登录,于是就很自然而然地将配置复制过去。

这当然行不通,跳转域名是带有白名单的,hitcc.top自然不在学校的白名单里。这个简单,登录到原来乐学网的服务器,设置301转发(老板nginx居然不支持return 301),直接把请求转发到新的服务器,这样认证的时候就可以填写cms.hit.edu.cn的域名了。

结果发现学校的认证还带Referer检查,于是只能魔改认证插件,跳转之前先情况Referer。这时候,我又想起来了,301这么麻烦干啥,直接反代服务器不就行了。于是,最后就使用了cms.hit.edu.cn(绕了一圈又回到原点)。

之前说过,cms.hit.edu.cn的证书已经过期,乐学网服务器也无法被外网访问,也不能让学校设置TXT解析让你验证。最后,我一个朋友提供了一个通配证书,这一问题终于得到了解决。

从接受这一任务,到现在乐学网完全开始运行(外网就别想着看了),整整耗费了2周的时间,我也知道了运维这一工作的困难。更让我坚定了,以后就算是去写代码,也绝对不会去做运维的工作的想法。

此外,最后耗费资金9元,域名最后拿去发邮件用了,也没有浪费。

在最后,还是要感谢史老师和田老师对我们的大力支持。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇