本帖最后由 酷车手BB弹 于 2020-2-20 11:14 编辑
Linux以及MC开服的全面教程

本帖严禁转载
在开始前先说两句
Linux|minecraft服务器技术交流群:126066107
  在BBS也待了一段时间了,也因为开服问题经常来BBS找教程找答案什么的,但是最近发现一个BBS空缺的东西,那就是一套系统而且完善的Linux系统相关以及用Linux开服还有后续维护的教程。
  其实BBS里面还是有很多大佬的,像一些优秀的插件我估计是一些java程序员利用业余时间同时也热爱MC才捣鼓出来的不过也不排除自学的天赋青年,但是挺有意思的是我没找到过有Linux运维工程师发的一些经验交流或者技术教程贴,所以我这篇帖子的目的就是为了补上这个空缺,我会尽力用通俗易懂的语言把这个教程写得足够好。
  最后,为什么标题说是“萌新到入门”而不是“入门到精通”呢?原因是本文我会围绕着MC开服所涉及的Linux相关知识来做教程,即使从头到尾都学会了,也确实只是个入门水平,或许还不到。当然,如果有兴趣的话加上自己努力学习,精通只是时间问题。加油吧骚年们


看了本文你会学会什么?
1,Linux的基本系统原理和基本操作命令
2,在Linux中如何更改文本文件,vim编辑器的使用技巧
3,基本的网络知识,以及一些TCP/IP协议相关知识
4,在Linux系统中搭建MC服务器以及日常维护操作
5,在Linux安装各类MC服务端可能会用到的程序,如MySQL
6,进阶网络知识+硬件性能知识,如服务器架构设计理念
7,搭建网站
8,企业级监控系统搭建和使用
暂定以上,随时添加
注意:在看一下内容之前确保你有一定的计算机硬件知识。如果有兴趣的话可以看一下我前几年写的一篇文章:计算机硬件基础知识
注意:基础知识以及一些概念不太懂的纯小白在研究本教程的同时请伴随着搜索引擎(百度、谷歌等),至少要搞明白一些常用概念,比如VPS是什么?云服务器是什么?面板服和云服务器或者VPS之间有什么区别?什么叫终端?什么叫防火墙?什么叫内网外网?什么叫客户端?什么叫服务端?

Linux发行版(选看,感兴趣的服主可以了解一下,看不懂没有关系)
  对于“发行版”这个词可能很多小伙伴头一次听到是一脸懵逼,其实Linux并不是某一个操作系统的名称而是一类操作系统的统称,而发行版就是基于Linux的开源内核再加以各自偏向的方向再加以开发得来,如何理解呢?最简单的方式就是对标windows的不同版本,虽然不太恰当,但是这么理解比较容易。
  一些流行的发行版的详细介绍我就不过多阐述,找了一个不错的文章给大家看看 2019年最流行的Linux发行版
  被大量用来作为服务器系统的发行版其实就几种:Redhat CentOS Ubuntu Fedora Debian
  我这里就简单描述一下CentOS和Ubuntu的区别,因为目前国内企业服务器基本都是这两种系统之一或者混用。
  CentOS和Ubuntu其实是属于不同派系发行版(fedora和debian),都用过的小伙伴应该有发现两种系统的包管理器(就是自动安装软件的程序)是不一样的,CentOS的是yum,Ubuntu的是apt-get,这是其中一个区别,包管理的体系不一样,相应的软件源也不一样。区别其二是CentOS主张极高的稳定性,Ubuntu主张较新的功能,所以在稳定性上Ubuntu要稍差一些,但是依然非常稳定,毕竟CentOS出自Redhat。由于追求极高的稳定性,CentOS不管是在内核(kernel)版本,yum的base源的软件版本都是比较低的(久经考验),所以在CentOS上如果想用比较新的软件的话需要自行编译安装或者直接安装已编译好的二进制包又或者新版本的软件有相应的yum源。
  所以,综上所述,作为服务器我个人推荐CentOS,[:hide:]其实还有一个原因也是因为CentOS我用得最熟,现在公司用的Ubuntu其实有点不适应。


