买了一年的云服务器的快过期了,仔细想想发现这一年其实根本没有用服务器做它应该做的事情。这一年无疑就是那它来写个博客、写个博客、搭个微信小程序、Tomcat练个手、NGINX练个手、写个博客、写个...

人类三大本质 图片来自互联网
人类三大本质 图片来自互联网

起因 我都不知道我这把狙在架谁

当时是因为喜欢玩Minecraft,所以想着给自己搭一个能7*24在线的服务器,这样我和我的朋友们就能随时随地的在Minecraft里建设和谐社会啦!但最后由于没有朋友陪我玩,所以Minecraft服务器就被我关了(原来我是一个没有朋友的人)
然后呢,学校课程开始涉及到Java Web编程(我一直非常好奇,为什么学院会开这么一大堆重合度极其高的课程,而且整体培训方案也无限向计算机应用专科班靠拢,完全背离了软件工程本科教育的初心。算了,可能领导和老师有自己的考量,是想保护这个学校的孩子出学校后有口饭吃吧...诶,我好像说了特别的的题外话)我突然发现原来Tomcat这类东西在Linux平台上跑的比Windows欢多了,而且在域名和公网ip的加持下似乎我到哪都可以访问到我放在服务器硬盘里的东西,这么一来,岂不妙哉!
于是抱着这种感觉,一步一步开始学着怎么搞云服务器的设置和项目部署。由于在自己的笔记本上就在使用Deepin(武汉深之度在Debian的基础上改动的国内Linux发行版)作为主力操作系统,所以对Linux还是驾轻就熟的。同时也依靠大二第一学期的Linux课程,因为学院老师选的教材是以CentOS为样本讲的内容,所以在Ubuntu和Redhat两大阵容之间,较为滋润,也较为摸鱼。

问题

新的风暴已经出现

个人对Java语言是厌恶的,但你要问我原因我可能一时半会也回答不上来。我在某一段时间里曾将其原因归咎为学校安排的Java重复课程太多且代码冗余杂乱令人心烦。但放在现在我可能会因为怕被人打而解释道:“Java关键词太长太多,我这个智商记忆不来 :) ”
为什么要说这件事情呢?因为随着Java web课程的尾声临近,Tomcat变成了只跑HTML的服务器。随着花哨的富文本逐渐增多,我也是在某个瞬间发现,Tomcat在解析一些东西的时候,会莫名其妙的慢的人心慌。

“同志们,快速解决一个问题的方式就是干掉那个提出问题的人!”

所以我不用Tomcat了,因为我听说在世界版图的西北部地区,毛子兄弟中间出了一票人才,写了一个叫NGINX的东西。(为表示尊敬,给它个大写。)
这玩意到底好在哪儿呢?咋Github上全是NGINX部署的项目?
我也不知道它为什么好,反正我就捯饬捯饬用上了。自此,LNMP组合就正式落户在我花了重金购买的服务器上了(120大洋含域名以及SSL证书)。

兄弟阋墙伤及无辜

