我是在2003年左右,读大学的时候接触linux的,开始仅仅是为了玩,就是好玩,因为Linux和windows不一样,感觉很神秘,也很酷,期间断断续续。直到2006年开始讲授Linux服务器搭建课程后,才开始认真研究这个系统,到现在已有十多年了,这期间教了很多的学生,培训了很多企业,也把很多人成功带入这个“坑里”(开个玩笑),各类发行版的系统,Redhat、红旗、Ubuntu、Debian、Suse、centos,我都捣鼓过。
十多年的教学经验,接触的学员没有一千也有八百了,我发现很多学生学习Linux的过程不是循序渐进的,而是一个跳跃式的过程。前期异常的痛苦,学习成果收效甚微,中期渐渐悟出其中的规律,开始厚积薄发,成就感逐渐增强,后期自学成才,各种服务器驾轻就熟,甩出一句话:Linux不过如此。有人会问这个规律到底是什么?是否有捷径?我可以告诉你,捷径是没有的,但规律是存在的!Linux初学者要牢记学习Linux服务器的三个关键点和两个障碍,算是我多年教学的一点感悟吧!今天和大家一起分享下,我不喜欢泛泛而谈,这对大家没有帮助,我以CentOS7这个Linux发行版为平台,以web服务器、ftp服务器和DNS服务器三个为例讲解,三个服务器毫不相关,但我们能发现其中共同的学习规律。
三个关键点
关键点一:任何服务器都有一个安装程序包,你要学会安装
Linux系统很好,不像Windows,大多数的安装软件都集成在安装光盘中,而且大部分Linux的发行版都遵循了开源的精神,免费提供大家使用,所以你不用担心试用版什么的问题。
例如,我在讲解dns服务器的时候,我会告诉学生,dns服务器的软件叫做bind,讲解web服务器的时候,会说Apache软件,讲解ftp时,会说vsftp等等。在学习过程中,第一步就是安装,早期的安装有编译安装和rpm安装。作为新手,这两种安装我都不推荐,编译安装你要有良好的英文功底,能懂程序更好,因为万一安装出错了,很难找到解决方案。rpm安装同样不好,软件关联性严重,经常会出现安装这个软件,系统提示缺少什么插件,要先安装插件,一来二去,我讲的不晕,学生听得都晕了,而且缺少插件都是英文提示,很多学生就像看天书一样。
这里我推荐yum安装,自动帮你解决软件关联性问题,我上课的时候通常就是先配置YUM本地源,再安装软件,注意,本地光盘集成的服务器软件,尽量用本地源,第一安装迅速,第二软件来源放心,选择互联网YUM源,还要担心YUM源的可靠性和系统兼容性问题,在初学阶段,把这些问题先通通排除掉,用本地YUM源吧!
关键点二:任何服务器都有配置文件,你要学会配置文件的修改(很关键!)
这是所有学生在学习时最大的障碍,每种配置文件都有固定的配置文件,所有的服务器配置都是基于配置文件的修改来完成的,这也是Linux服务器最大的特点,因为它开源。有的服务器仅有一个配置文件,有的服务器有多个配置文件,所以搞清楚配置文件,学会每种服务器的配置文件格式,是学习的关键。
例如,我讲解dns时,会讲四个配置文件,主配置文件/etc/named.conf、/etc/named.rfc1906.conf,正向文件和反向文件的位置/var/named,然后再讲解他们的关系和配置格式;讲解web服务器时会讲解主配置文件/etc/httpd/httpd.conf以及/etc/httpd/conf.d目录;讲解ftp服务器时会讲解主配置文件/etc/vsftpd/vsftpd.conf。知道了这些配置文件,我们就可以对其进行编辑设置了,再进行配置文件格式的学习(因为每个服务器的配置文件格式都不一样,这里限于篇幅,就不写了,如果大家有需要,我会再出专题,讲解每种服务器的配置)。
关键点三:任何服务器都有守护进程和服务名,你要知道服务名
记住,配置文件修改后,是不会立刻生效的,我们要对对应的服务进行重启,才能使配置文件生效。dns服务器的服务名叫named,web服务器的服务名叫httpd,ftp服务器的服务名叫vsftpd。named服务为例,重启指令,老版本的系统用service named restart,新版本的系统用systemctl restart named。服务有没有重启成功,可以通过service named status或systemctl status named查询到,如果失败了,那十有八九是配置文件写错了(这个问题对初学者很常见,我很少发现初学者一次性把服务配置成功的,少之又少,往往都是重新改配置文件,再重启,失败了再修改,最后直到成功开启服务)。
两个障碍物
障碍一:防火墙
Linux的发行版都自带防火墙,安全嘛,防火墙首当其冲,它会屏蔽很多端口,让其它主机无法访问,直接影响我们实验效果。但对我们初学者来说,你还不会调节防火墙规则,因为防火墙规则的调整,需要你有很深计算机网络理论知识,至少TCP/IP协议栈四层模型要知道,要了解源ip、目的ip、源端口、目的端口等等。那么怎么办?先舍弃防火墙吧,我在教学阶段直接就是禁用防火墙,老版本的用chkconfig --level 35 iptables off,新版本的systemctl disable firewalld,重启后,再开始配置其它服务器。等你真正进入到第三阶段了,再重新学习防火墙也不迟,我建议把防火墙放到最后学习。
障碍二:SELINUX
Linux自带了SELINUX,这个称为Security-Enhanced Linux,是Linux的新安全子系统,我建议也是最后学吧!前期会影响我们配置其它服务器的效果,比如以前我遇到过一个学生,学习vsftp服务的虚拟用户配置,客户端怎么也登不上,检查配置文件也没有出错,卡了半天,那个难受别提多郁闷了,最后发现selinux导致有写入权限的用户不能登录,关掉后立马正常了!SELINUX本身规则比较复杂,建议在不了解规则的情况下,先禁用掉,也是在第三阶段再进行学习。关闭方法两种,setenforce 0(这个是临时方法,重启后selinux还会生效),修改/etc/selinux/config文件,然后重启系统,这个方法可以永久关闭selinux。
这里大家不要误解,防火墙和SELINUX不是不学,它们是维护Linux服务器安全的重要工具,而是放到最后再学习!
Linux的学习需要不断的上机、操作、积累经验,在学习前期,基础命令一定要过关,各种指令操作要熟悉。真正的Linux是全命令行操作,方便快捷,初学者可能不习惯,上机操作第一反应就是去摸鼠标,鼠标在Linux环境下真的用处不大,以前我见过一个学生,为了学Linux,直接把家里台式电脑装成Linux系统,然后鼠标直接拔了,苦学了一个月,强迫自己不用windows、不用鼠标,别说这招还真管用,技能水平直线上升。
文章写到这里,也告一段落了,前期大家要选定好一个Linux发行版,个人建议如果专门学服务器的话,可以选择CentOS和Redhat的企业版,这两个版本比较适合做服务器,网上的教程也很多,研究的人也多,尽量不要选择桌面版的Linux。希望大家在追求技术的道路上越走越远,一技在手,工作无忧 O(∩_∩)O。