为什么选择Linux?
  这里我不会阐述什么配置能带起来多少玩家并且TPS达到多少,我这里主要是简单讲一下为什么选择Linux,Linux和windows到底有哪些区别,并且我会避开比较难以理解的内容,放心食用。
  1,服务器硬件配置低的情况下选择Linux更加合适。其实大多数服主在刚开服的时候都不是一来就有什么8核16G,8核32G甚至更高的配置的服务器,一般都是1核2G的腾讯云学生机或者1核1G的阿里云或者其他云服务器商的机器(这里我不阐述面板服相关的东西),在这种情况下如果装Windows的话会因为Windows的图形界面以及Windows较多的自启程序而导致内存占用差不多一半或者更高,也就是几百MB的样子,而Linux在没有图形界面情况下开机的时候以CentOS7.6为例只有大概80MB左右的内存占用,这对于对内存比较敏感的MC服务端来说无疑节省了不少的内存开支
  2,优秀的内存管理。关于内存管理的部分其实理解起来又挺大难度,具体细节要研究内核的内存管理逻辑,这里不做细讲,而且我也讲不好这个东西,感兴趣的小伙伴还得自行百度或者谷歌。相信大家都经历过windows蓝屏的绝望,windows蓝屏其实较多时候是由内存问题引起,而Linux上几乎不会出现因为内存问题出现的系统崩溃现象
  3,极高的稳定性。众所周知到处都在说Linux比windows稳定,但是稳定多少,怎么个稳定法,为什么稳定很少有人能说得明明白白,当然我也不能,但是我会抽一些点来描述一下。
    (1),在处理高并发任务的时候由于任务数量和进程+线程总数是远大于CPU核心数的,那么CPU为了让所有的任务”同时”运行,那么CPU就需要不停地切换线程进行处理,这个动作称之为“上下文切换”(这里CPU的工作逻辑详细概念想了解需要自行搜索),而CPU上下文切换这个操作是由操作系统内核来完成的,那么这里又牵扯出另外一个概念,那就是CPU的内核时间。CPU在工作的时候其实不是单纯的占用率,是分为usertime(用户空间时间)、system time(内核空间时间)、iowait(IO等待时间)以及上下文切换和中断等,这里不再展开讲,简单说就是一般情况下用户运行程序是主要占用用户空间时间,而内核空间时间的占用率和系统内核性能有非常大的关系,而且内核空间时间占用大小直接影响CPU能发挥的性能也直接影响系统稳定性。那么说回为什么在高并发下Linux比windows优秀,上面已经说过在处理多任务的时候CPU需要不停切换上下文,而切换上下文需要内核来操作,那么这部分操作就是内核空间时间,而Linux内核在处理这类任务的时候是无比高效的,换句话说内核空间时间越少系统能发挥的CPU性能就越高也越稳定,特别是在多路CPU的情况下。如果感兴趣的话可以找两台机,一台windows一台linux然后跑一些差不多的程序然后观察内核空间时间,你会发现windows内核空间时间占用率非常高。下面附上看各系统内核空间时间占用率的办法:
    windows: 如下图,把“显示内核时间”(win10、win server 2016以上)对勾点上,然后你就会发现CPU占用率会分成两层,一层颜色深一层颜色浅,深色的就是内核占用时间
   
    Linux:如下图执行top命令然后在%Cpu一行的sy就是system time占用百分比,id是空闲百分比
   
  (2),Linux较windows更稳定还有一个特点就是Linux的内核可配置性和内核更改无须重启的特性。Linux在更改内核参数或者其他系统级的更改操作后并不需要重新启动系统才生效,这一点对于稳定性要求极高的企业场景无疑是非常大的优势。说一句题外话,Linux因为是开源系统,所以在Linux上几乎可以做任何你想做的事,只要你会做,甚至你都可以简单调整一下内核参数然后配置一下转发路由就可以把一台Linux服务器做路由器用。
  (3),Linux病毒威胁较少。由于Linux的用户管理模式是由root作为最高权限用户能和内核直接交互以外所有用户都不能和内核直接交互,所以在这种模式下对于病毒多了一道防火墙,入侵Linux系统“提权”就成了最重要也是比较有难度的事了。
  4,“避免令人困惑的用户界面”。这句话其实是“Linux五大哲学思想”之一,这句话的意思其实就是说避免了图形界面给用户带来的困惑,在进行某些设置或者配置的时候迷茫。其实这句话在我刚开始学Linux的时候我无法理解,也不赞同,对于当时已经比较熟悉的windows的我来说,全是命令行才让我迷茫好吗,我相信在看本文的你说不定也是这么想的,但是这句话能成为Linux五大哲学思想之一是有道理的,等你真正熟悉并且融会贯通了Linux之后再来看这一句话你就能理解了。
  题外: 给大家看看公司的服务器多少天没关机了,818天,两年多没关过机了,相当于从申请了开始之后就没关过机了,而且这只是众多服务器中的其中一台而已。大家可想而知,818天的时间从来没有过任何意外导致系统崩溃,甚至在我的职业生涯中还遇到过五年没有关过机的Linux服务器。