LNMP是个好东西,在很多第三方的服务器管理界面会一次性帮用户安装。对于小白来说,一键安装这玩意简直是当代活雷锋才能写出的脚本。但在活雷锋叔叔惠及小白身上之前,还有两个令小白用户扎心的选择。“如何安装,以及安装什么?”
LNMP,L就是Linux了,N也就是我刚才提及的Nginx,那“M”和“P”呢?
肯定会有人跳出来了,“M不就是MySQL么,你是不是开始水文章凑字数了?”
对,被你发现了 其实不然,对于新手,也就是小白来说,这个“M”,可能代表的是2~3个东西。
那么这个“M”都有些什么意义呢?其实就是MySQL,MariaDB和MongoDB(谁被告知LNMP里面M是这个东西可真是倒了血霉了)。我们还是主要看mariaDB和MySQL吧,有关分布式文件存储的“二五仔”MongoDB我们有机会后面的文章再谈。
这个东西怎么说呢,其实就是MySQL原来是一个私人团队作品,创作者觉得是时候了就把MySQL打了个包卖给SUN(有Java的那个老公司,又是另外一个故事了),再之后SUN又被Oracle(甲骨文)买了。Oracle同志是一位出了名的资本主义战士,之前那一批MySQL社区里的人眼看着MySQL要落在Oracle手里,担心指不定哪天MySQL就被闭源了,于是众志成城在MySQL社区版的基础上搞了一个分支,这就是MariaDB的由来,更有趣的事是:“Maria是MySQL创始人Michael Widenius姑娘的名字。”
给人一种把爹卖了,女儿还在就万事大吉的戏剧感。
那从现在角度来看,MySQL和MariaDB在功能上有什么巨大差距呢?同样,以我这个小白角度来讲,我感觉它主要是在驱动和默认账户上有区别(以Linux上的实际体验为主)。
很多学生在搞JDBC或是其他的什么乱七八糟的BC的时候,总是一脸懵逼:“凭什么她的电脑能运行,我的就报错?”
如果代码没有问题的话,大几率是JDBC连接驱动和实际数据库版本对不上号导致的。这一点在高版本的MySQL上体现的淋漓尽致。我宿舍社长一味追求新版本MySQL导致一学期课程作业一个都没给老师交这事我会告诉你? 同样,MariaDB的驱动和MySQL也许部分出入,只凭缘分和运气不能保证开发者一生平安。
现在来说默认账户,前面说了,我的物理机上跑的是deepin,一个基于Debian的国内Linux发行版(我觉得吊打Ubuntu kylin和中兴的什么鬼中标麒麟)。在terminal用apt安装数据库的时候我一度非常迷茫,你说我是输入

sudo apt-get install mysql

还是输入

sudo apt-get install mariadb

(当然还有一些server和client的必需品,想不起来全名就省略了。)
当然,我全不输
MySQL高版本和MariaDB在deepin上做了一件出奇一致的地方(针对mysql8.x的某个版本和MariaDB的不知道哪个版本),那就是
在安装完成的时候不提示设置root密码
我觉得这是一件丧心病狂的事情,但在网上寻求帮助后,我发现我错了
二者貌似还把Debian默认账号给删了
很多人没接触过的话可能还不知道这玩意代表着啥

“不就是个默认账户吗,有什么用,没有不是更安全吗?”

其实不然,如果有默认账户的话,我可以通过默认账户的用户名和密码登入数据库,然后通过这个账户的高权限重置root密码,从而拥有整个数据库至高无上的权力

然后这俩货给我把这玩意儿删了

于是现在重新安装数据库的时候给我养成了一个习惯,去官网下好一个5.7.26的版本,然后一直放在我的百度云、U盘和服务器的FTP服务器上。(其实也可以通过暂时关闭数据库验证从而达到混入MySQL修改密码的操作,只不过操作过于繁琐,以我的能力记不住。)没想到我浓眉大眼的也背叛在线下载了。

我想给你一张过去的CD 邮箱服务器配置的深坑

在做那些所谓的开发工作的时候,我发现其实现有廉价云服务器居然也可以替代一些生活中司空见惯的公有服务。但真正让我感到我可以再在这个服务器上做些别的什么的时候,是因为我收到了一封官方订阅的邮件。

这里我准备一张图片都不准备放

