写在前面
还就那个又好久没写博客啦!今天把自己的折腾服务器的一些有趣的玩法记录下来,我们到底为啥需要一台云服务器?这篇文章我会聊聊自己用服务器都干了些啥,以及我们平时用服务器可以做什么。
云主机和个人电脑的区别
其实就操作系统的用户接口(界面)这一角度而言,服务器和个人电脑并没有区别,本质上都是人操作系统去完成一系列事物。当然,从很多比较直观的角度来看,他们的区别还是挺大的:
- 云主机往往没有界面(其实windows server是有界面的,但是2021了不会真的有人用windows server吧?)
- 云主机有公网ip(当然也可以没有),其网络质量往往比较稳定(仅指在国内)
- 云主机性能可以根据需求(和钞能力)调节
- 云主机主要使用
linux
操作系统,通过其强大的shell
来交互
我拿云主机都干了啥
因为IPv4
短缺,而IPv6
的设计又不向下兼容(真的蠢,附上一个我觉得不错的知乎回答),所以公网IP地址可以认为是云服务器(云主机)最核心的需求,有了公网IP,世界上任何一个接入了互联网的设备就可以直接访问你,并获取你提供的各类服务。可能有人好奇为什么自己的电脑没有公网IP,但baidu.com
却还是可以把数据发到你的浏览器上,可以去了解下NAT
技术1。
在互联网上,服务的提供方是少数,而需要服务的却是多数,这是一个显著的多对一结构,显然这里只有一需要被找到,而多不需要被找到。在IPv4
有限的情况下,运营商将公网IP
分配给少数,而大多数通过NAT
来访问互联网,问题解决。
而当你需要被找到的时候(比如搭建个人博客什么的),NAT
就成了问题,因为没有公网IP
,你无法直接被找到。你也不可能在不借助外力的情况下通过NAT
被找到2。
我认为云主机的最重要的资源就在于稳定的网络与可以被找到(公网IP)这一属性。下面是我拿它都做了什么。
个人博客
你能看到这篇文章当然是因为它在公网上,而且是在我的服务器上,它是由hexo生成的静态页面,在配置好各种设置后就可以一键由markdown
转换成模版中的样式和效果。未来我打算切换成gatsby
但目前可能尚无时间。
私人云盘
基于nextcloud的开源项目搭建,非常成熟,有相当多的功能,由于其跨平台特效以及活跃的社区,选用。
我用它的主要需求是使用了rime
输入法。我从2010年开始在网上打字,一直使用某输入法,积累了一定量的个人词库,但是使用linux
发现rime
输入法这个宝藏,再考虑到输入法的个人隐私问题,就一口气连着词库迁移到了rime
。
rime
的跨平台特性能让我无论是在windows
平台上的游戏里交(pen)流(ren),还是在linux
平台工作时的交(mo)流(yu),我输入的词语都可以记录到rime
的词库中,而nextcloud
作为跨平台的云盘,可以无感知的帮我同步各个平台的词库(甚至包括手机端的rime输入法)。简单来说就是,我在上班打的词语,下班了还可以接着用,无缝对接,终身都能积累自己的词库。
私人云盘的最大好处就是随时随地同步自己的数据,以及完全不用担心隐私问题,毕竟是自己搭建的云盘。除了rime,我还同步了许多配置文件(这也算异地容灾了吧🤣?)
1 | 提供一个test账户给大家测试用,不要干坏事求求了 (补充:因为该测试账号一直有🐕在传 nsfw 的内容,test帐号已封禁。) |
内网穿透
基于nps搭建的内网穿透神器,让你的本地程序直接映射到公网的端口上,开发人员使用的神兵利器,需要本地端和服务端均安装客户端使用。
一些其他的用法
饥荒服务器
我也没想到最一开始入云服务器以及linux
的坑竟然是一款游戏,当时的需求很简单,和小伙伴联机玩饥荒的问题在于,时间长了网络会不稳定(毕竟是p2p
模式,当时小伙伴们的网络状况肯定是不如云主机的网络稳定的)。我青涩的像个孩子一般,在腾讯云的windows
server
2012上用别人写好的脚本摸索着运行steamcmd
,从下载服务端程序到配置房间,一步一步磕磕碰碰,想起来也是贼有意思。后来发现windows
server跑着GUI太占内存了,而自己又菜,还不敢就入手linux
,于是让小伙伴掏钱买了另一台云服务器,一台跑地上,一台跑地下。(好家伙,linux
都没碰着,先学着搞分布式了?)
后来入linux
还是从饥荒开始,对饥荒的程序配置比较熟悉之后,居然很流畅的就在linux上搞定了服务器。
抢课
这个其实不用服务器也是ok的,发抢课的请求不管是服务器还是本地电脑都一样,只不过可能觉得服务器的网络稳定一些,所以把代码写好之后丢服务器上跑了。
各种后端的开发及运行
有服务器最爽的事情应该是项目代码的验收吧,当别人的课设只能自己掏电脑上去打localhost
(还往往是8080
端口)的时候,我直接用学校的电脑反手一个xxx.coreja.com
,还是睾贵的HTTPS
请求🔒,哇感觉就贼棒哈哈哈。然后吹实验报告的时候就可以很装13的说自己的项目放在了公网上,大家都可以来体验。
小结
其实我写的比较片面,主要是我自己的使用体验。从上面这些讨论不难发现,因为云主机的核心是稳定的网络以及公网IP地址,所以云主机的大多数作用都是面向一对多的那个多,它主要是对外,向外提供服务,不管是游戏的服务器还是自己的博客网站,甚至是自己写的web后端,它一定是向外提供服务给其他人去使用的。
在大学生涯的学习中,我一直坚信一个观点,即有需求才有动力去学习。😶其实从我大二开始接触服务器,接触linux
,这里面真的踩了不少坑,但也学到了不少知识,这些知识不像是课本里的知识,它们是我主动吮吸、贪婪的从互联网以及各类资料中探索得来的,就我个人体验来说,要比课本里学到的知识深刻的多。从最一开始就直接把tomcat
放在80端口裸奔,到学会了nginx
的使用、acme.sh
颁发泛域名ssl
,到自己开发后端解决那些看似怪里怪气的bug
,我增加了不少奇怪的知识。
你要问我这东西有什么用,能干嘛,实话实说我真不知道。老实说,一开始搞这些花里胡哨的其实就是为了装13,为了和别人不一样,没有什么特别的正经的目的,我就是觉得这样很酷而已。过程里遇到了配置文件写错了标点或者拼写错误,我也很生气骂自己/别人的教程傻逼,过程里遇到过别人没遇到过的问题也会自己搜文档,实在不行去github
提issue,比较意外的是大家真的都挺nice,但我在这个过程中不断探索、学习、成长、挑战,克服一个个问题和困难,至少我觉得很值。