正文开始前的准备工作
自身条件:
1,一定的硬件基础知识
2,对“看了本文你会学会什么?”栏目中注意里面提到的一些概念需要有了解
3,较强独立思考能力和排查问题能力,较强的文档阅读能力
4,会用搜索引擎并且有一定筛选搜索信息的能力
5,必须非常有耐心(很重要,学习Linux的路途非常枯燥,如果没有坚定的想法,学习途中会磨灭你所有的兴趣)
6,切忌学到一点皮毛就装大佬,不要用微不足道的成就骗自己,谨记“人外有人,山外有山”
需要准备的东西:
注意:在本栏目提到的任何软件和工具都不阐述如何安装,也不阐述终端工具怎么添加服务器,因为这些东西如果你肯去百度搜索,会有无数篇文章可以教你,我就不再重复造轮子了。首先这些技能是基础中的基础,而且我得控制一下篇幅。
另外:如果我提到的有些工具我有保存的话我就直接分享出来,毕竟有一些东西对于英文不太好的同学来说要去官网下载的话有一些吃力。其次,如果我讲的东西有一些我已经写过文档的话我会把链接直接发出来,想好好学习一下的话还请耐心看完。
1,终端工具:Xshell(windows) ZenTermLite(Mac) 其实mac上比较优秀的终端工具是iterm2,但是由于iterm2对英文不太好的人和不太熟悉Linux的人不太友好,所以推荐一个免费而且有中文的终端工具,实际上mac也可以用自带的命令行工具用ssh连接(不懂的话百度)。我这里附带一下Xshell的分享Xshell6百度云盘下载  密码:9aed  注意一点:Xshell在安装的时候一定要选择 free for home&school选项,这个是官方免费版
2,虚拟机(vps)或者云服务器一台或者安装了Linux(centos)的物理机一台。自行在centos官网下载并且安装的虚拟机或者物理机会有防火墙和selinux的问题,我后面讲搭建MC服务器的时候会讲
以上足矣

正文
每一课的标题是指当前课时的主要内容,其间如果遇到其他需要展开讲解的知识也会补充,所以请顺序阅读
从第一课开始我将默认大家已经安装好终端工具并且已连接上服务器
第一课 Linux系统基础
第二课 Linux基础命令
第三课 Linux文件系统

第四课 常用文件操作命令和工具

第六课,网络知识



补充内容
基于开源项目wordpress的网站搭建

企业级监控系统zabbix的搭建

可靠的自动重启脚本配置

话说,谁可以救救我这诡异的排版啊!!!!





[groupid=1680]Power of Spongie[/groupid]