邮件是一位学长发来的(也是一名年龄比我大的程序员),他的邮箱后缀不是QQ,不是outlook也不是乱七八糟的“其它邮箱”(没别的意思,其它邮箱我也用,就是懒得打字),他的后缀是那种很少见的那种,他的后缀是他本人的名字,后面跟着一个极其常规的“.cn”。(看来还是钱不够,要不然直接上com了,他本人也相当认同我这个观点。)
我这个时候突然意识到,我是不是也能拥有呢?
答案是肯定的,经过一番查找后,我发现根据网络教程的说法,Linux搭载邮件服务器是一件令人身心愉快的事情,(什么鬼形容词?)各种各样的教程总结下来,我发现Linux搭载邮件服务器主要还是依靠Postfix这个“奇妙的东西”。之后就是根据教程一番操作了。
然后我服务器瘫了
前两次配置邮件服务器的时候觉得在terminal里配置邮件是一件痛苦的事情,因为长期以来的使用习惯都是在一个图形界面里为所欲为。VNC尽管是一种非常优良的图形解决方案,但无奈服务器本身配置就不高(使用Tencent学生优惠,说白了就是乞丐版配置还加送了50G硬盘),VNC作为一种常驻内存的方案,对我这种指望在服务器上什么都插一手的用户来说简直是一种摧残。占据的内存和带宽完全可以让我再开一个微信公众平台的聊天机器人(这一块我会在后面的文章详细提及),所以我最后想在各种开源社区里看看,有没有什么现成的东西让我用用(感谢github和gitee,谢谢你们给了我浑水摸鱼的机会)。
随着我努力的寻找(没错,努力的寻找),终于找到了两个现成方案注①。一个是企业级的解决方案但是有收费之嫌,另一个是纯社区开源的,而且里面的小哥哥都超级友善,我发邮件过去基本都是秒回的那种.(我一大老爷们叫人家小哥哥我也难受的慌,但是这个习惯不知道怎么回事就成为当今社会的主流称呼了。)
两种解决方案都是会帮助用户在服务器上一键部署好邮件服务器(就填个想要设定的密码和数据库名什么的),配置完成后立马可以在浏览器里输入域名访问开发者写好的webmail页面,基本实现和QQ邮箱一类的操作。
因为这玩意我又重装了两遍服务器系统
众所周知可能也不是那么周知,我的设备上面跑了一堆有的没得服务,比如说私人云盘,个人博客,微信小程序(Node.js绝对是一个不安定份子),游戏服务器(minecraft和饥荒,有时候跑,有时候不跑)...等等等等。由于不知道开发者到底使用了nginx的什么配置,到底利用了什么端口和现存端口的冲突。当我重启运行的那一刹那,这个服务器上的所有和谐都被破坏摧毁了。
鉴于开发者的文档写的并不好、我没有交钱的欲望以及懒惰,我选择回到最初的起点:“没有网页端的界面,使用第三方邮件软件进行接入。”
好了,现在你们可以试着给我的friend@dengjiayang.cn发一封邮件了,不要问我为什么从不主动给你们发邮件,那是因为几乎现在的所有主流邮件服务器都会心照不宣的把我的邮件当作垃圾邮件拒收 。如果有了解这一方面的大哥大姐,麻烦捞我一手 |´・ω・)ノ 。

最后

自此游戏性,功能性,服务性就都有涉及了,眼瞅着服务器一年期快到了,回顾这些过去总是能想起来那些个令人崩溃的报错界面,自己不断的向电脑提问:“凭什么我和教程的界面不一样”以及“为什么国外的资源库为什么这么慢!”注2
时至今天,你说我有没有成就感,其实一点都没有,平心而论这些东西只不过是别人帮自己铺垫好,自己在做一点点的搬运工作罢了。那你说我后悔吗?其实也不会,现在这个教育制度和生存环境,谁又不是从搬运模仿抄袭开始的呢?
19年年初,也就是3月附近搞了一张阿里云的云计算助理工程师认证,没什么意思,不算难,会了就过了,估计在学校也没人认。说来也有趣,用的是腾讯云,却是从阿里云学的理论知识。

阿里云云计算助理工程师认证(ACA)
阿里云云计算助理工程师认证(ACA)

那以后会在服务器上干什么呢?可能随着后期手里闲钱增多,会升级一点点服务器的配置,然后去学着跑tensorflow,偏machine learning一类的东西了。当然,这都是以后的事情了,谁说的准呢?
谢谢各位于百忙之中浏览了这篇文章,这篇文章正如分类随笔一般,并不具有正常科普类文章该有的严谨性和逻辑性,以后说不定会继续写这类内容,也会尝试去写一些真正大家需要的内容分享。总之,时日还长,下期再见。

附录

注① 两则方案为Umail企业邮箱方案和gitee开源的webmail邮件服务器方案

注② centos和ubuntu默认采用官方(国外)软件源,在解决软件依赖性问题时,部分源会被国内防火墙屏蔽阻拦。近年阿里云、中科大、腾讯云、华为云、清华、兰大(是的没有错,是那个我们熟知的兰大)以及各所知名高校均开始布局本地源,且有巨大良性成果,由衷感谢以上组织和企业。