---
layout: post
title: 如何建立一个校园内部网站
tags: [网站, 校园]
---
  其实我感觉大学生活也挺好的。<!--more-->    
  
# 起因
  去年我进入大学后加入了一个专门研究云计算以及网络（名义上）的社团，不过那时候我才是大一新生，加入后没有权限。到了第二年，我成功的进入了管理层，这次我就可以好好的看看这个社团有什么有意思的东西了。   
  首先，社团内有专属于自己的网络，社团办公室内有一个交换机是连接所在教学楼的网络的。另外还有一个树莓派，看起来好像是一次都没有用过，系统也是全新的RPiOS。   
  除此之外，社团内有一台机架式服务器，看起来好像好长时间没有用了，第一次启动直接报内存错误，我只好把内存条拆出来擦了擦才能正常开机。   
  我以前觉得服务器应该配置相当高，不来个双路TR3990X，再整个一堆上TiB的内存根本不能称作服务器。不过这台垃圾服务器改变了我的想法。这是一台主板型号为S5500HCV的服务器，有双路CPU和4条4GiB的内存条，硬盘500GiB还是机械的。仔细看了看这双路的CPU怎么加起来才8个核心，而且还不支持超线程？这配置还不如我新买的笔记本电脑，然后大小还特别大，比一般的机箱大得多，而且开机速度又慢，风扇还不支持调速，真是有够垃圾的。   
  不过垃圾就垃圾吧，毕竟还是个服务器，最起码还能支持24/7工作制，365天全年不断电应该是可以保证的。既然有了这样的资源，我觉得应该搞点什么在服务器上面，不然这么大的东西闲置也挺浪费的。   
  
# 服务器的折腾之旅
  最开始我是打算装ESXi的，因为自从有Hyper-V之后我基本上就没用过VMWare了，而且这俩还是互斥的。以前看到ESXi之后挺想在我的Hyper-V虚拟机里装一个，可惜ESXi这个系统实在是太垃圾，安装必须要网卡驱动然后它支持的驱动还特别少，所以这次有了真正的服务器自然是想试一下装个ESXi玩玩。   
  首先我装的是ESXi7，打开后结果又是没有显卡驱动，所以我只好下ESXi6试试看，打开之后确实可以装了，但是装好之后却没办法引导了，这就很奇怪，所以我只好放弃安装ESXi的想法。   
  之后我就想着要不然就正常的安个服务器操作系统吧，Ubuntu用的多了，干脆安个CentOS好了。不过安CentOS有不少坑，因为我安装没办法用光盘装，一般都是先录到U盘里再装，但是不知道为啥，CentOS的引导是用的是卷标名，然后U盘只能用11位的卷标名，安装程序就没法引导。   
  除了这个坑之外还有一个就是8和8-stream版本的不同。因为直接把整个CentOS下下来很麻烦我就直接下的是网络安装版的。安装程序我下的是8-stream的，但是我当时不知道用哪个源，结果搞成了8的源，装到一半就出错退出了，很难受，之后仔细检查才发现原来是版本搞错了。   
  安好之后就是如何管理服务器的问题了，虽然直接用SSH或者用自带的Cockpit也挺不错，显得很专业，但是我觉得麻烦就直接用了某删库塔面板了，反正是在内网里也没谁会攻击，而且安装配置确实方便，想做的事情一键就能搞定。   
  虽然这个服务器挺垃圾，但是至少要比一般的云服务器强，同配置的云服务器要不少钱我肯定是不会租当然也没用过。所以像什么Gitlab之类的我可以随便装，反正有16GiB内存也不担心。   
  另外就是网页服务器的环境了，面板确实方便，轻轻松松就能装一个博客、论坛加网盘了。既然网站建好了，就要考虑如何访问的问题了。   

# 如何公开自建服务器
  正常情况下我们用的网络都是经过路由器的，然后就会有NAT就没法从外面访问里面的服务。一般情况下解决这个问题就是用内网穿透，比如frp之类的。不过我们的网站不太适合暴露到外网上，毕竟开了一大堆服务，又没有防火墙，密码还超级简单，万一服务器被外面的人攻破了学校内网估计也得凉。   
  不能暴露在外网的话至少学校内网能访问也不错啊，不过服务器前面连了一个路由器，经过了一次转换，然后就没办法在学校内访问了。还好路由器可以设置DMZ主机，把服务器的内部IP设成静态的然后开DMZ主机就能解决这个问题了，另外路由器连接的校园内网也没有NAT，所以在校内就可以直接运行了。   
  
# 给网站加个域名
  虽然通过上面的方法可以让大家访问服务器，但是有一个问题就是动态IP的问题。我可以改在社团的路由器，但是不能改学校的交换机，所以IP地址没办法固定，虽然也可以直接在服务器上改成固定IP，但是我担心这样会造成IP冲突之类的问题。这种情况就很麻烦，因为好多网站内链都是带站点地址的URL，我建的网站都是通过引擎建的，改又不好改，这就很麻烦。   
  这个问题比较好的解决方案就是使用域名，域名解析的结果不一定必须是一个外网地址，内网地址同样可以解析。这样我回头可以买个域名然后解析，如果发生断电之类的问题导致IP改变我就可以直接改一次就行了。DDNS也是个不错的解决方案，不过这种事发生次数不多所以就懒得搞了。
  
# 合理利用资源
  虽然建了网站，但是平时也没有人访问……而且就算有人访问服务器运行网站服务程序基本上没什么压力，这样服务器运行基本上就是空转了。既然我打算让它持续运行肯定不能让它空转，我肯定要搞点啥利用好这个运算资源。挖矿是个不错的选择，但是我不屑于去做，不如搞点为人类发展做出贡献的事情，像World Community Grid这样的志愿计算项目就挺不错。   
  于是我就在上面安装了BOINC，这种程序虽然会占用大量的运算资源但是它的运行优先级很低，所以网站运行完全没有影响，这样就能合理的运用好这些计算资源了。   
