在哪边可以看到 Linux?我又该如何学习 Linux 网络服务器?
Linux 操作系统的网络服务器功能超级强~也可以拿来做云系统的底层操作系统, 当然也能拿来作为端点设备的嵌入式系统应用!大的 (云) 小的 (端) 通通都可以使用 Linux!学这个应该很有利! 问题是,如果你想要操作好服务器,但是却没有相关的 Linux 及网络基础知识, 那就好像一心想着跑完半程马拉松,却不去进行基础肌力训练,当然就很容易闪到腰一样!没有好好管理的网络服务器, 真的很容易被攻击。任何管理不当或者是设置错误或者是操作失误等等,也都可能造成系统的损伤呢!
其实不只是 Linux 系统啦!所有的事情都一样不是嘛? 学功夫先练马步、学数学先背好 9x9 乘法表、学网页先理解 html 与 css、学程序当然从底层的循环与判断式等逻辑概念学起!所以啰, 学网络服务器,当然先学网络概念加上理解操作系统操作,才有办法继续下去的啦!
鸟哥以前就有慢跑的习惯,不过,都只能跑个 5K 而已,跑完喘嘘嘘~后来 2013 年底,学生知道鸟哥有在跑步,就约了要一起去跑半马, 半马大约是 21K,当时的鸟哥只有 5K...,5K 到 21K,足足超频 400% 耶!不过,半马耶~很想挑战啊! 所以,从该年底,就开始尝试每次跑 10K!没想到真的跑的完!只是需要慢慢跑。但是,每次跑完都很累~脚都很酸~偶而还会闪到腰~就觉得很奇怪~ 持续训练一年多,还是同样的问题!于是上网找一找问题,哪里出错呢?
原来是因为虽然是慢跑,虽然起跑有暖身操,但是 (1)跑完没有收操,所以肌肉没有适当放松,就导致这个问题~而且 (2)最重要的内核肌群没有训练, 所以腰部的许多肌肉耐力不足,因此即使是缓慢的跑跑,结果也是容易受伤!所以,这几年来,每天下班之后自己找点时间做些伏地挺身、棒式、深蹲等, 鼓励自己持之以恒~慢慢的,跑步终于比较不费力了,甚至生平首次半马也在 2017 年底完成! 经验告诉我们,除了持续锻炼慢跑之外,身体基础肌力的训练,帮助应该是很大的。
同样的,目前大家都说『云端云端』了,不管是大数据 (big data) 还是人工智能 (AI) 等等,这些技术都需要庞大的数据数据, 而数据数据当然都存在云里面!而创建出云服务的底层系统,大部分主要仍以 Linux 为主。所以,虽然目前大家都谈这些高端技术,然而, 没有底层的 Linux 与网络技术等蹲马步来的基础功夫,想要直接升上高段班进行高级技能...恐怕是会伤脑筋的!因此, Linux 基础与 Linux 服务器基础,还是需要了解,这样才有办法上云端去管理更高端的数据数据啊!
时至今日,应该没有人没听过『云端』这两个字,有阵子『云端运算』是相当红的一个名词~只是,现在 (2023) 都已经被 big data、AI 人工智能、元宇宙攻占版面了。但无论是 big data 还是 AI,依旧需要前端的侦测器收集数据, 中继的小服务器 (边缘服务器) 接收数据同时传输到信息中心,后台的云进程作为信息中心统一管理!最终再通过开发人员的技术, 将这些信息集成分析,变成有用的 big data 的数据收集与机器学习等。而最重要的底层平台,那就是已经成熟的云系统进程啰! 所以,你的某个端点设备一定经常使用到云进程的成果,只是你不知道而已啦!
现在,整个互联网世界已经被云端取代了!云端有个特色,那就是..不是云就是端啊!云强调的是将系统资源全部集成成为一个资源中心, 因此有所谓的数据中心 (data center) 以及虚拟机集群系统 (cluster system) 等等将硬件资源集中管理,然后再通过云管理进程来整理放行所有的资源。 云里面的东西大概有点像底下这样的图标,包括保存、虚拟机、网页前端与云服务等,而应用面则是各种服务都可以啊! 你只要有网络连进去云进程,就可以使用云里面的资源了!
上面左图,底下两个组件分别是大量的虚拟机 (VMs) 以及数据中心 (Database),使用到这两个的组件,主要则是云服务 (Queue, 队列) 以及云平台 (Web frontend, 网页前台画面)。至于右图,中间的云主要分三层,底层是基础设施 (Infrastructure),如电脑、网络、保存组件等。 中间是平台系统 (Platform),如特定保存目标、身份识别中心、运行应用程序、队列数据、数据库中心等。上方则是应用层 (Application), 包括侦测系统、内容显示、协同工作系统、消息沟通平台与金融中心等。而使用到这些云进程的,则是用户操作的端点设备,如服务器、桌机、触摸设备等。
那这朵云放在哪里呢?依据云服务的客户而有公有云及私有云,所谓的私有云指的是跟信息厂商合作,开发出给特定企业专用的内部云系统。 至于公有云则是信息公司自己建置,用来提供给客户 (无论个人还是企业) 注册与使用的公开服务系统。私有云常见的有:
公有云就多了!包括:
现在,你根本不需要买实体机器,只要跟这些云服务商购买服务,就可以直接获得一台云里面的操作系统 (我们称之为虚拟机), 这个操作系统还可以让你选择哩!而且购买之后,还连带的给你适当的使用带宽等等。只是,每个月就得要付出一笔费用就是了。当然,鸟哥还是喜欢自己管系统, 这个没办法!天性~各位伙伴则不必然一定要像鸟哥这样,既然人家都帮你把资源管理好了,你直接买云里面的系统就 OK!除非你的数据不想上网, 或者是运算量太大,买实体机器比较划算的情况,否则,买云虚拟机就可以了。
因为企业或个人不需要自己建置机房,不需要考量电力与资源的配备,不需要考虑散热,只需要考虑带宽与所用的软硬件资源搭配的维护费用是否合理就好。 因此,鸟哥的学生很多毕业之后,接触的业界就已经没有自己创建服务器与机房,而是直接购买外部的云服务器,就直接在网络上面安装系统, 处理系统。所以啰,虚拟化几乎是显学了!这个不学不行了!
云程序主要是将运算资源与保存资源统一控管,然后再使用管理界面或者是其他方式来管理资源分配,包括招商的功能等等。 所以,想要玩『云进程』方面的技术,没有钱 (没错!你真的没有看错) 是玩不起来的!那么好了,当你从云里面取得应用的资源后, 假设这个资源是整个操作系统好了,你总是得要加以设置、系统维护与做相关的数据整理吧?这时,如果没有适当的终端设备,怎么取得进行维护?
你当然可能会想到,不过就一台 PC 吧?好,如果你有 100 个员工,你花了 100 个云系统取得了好控制的资源,然后, 还得要加上每个员工一部 PC,这部 PC 还有使用年限,年限到了要一口气换掉 100 台 PC!光是想到这 100 台 PC 的维护与管理, 想不崩溃也很难吧?这时,如果有个简单的可以随时更换的系统来作为取得云系统的界面,那不是很棒嘛?没错啦!这就是端设备的想法! 在这个想法上,最知名的应用就是树莓派啊~目前台湾很多硬件厂商也都在想要搞类似树莓派,但是显示与运算功能更强大的单版电脑。
这种单版电脑的特性就是比较不耗电,方便携带,可以随意布建在难以放置个人电脑这种大设备的环境中。 此外,目前许多侦测器材的中介接收与发送信号用的小型服务器 (或称为边缘服务器),也是通过类似树莓派这种小装备的布建! 一片树莓派的大小大约在 10cm x 6cm 左右,耗电量通常在 5W ~ 15W 以内,所以行动电源就可以驱动这种小电脑!
讲个云端最容易思考到的应用!在企业的训练环境,或者是学校的教育环境,买个三、五部 PC 搭建一个私有云的环境, 并建置好一个班级或一个训练单位的虚拟机量,然后通过树莓派这种小设备,直接连接到云系统取得要训练用的虚拟机, 就可以让所有的人在云里面享用资源了!一方面云虚拟机的统一设置规划比较简单, 再方面这样的整体价格要比每个训练人员具有一人一 PC 的设置费用更加便宜!
而不论云与端,这两方面的底层操作系统,大部分就是采用 Linux 操作系统来做基底的~所以,学 Linux 很好用喔!
这几年你也常听到所谓的物联网 (Intenet of Things, IoT),那又是什么东西?先讲个最简单的~你知道你去运动时,跑了多久?速度多快?心跳有多少? 如果你有一些穿戴式设备,例如可以侦测心跳的手表的话,那么就可以通过 wifi 或蓝芽的功能,将手表侦测到的数据传输到手机或其他接收设备, 之后再将这些数据传给数据中心,根据你个人的身体特质,数据中心会告诉你,跑太慢啦!还是跑太快啦!做一些即时回馈的机制~ 这个穿戴式的小配备,就是物联网的一环!
那物联网与云端有没有关系啊?来来来~我们来看一下 Samsung 提供的一张简单的图标来聊聊各个环节:
鸟哥觉得上面这张图非常经典~绘制出整个 IoT 的精神了~以刚刚慢跑的概念来看,那个监测的手表就是底层的侦测器 (wireless sensor network),负责监测你的身体信息。然后通过一些中继器,最简单的就是你的手机或家里的无线基地台 (internet gateway),将侦测器监测到的数据通过手机或家用网络传输到云进程 (cloud computing) 当中!通过云进程的解析后,再用于提供各项服务 (service & applications)。例如告知你这次跑步花费多少热量?做个人健康控管,做运动咨询。将你的信息传给运动专家解析,还可以做哪方面的增强等等。
最理想的 IoT 作法是,未来所有的家电、设备与设备通通做好链接,例如,当冰箱没有食物了,自动通过网络下单到店家去订购食材, 店家的食材准备好之后,自动发给物流业者,然后进行进货这样。总之,就是物品跟物品之间会互相链接进行连动,让人类变得懒懒的就可以永续生活下去这样 (误)...
但是要完成上述的总总功能,你得要有许多的技术才行!例如,中间的云端运算 (cloud computing) 你就得要通过硬件资源管理去控制一大群集群设备, 这些设备大部份应该都是以 Linux 为底层系统的。然后网络中继器 (Internet Gateway) 包括手机与小型设备,这也是 Linux 在嵌入式设备的一大强项! 而最底层的这些侦测器,很多也是集成信号直接发送到类似 Arduino 链接到单版电脑的功能啊!这些几乎都或多或少用到 Linux 系统与其相关的网络服务的。 所以,不学学这些基本技术怎么行呢?对吧!(Arduino 其实也很好玩!等有空,我也来写写简单的教学好了!)
言归正传,再来聊聊云进程的虚拟机吧!这才是我们这整份数据想要探讨的重点啊!先来聊聊什么是虚拟机,跟虚拟机的应用好了。
过去鸟哥上课时,鸟哥的学生都会说:『老师,您说操作系统都要经常操作,否则学不会。问题是,我家没有 Linux 耶,怎么练习?』 后来鸟哥教了 Virtualbox 的方法,让学生自己回去自己的系统上面安装一套虚拟机。考试的时候,学生还是说不会!我说不是已经教你安装一套了嘛? 他说:『因为啊~老师啊!我家的环境跟老师您教的环境不太一样!我老是搞不清楚要做些什么』....比较乖的学生则是这样:『老师, 我好像遇到瓶颈了,能不能拿机器来给老师看看?』好喔!我以为是笔电,结果,学生将家里的桌机整个主机都搬来学校... 好厉害!好厉害!不过,开机后....咦!错误呢?不见了啊!重新开机就自动修复某些错误了...真是伤脑筋!
这个 virtualbox 就是一般可以安装在个人电脑,让你的主机仿真出一台逻辑上完全独立的『机器』,在这个『虚拟』机器上面你就可以安装操作系统这样。 所以,最终的结果是,你可以『同时操作两个以上的操作系统,在同一台实体主机上』的意思。而且,这台『虚拟机』搞坏了也没关系, 因为该系统的硬盘就是个文件而已~将文件重建,该系统就回复正常了!所以在管理方面相当简单!
只是这个『虚拟机』几乎所有的硬件都是仿真出来的,因此,可能在运作性能上会比较没有这么快速!所以,用来学习操作系统最好了! 因为『虚拟机』不会破坏你原有的系统,而且『虚拟机』挂掉也不会影响你的系统运作!最后,『虚拟机』可以从无到有全部练习! 所以,在学习的角度上,虚拟机当然是相当好用的一项工具。
事实上,虚拟机虽然逻辑上是一部完全独立的主机,但是毕竟用到的就是实体的主机资源。因此,当虚拟机要使用实体资源时, 就得要通过一组软件来控制~这组软件就称为虚拟机监督器 (hypervisor) 了!上面图标里面的 VirtualBox 就是一个监督器啦! 包括前面提到的 VMWare 也是个监督器~那么 Linux 上面常见的监督器有哪些呢?基本上常见的是这两个:
早几年在 Linux 底下玩虚拟化时,大多使用 Xen 这个软件,不过该软件当时就没有纳入 Linux 内核,因此想要使用还得要重新编译一个可以支持 Xen 的内核才行。而自从 Linux 将 KVM (Kernel-based Virtual Machine) 的软件纳入内核后,目前在 Linux 上面的主流监督器,就变成 KVM 啰。
但是,事实上无论是 Xen 还是 KVM,这两个软件仅是作为硬件资源监督,且大部分在传达 CPU 指令功能,在一般『电脑其他硬件』的仿真方面, 还得要通过其他软件的支持才行!其中一个名为 qemu 的软件,就是用来仿真各种周边硬件的!包括主板芯片组、网络卡、USB、显卡等等, 就是通过 qemu 这套软件来达成的!这两个软件的相关性简单的用下图来做个说明:
上图最上方的 KVM guest 就是一个虚拟机,你可以在 Linux 系统上面创建多个 KVM guest (只要你的硬件资源如 CPU 与内存足够的话!), 且通过 qemu 去仿真各个周边,就能够在一部实体机器上创建多个虚拟机来同时操作啰!不过,如果每个 KVM guest 都得要自己手动设置与处理, 这些参数很难搞定~因此后来就有统一控制这些 guest 的管理平台出现了!目前 RockyLinux 上面就使用 libvirtd 这个 daemon 来管理! 不过,libvirt 其实使用度是相当广泛的,他仅是一个中介界面,可以管理相当多的虚拟机监督器呢!
一般企业或用户自己申请公有云的虚拟机,大部分都是用在架设网络服务器上,包括建置数据库系统、Web 服务器等等。 这也是鸟哥从这一版开始会以虚拟机介绍,请大家建置一套虚拟机的主机系统,并通过实际操作来管理虚拟机的缘故。
而鸟哥由于上课需求的关系,使用的私有云或者是跟学生共同开发的超小型云系统,就是想要让学生在任何地方都可以取得云里面的虚拟机, 然后这部虚拟机是学生专属的!可以在里面做任何的事情。而鸟哥就通过周边界面完全相同的虚拟机进行教学~ 学生就没有借口说没地方练习啦!而且因为云里面的系统可以随时产生与销毁,因此也相当适合于在线实做作业与考试环境的进行喔!
这次鸟哥希望通过一部实体主机的协助,在虚拟机的环境中,建置好我们所需要的一座小机房的环境, 而不是单纯所有服务通通架构在一部 Linux 系统上面而已。既然如此,那么机房内的网络环境该如何设计? 是否需要创建路由器?是否需要设计交换器?是否需要沟通不同的网段?如何测试不同的 IP 版本等等。 如果没有基础网络概念,那么很难继续下去啦!底下的几个重点,你应该都要了解一下才好!
目前我们所在的世界,没有网络应该是很难想像的一件事~而如果想要理解服务器的网络运作,没有网络基础的话,会很麻烦! 如同上一小节提到的,IoT 应该是未来的趋势,那么所有的节点应该都需要有网络连接,有网络连接基本上就应该要有 IP 地址, 但是 IPv4 的 IP 地址在前几年就已经发派完毕,目前已经没有新的 IP 地址可用了。那我们还需要这么多的对象来连接,怎办? 这就需要 IPv6 的支持!嗄!这啥鬼?不懂就惨了!对不对!详细 IPv6 留待后面我们慢慢来讲!
[vbird@localhost ~]$ ip addr show 3: enp0s7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 52:54:00:00:02:80 brd ff:ff:ff:ff:ff:ff inet 192.168.100.180/24 brd 192.168.100.255 scope global noprefixroute enp0s7 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe00:280/64 scope link noprefixroute valid_lft forever preferred_lft forever # 上面 inet 是 IPv4,而 inet6 则是 IPv6 的 IP 地址~看不懂对不对~ # 没关系!后面章节我们慢慢再来谈!
另外,你也会经常听到局域网路对吧?那局域网路是什么?他可以让你的主机之间进行什么动作?你的防火墙可以针对整个局域网路做些什么设置? 局域网路的 IP 地址表示法又是什么等等~如果你不清楚,那么服务器的防火墙设置,会让你非常非常头疼!
目前的互联网速度越来越快,据说已经有 100Gbps 的设备已经在开发中,服务器等级的设备大多已经内置 10Gbps 的网络芯片组, 甚至一般家用的系统,也都内置了 2.5Gbps, 5Gbps 的网络速度了!真是飞快! 你知道这个数据代表的是什么意思嘛?这些超级快的网络能够用在哪里?每一部电脑都可以使用到这么快的速度嘛? 如果整个局域网路里有这么一个高速的设备存在,所有的主机都能够享用的到嘛?如果不懂网络基础,那你的 $$ 肯定会花错地方!
[vbird@localhost ~]$ ethtool enp3s0f0 Settings for enp3s0f0: Supported ports: [ TP ] Supported link modes: 100baseT/Full 1000baseT/Full 10000baseT/Full 2500baseT/Full 5000baseT/Full Supported pause frame use: Symmetric ..... Speed: 10000Mb/s ..... # 重点在于:单位!Mb/s 是什么单位? Mbytes/s 又是什么单位?这很重要!
网络布线一直是网络管理者心中最大的担心!因为一个布线不良,可能会影响到好几年的工作效益!有摸过一点点网络的朋友都知道 RJ-45 的『水晶头』, 网络也有一堆人在教你如何压制水晶头~问题是,如果你需要的环境是 10Gbps 以上的网络速度的环境, 自己压水晶头有没有关系?又该使用什么等级的网络线?为什么外观看起来一模一样的网络线,只是列为『等级不同』就差好多好多钱? 这就是我们需要注意的部份!
有很多所谓的网络磁盘机架构,就是让 server 通过网络去取得一个网络『硬盘』来使用~我们都知道,主机的硬盘如果死掉, 你这部系统当然就会卡卡并且可能立刻就不能用了!那么网络来的『硬盘』当然就是吃网络啰!那...如果网络线松脱, 或者是网络流量增加导致网络暂时停顿,那这个网络硬盘『可能就会被判断为损毁』的情况~此时,你可能会需要使用到两条以上的线路来备援! 咦!两条网络线?那怎么共用一个 IP 地址来连接呢?这就是我们需要理解的!
现在很多 ISP 公司都直接告诉你,所有的服务请加密!为什么要加密啊?不加密行不行?当然行!不过,后果请自负~ 那,为什么不加密的数据可能会被窃取?这就涉及到基本以太网路的传输协定了!如果不清楚这个协定,你当然也就不知道怎么防备!
你也会经常发现你的客户或朋友说:『咦!怎么网络又变慢了!』好!想一想,怎么找出来变慢的原因?是你的网络环境? 服务器的 loading 过高?你的电脑里面有问题?该网络服务本身就慢,其实是互联网的线路被挖断了嘛?还是地震导致海底电缆又断了? 等等,都需要你理解网络基础后,才有办法进一步厘清问题~这也是统管理员应该要学会的基础技能喔!
最后,未来大多是虚拟机的世界,这种世界里面的网络设置与细分,就得要通过一些虚拟的网络界面来搞定。 因为你看不到实际的线路,所以如果不懂得网络拓朴的大致图标,可能会导致挺严重的后果!此外,最单纯的网络卡仿真, 也是得要通过所谓的实体网卡的桥接 (bridge) 才能仿真的出来!所以,这些基础功不能不知道的喔!
上面只是提出一些你为什么需要学习网络基础的原因而已,还没有讲重要的概念与原理喔!所以你都看不懂也没关系!我们会在后面慢慢谈。 不过,永远在你心理先有个概念,网络基础好重要啊!这样就好了!
IT 界应该还算挺看重 RHCE 这张证照的,这张证照历经多次改版,从 RHCE 8.x 以后的版本,主要是针对 ansible 这个大量部署的工具来做认证。但实际上,鸟哥认为,要进行这个证照之前,应该要对服务器与机房有点理解才好! 早期的 RHCE 7.x 版其实就是考服务器建置管理的部份~新的 RHCE 8.x 以后的版本,反而认为那是应该要知道的基础知识! 所以略过不考...
因为鸟哥在大学端授课,我们并没有庞大的信息资源来支持我们做许多研究,同时,信息教室里面的设计其实很乱, 我们经常需要一些特别的机器来进行各项服务,其中,裸机用的备份、复原系统就很重要!我们的系统主要交由学生来主导设计, 虽然成果不是十全十美,但对于学生的训练来说,鸟哥觉得是很不错的一个过程。
在这个训练过程中,我们得要考虑到的是『整个机房架构底下, Server/client 应该要如何配合才对』! 这对于网络维运人员来说,确实才是重点!加上目前你只要购买一部不要太烂的机器设备, 就能搭建出好多个虚拟机来进行机房建构的测试环境。所以,这就是这份文档的基础想法啦!
主要的目的是希望能够以鸟哥贫乏的经验底下,见过的可能的机房内各种设备的使用情境,带给大家一个通过虚拟机实验的环境, 让朋友们提早理解未来若管理大量机器设备下,应该要有的技术这样!
这份数据既然是谈论比较深入的架站规划、流程、技巧与维护等工作,那么比较基础的 Linux 操作与相关的 Shell 语法,在这里面就不可能谈论的很多。 所以,当您尝试阅读这份文档的时候,请注意,您最好已经具备有 Linux 操作系统的相关知识,以及文本接口 (BASH Shell) 的相关技巧。 还有,必需要能够了解一些 Unix-Like 的工作流程,例如注册表的产生与放置的地点、服务的启动与关闭方式、工作调度的使用方法、以及其他种种相关的事项。 也就是说,如果您从未接触过 Linux ,那么建议您由『鸟哥的 Linux 私房菜 -- 基础学习篇』开始 Linux 的探索历程, 否则,这份文档对您而言,可能会过于难以理解。
另外,这是一本自学的文档,所以拿来作为教科书讲解,可能会有些许的不便。最大的不便大概就是作业的份量太少了... 大部分的实做都已经在个章节实做流程当中跑完,所以当然不会有太多的课后习题~如果老师们想拿来作为教科书, 或许应该可以参考鸟哥另一个专门用来作为上课训练的教材较佳:
本文档的流程与训练跟一般教科书与其他书籍差异很大,因为主要的目的是让网络新手可以有个入门的方向,同时不只入门, 而是希望能够让入门者『真的理解各个流程在干麻』,以及『架设这个 server 的原理、目的与手段』通通有个理解, 因此整个维持鸟哥的一贯作风,就是...非常啰唆...如果你只想要速成的话,使用 google 查查关键字就能找到一堆方便的教学, 甚至直接给你完整答案的教学文章~但那毕竟只是让你解决燃眉之急。总之,创建良好的学习态度是在 Linux 基础篇里面就持续的谈到, 鸟哥在这里更可以建议你,甚至可以直接到官网找数据来阅读就好,都比读一些速成的书要好的多!^_^
因为种种原因,每个系统可能产生的问题都会不一样~包括连 SELinux 产生问题时,setroubleshoot 的方案都一堆了! 只要能找到问题并且解决就好了!没有一定的解决方案~只要能解决问题,大部分都是好方案!只是,当下次出现相同的问题时, 请务必使用相同的方式去解决~并且能够顺利解决该问题,那么这应该就是一个可以做成 SOP 的好方案~尽速记录在自己的工作日志内! 这都是未来自己的资产!
鸟哥上课的时候,最怕学生写一行指令,就转头问,这样指令写对不对?然后运行了,产生的消息完全不看,就又接着敲第二个指令, 还没有按下 enter ,又举手转头过来问,这个指令对不对...我很想请教一下学生,你们未来出社会,去工作的时候,会拿着电脑问你的老板说, 老板,这样打字对不对吗?
请自己测试,自己查阅出现的结果,自己了解一下为什么指令要这样下达!指令的目的是让你完成工作, 那么你想要完成的目标是什么?先自己搞清楚,那么出问题的机会就不大!如果凡事都要问专家,那么你怎么成为专家? 因为专家的经验永远是专家的!你无法学习到~只有自己碰到问题,询问可能解决的方向,然后自己朝着方向找出答案, 这过程当中的训练以及得到的经验,才永远是你的!
Linux 系统当中,很多的问题与消息都会纪录在 /var/log/ 里面,即使目前已经大量使用 systemd 的 journald 服务, 不过,大部分的 Linux distributions 还是缺省会激活 rsyslog 服务 (你也可以自己手动强迫激活)。另外,某些复杂的服务也有自己的 log 文件, 同时,这些服务也能够自己指定 log 的复杂度。当开始处理这些服务时,为了理解服务的流程,或许可以将 log 的消息标准订低一点, 也就是一堆基本信息也会纪录起来的意思,让你可以完整掌握服务的消息。等到稳定了,再将消息等级调高一点,让消息更为精简有效~ 这些动作不要小看,系统管理员经常是通过分析这些 log 来理解系统运作的状况,并且进一步提前处理可能或即将产生的错误哩!
如前所述,没有基础功,想要架设网站,鸟哥的个人建议是...还是花钱请专家帮你搞定比较合理!那,有 Linux 基础功了呢?接下来要怎么办? 这里谈谈鸟哥的理想。
鸟哥希望大家能够站在『管理机房』这样的角度来思考你的服务器学习。谈到『机房』,你可能就会想到里面有全年无休的冷气、冷的要命的环境、 好吵好吵的风扇、多的要命的电脑主机、永远持续闪烁的网络交换器灯号等等。事实上,没错!机房就是这样。先不考虑散热或者是绿色能源使用, 先讲讲,如果要你控制一栋大楼的网络环境,你该如何设计网络?你的防火墙应该放置在哪个环节上?你的大楼有几个比较机密的单位, 他们家的网络需要额外切开,你该如何管理进入该网域的权限?
在现在这个磁盘容量大到变态的环境下,任何人使用信息相关系统都已经不在乎文件容量了。可以想像得到的是,你的磁盘永远都会不够用! 所以可以弹性增加的网络磁盘就显的重要。但是,你也知道网络磁盘机的『网络状态』不可以断线!断线代表『主机的硬盘损毁』了! 这当然会让系统整个爆炸!因此,你该如何管理这些重要的网络磁盘设备的『网络容错率』?这都需要学习!
所以,整个机房的管理员不是只要设置好你的单部服务器就好,还得要随时注意整个局域网路的其他设备的相依性, 随时做好区网主机的可抽换弹性变动。这些设置与想法,没有扎实的网络基础来辅助,会很麻烦!所以,一定要从网络基础开始学习, 完全不可以略过。
既然要学习管理机房,所以你得要购买足够的设备!包括可能数十台主机硬件、好几台主干交换器、好多的 CAT6A 线路, 以及动辄数百台计算的个人电脑,这样才算是个基础的机房环境,对吧!咦!光是学习的初设费我们就得要倾家荡产了!哪有时间学习啦! 赶快去赚钱!不要往下看了 (大误...)。
这一章一开始不是一直谈到云端虚拟机嘛?我们一台实体主机 (鸟哥预计使用 Intel 10 代 i5 等级的 CPU 搭配 32G 以上的内存环境来处理) 可以生出大约 10 台以上的 server 数量,然后,还可以设计多个不同的虚拟桥接设备来划分出不同的子网络。也可以通过 VLAN 来让网络逻辑上完全独立! 另外,如果你的一部实体主机无法产生这么多的虚拟设备,那么使用两部以上的实体主机来仿真总可以吧?是可以啦! 但是我们的虚拟机可能都是绑在内部,通过这样来仿真实体机器的对外 (WAN) 与对内 (LAN) 的实际环境~那两部实体主机的虚拟机不就无法沟通了?
没关系~我们可以通过第二张网卡的桥接,也可以通过第一张网卡设计 VLAN 来让实体网卡拆开成为两个区段, 一个区段给 WAN 使用,一个区段给内部 LAN 使用。总之,就有很多种的设计方式!
由于虚拟机的玩法相当多样,也能够让我们在花费比较少 (一部实体机器) 的情况下来理解整个网络的实际连接情况, 更可以通过这样的环境来仿真机房『网络内外分离』的情境,所以,当然就得要来学一学啊!
不过读者们还是得要注意,我们的仿真环境许多的建置是要让你『理解为什么要这么做』,而不是实际上会在虚拟机上面这样搞! 所以,在设计种种的连接与服务器/用户端的交互连接时,大家还是要在脑袋理面实际想出整个连接的架构才好!
如上所述,网络基础与虚拟机的预先建置是本书最重要的一环!所以,鸟哥会先以一个实际的网络环境搭配硬件安装好一部 Linux 小云系统, 然后创建第一个虚拟机,并且做好适当的防护之后,再来继续聊聊网络基础,并且通过一部测试用的虚拟机进行各项网络基础的练习。 等到网络基础介绍完毕之后,再实际讲讲系统如何做防备,以及如何链接上 Internet,接下来就准备进行各项局域网路内常见服务器的架设。 第一部份预计会讲到这些喔:
企业总是会有很多的只提供给企业内部使用的服务,包括文件服务器、时间服务器、代理服务器、网络磁盘系统、帐号控制服务器等等。 尤其是有异质平台操作系统的情况下,若能集成帐号控制,对于整个企业内部的帐号控管,真的帮助很大!为此, Windows 有开发出 AD 系统, Linux 有老牌的 NIS 服务。但若需要跨平台,可能还是得要使用 LDAP 会比较好!
想一想,同时有 10 个人频繁的读写数据到 Server 去,你的 Server 如果只有一张网络卡,那么性能瓶颈可能就卡在那张网络卡上面。 如果有 10G 网络当然是最好!不过 10G 网络还很贵~那能不能安装多片网卡到 Server 上,再将这些网卡绑定在同一个 IP 上? 这样不就可以增加带宽了?没错~有这功能~这就是 bonding 与 teamd !所以,这个局域网路内的环境介绍,我们也会加上这个特别的功能!
总之,机房管理员请注意,你在企业内部的所有服务都是用来『服务自己的同事』,同时『请将自己的同事想成是白痴』, 因此,许多的设置需求请尽量简单~不要用政治人物的讲话方式来说明,请用小学老师的讲话方式来解释,尽量让同事可以快速、便捷且没有伤害的操作信息系统!
但是反过来说,对于跟着自己做事的信息领域的同事来说,那就不能用上面的态度来处理~毕竟你的信息方面同事是『可能会直接访问你的重要系统』的一群人! 因此,你必须要严格的把关才行!例如许多比较机密的数据要嘛就不要放行,要嘛就一定要严格的教育训练。
基本上,这个部份会谈论到的服务有:
服务器的建置里面,你一定会思考到要使用 Web server 吧?不过,其实创建 Web server 的第一个重点在于选择一个好的主机名称耶! 而选择一个好的主机名称最重要的就是建置 DNS 服务器耶!因此,在互联网服务器的章节里面,我们会从 DNS 服务器讲起, 然后再带入 Web & FTP 以及邮件服务器。
另外,在 Web server 的角度里面,我们经常需要建置 Data base 的相关工作,所以在这些章节里面也简单的介绍一些创建 SQL 数据库的帐号密码, 同时增加数据库的重建与简易的 SQL 查找方式。
由于网页前端与后端工程师都需要长时间的培养,因此这里不可能直接讲解所有的 SQL 技术以及 PHP 或 python 的语法, 只是提供一个基础的操作而已啦!如果对网页设计有兴趣,也可以参考鸟哥在学校授课所写的教材:
话说内部服务器主要在服务自己的同事,而且由于可能是服务『生产者』(实际 coding 或者是管理图形图像编辑等,会让系统 loading 加重的工作), 所以你得要时时将系统调整到最快速!因为网络走内网,要让系统加速的方式太多了!要仔细的考量考量。
那互联网服务的对象呢?当然就是贵公司的客户啰!或者是一般大众消费者。虽然说网络带宽越来越大,但如果同时间有太多的连接要求, 你的带宽还是会被用光光。所以,随时做好不断线,然后将数据压缩,或将数据削减 (例如网络图档分辨率当然不用太大,因为在浏览器上面看, 1024 分辨率跟 3096 像素的分辨率是不会差太多的!但是文件容量差很多...),都是一些优化的好方案。而且,由于是走互联网, 所以性能瓶颈大多是卡在公司对外的那条线路上,要增加带宽只有再付钱给 ISP 这样的方法而已~所以,在有限的资源下, 如何创造最大的效益,可能就是身为机房系统管理员的你的最重要任务啰!
因此,后续可能会有一个小章节会谈论如何处理服务器的健康状态监测、fail2ban 的使用等等技巧喔!
过去因为使用实体机器,所以做错了得要重来一次,重新安装一次~所有的动作都得要重新处理~连个备份都很麻烦! 这次我们使用 RockyLinux 9.x 加上通过虚拟机来学习,使用的是同一个 image 的来源,先做一个比较稳定的操作系统磁盘之后, 未来都用该系统 clone (拷贝) 出来做进一步的学习。因此,要砍掉重练只需要短短几秒钟就搞定了!站在重复学习的角度来看, 实在是事半功倍!
因此,在这整份数据的练习中,鸟哥有点舍弃了课后练习,毕竟课后练习请直接到各大网站找寻题目来做就好了。 在这个书籍里面,鸟哥朝向建议使用的几个范例来处理,一步一步完成所有的系统规划与建置~在我们小小的虚拟空间里面, 架设总总的服务器~而且这些服务器还可以开开关关,未来有需要,你可以打开单一虚拟机来看看学习时期所作的任何设置, 甚至可以直接将自己的设置拷贝到实际的工作场域去!这就是鸟哥的期望啰!