《循序渐进linux》
文章目录
- 循序渐进linux
- 第一篇
- 第二篇 服务器搭建篇
- 第四篇 性能调优篇
- 云计算
循序渐进linux
第一篇
什么事虚拟机?
拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
虚拟机会生成现有操作系统的全新虚拟镜像,它与真实系统具有完全一样的功能,进入虚拟机后,所有操作都在这个全新的独立虚拟系统里面进行,可以独立安装、运行软件,保存数据,拥有自己的独立桌面,这不会对真实的系统产生任何影响,而且能够在现有系统与虚拟机之间灵活切换。
个人总结:
比如我们买了一个电脑,打开电脑,电脑桌面上可以看到各种各样的软件,我们可以打开软件进行各种相关操作,这就是一个真实系统。
那么什么事虚拟机系统呢?虚拟机系统也是一个系统,它上面也有各种各样的软件,这些软件也都可以进行各种相关操作,这点是和真实系统一样的,区别就是虚拟机系统是安装在真实系统里面的,但是会和真实系统隔离开来,虚拟机系统上面的软件运行不会影响到真实系统的运行。你可以先简单的把虚拟机系统当做是真实系统上面的一个软件。
使用虚拟机的好处?
节省成本
如果要在一台计算机上安装Linux和Windows系统,而不用虚拟机,有两个办法。一是安装多个硬盘,每个硬盘安装一个操作系统;这个方法的缺点是费用比较昂贵。二是在一个硬盘上安装双系统,这个方法的缺点是不够安全,因为系统盘的MBR是操作系统的必争之地,Windows更是霸道,每次重新安装系统都要重写系统的MBR,这样,几个操作系统可能会同时崩溃。而使用虚拟机软件既省钱又安全,因此对于新手来说,利用虚拟机学习Linux简直再好不过了。
安全便捷
在虚拟机上安装Linux系统,不用担心会格式化掉自己的硬盘,甚至可以随意地对虚拟系统进行任何设置和更改操作,可以格式化虚拟系统硬盘,还可以重新分区虚拟系统硬盘,等等,因为虚拟机是在真实系统上运行的软件,对虚拟机系统的任何操作都是对软件的操作。
简单高效
利用虚拟机模拟出来的Linux系统和真实的Linux系统是一摸一样的。现在各个公司专门的Linux服务器是不会让新手随意操作的,而供测试的Linux服务器一般又很紧缺,如果在自己的电脑上安装虚拟Linux系统,就可以随意地学习测试,而不受任何环境影响。
虚拟机的运行环境和硬件需求
1. 运行环境
流行的虚拟机软件有VMware、VirtualBox,它们都有Windows和Linux两个版本,也就是说,它们可以安装在Windows和Linux两个平台下:在Windows平台下可以虚拟出Windows、Linux、UNIX等多个操作系统,同理,在Linux平台上也可以虚拟出Windows、Linux、UNIX等多个计算机。
注意
运行虚拟机软件的操作系统叫Host OS,在虚拟机里运行的操作系统叫Guest OS。
2. 硬件需求
虚拟机软件是将两台以上计算机的任务集成到一台计算机上来的,因此对硬件的要求比较高,主要涉及的是内存、硬盘和CPU。内存要足够大,因为每个虚拟机都会占用一定的内存资源,内存的总大小等于各个虚拟系统的总和。可喜的是,现在内存已经很便宜,因此就不是问题了。同样,硬盘空间也是每个虚拟机都要占用的,CPU现在都发展到了多核阶段,硬盘也不是问题。
第二篇 服务器搭建篇
linux系统想要运行java程序和windows系统一样,也需要配置环境,先安装相关的东西。
比如我们想要在linux服务器上搭建一个java程序,那么就必须要在linux服务器上安装jdk,安装mysql。等各种运行程序需要的程序。
不过这些安装程序一般都不是java开发人员安装,一般都是linux运维人员操作的,这是他们的工作之一。
但是我们也需要了解他们安装的过程,这样我们登录liunx系统的时候,才可以看到他们安装的地方,以及版本号是多少,比如是jdk8还是jdk11,比如是mysql5还是mysql8。
DNS服务器的搭建
经常上网的朋友可能经常访问新浪、搜狐等大型网站,只需要在浏览器输入它们的网址即可访问。这看似非常简单,但是从技术层面来讲,它包含了一个复杂的过程:在访问网页的时候,首先在浏览器地址栏中输入网站域名,接着浏览器会根据本机DNS服务器的设置将输入的网站域名转换为对应的IP地址,然后才从这个IP对应的服务器上请求数据,最后将请求得到的数据通过浏览器显示出来。这个过程最主要的一个环节就是从域名到IP地址的转换,而这个工作就是靠DNS服务器实现的。
DNS服务器概述
DNS是Domain Name System的缩写,即域名系统,DNS服务主要的功能是将域名转换为相应的IP地址,提供DNS服务的系统就是DNS服务器。
DNS服务器可以分为3种:主域名服务器(Master DNS)、辅助域名服务器(Slave DNS)和缓存服务器(Cache-only server)。
主域名服务器本身提供DNS服务,并且本身含有区域数据文件。
辅助域名服务器和主域名服务器一起提供DNS服务,当主域名服务器上的配置信息修改的时候,会自动更新到辅助域名服务器实现同步。
缓存服务器没有自己的区域数据文件,只是帮助客户端向外部DNS请求查询,然后将查到的结果保存到它的缓存中。
在Linux系统下DNS服务的功能是通过bind软件实现的,几乎每个Linux发行版都自带了这个DNS服务软件。下面将具体讲述DNS服务器的安装、配置与使用。
配置DNS服务
其实也就是运维那边先在linux系统上面安装bind软件,然后再通过bind软件进行DNS域名解析服务器的相关配置,去配置域名和ip的映射关系。
一般linux上的域名映射也会在host文件当中。
网络安全概述
网络安全在互联网应用中是一个非常重要的主题,而服务器是网络安全中最关键的环节。
Linux系统的安全,其实很大部分就是Linux作为网络服务器的安全,Linux作为服务器放入互联网中,将面临来自网络的各种威胁与攻击,网络安全和系统本身的安全,对于服务器的稳定运行至关重要。
由于Linux是一个开源的操作系统,这带来的好处是可以免费获取和使用,同时还可以根据需要定制自己的Linux系统。但是,正是由于开源导致了系统的安全性问题,Linux经常会受到一些来自系统底层的攻击。因此,作为系统管理人员,应该有很强的系统安全防范意识,要清楚地了解Linux系统可能遭受攻击的类型和对应的防范策略,一旦发现Linux系统中有安全漏洞,就应该立刻采取措施修补漏洞,保护系统安全。
下面主要讲述Linux作为服务器可能遭受攻击的类型和一些防范攻击策略。
常见攻击类型
1. 密码暴力破解攻击
“密码暴力破解”攻击的目的是破解用户的密码,从而进入服务器获取系统资源或者进行系统破坏。例如,黑客可以利用一台高性能计算机,配合一个数据字典库,通过排列组合算法尝试各种密码,最终找到能够进入系统的密码,登录系统获取资源或者进行信息篡改。
现在网络上有很多类似这种暴力破解密码的软件。如果系统密码设置过于简单,那么黑客可以在几分钟内获取系统密码。密码是登录系统的第一防线,如果密码被破解,后果可想而知。
2. 拒绝服务攻击
拒绝服务攻击基本的原理就是利用合理的服务请求来占用过多的服务资源,从而使网络阻塞或者服务器死机,导致Linux服务器无法为正常用户提供服务。常见的有拒绝服务攻击(DoS)与分布式拒绝服务攻击(DDoS)。黑客一般利用伪装的源地址或者控制其他多台计算机向目标服务器发出大量连续的连接请求,由于服务器无法在短时间内接受这么多请求,造成系统资源耗尽,服务挂起,严重时造成服务器瘫痪。
3. 应用程序漏洞攻击
这种攻击是由服务器或者应用软件漏洞引起的,黑客首先利用网络扫描工具扫描目标主机的漏洞,然后根据扫描出的漏洞,有针对性地实施攻击。
常见的有SQL注入漏洞攻击、网页权限漏洞“挂马”攻击等。
防范攻击策略
要防范各种危险与攻击,不是靠一个两个设备就能完成的,需要一系列网络安全设备和软件安全规则共同完成。网络传输安全、操作系统安全、应用软件安全构成了整个网络应用安全。
上图显示了一个完整的网络安全流程图,描述了客户端从服务器获取资源的过程,重点描述了传输中的安全部分,客户端请求数据首先经历“网络传输安全”部分进入操作系统,接着进入“操作系统安全”部分,操作系统安全验证完毕,进入服务器内的“应用软件安全”部分,最后通过应用软件从服务器获取资源。
下面从网络传输安全、操作系统安全、应用软件安全三个方面介绍安全防范措施。
1. 网络传输安全
网络传输安全一般由网络安全设备构成,常见的网络安全设备有硬件防火墙、网络入侵检测(IDS)、路由器、交换机等。
防火墙可以对进出网络的主机设置各种规则,保证互联网合法主机安全进入服务器,局域网主机根据防火墙指定的规则访问互联网。
有些攻击行为可以在防火墙允许的规则内进行内嵌攻击。对于此种攻击,防火墙显得无能为力,此时可以使用IDS(Intrusion DetectionSystem,入侵检测系统)设备。IDS依照一定的安全策略,对网络、系统的运行状况进行监控,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。
举个例子,如果把防火墙比喻为一座大楼的门,那么IDS就是大楼里面的监视器,当有些小偷乔装打扮成大楼内部人员并越过大门进入大楼内时,只有监视器才能发现小偷的破坏行为并报警。
路由器可以设置很多路由规则,对内部网络进行详细的规划,控制网络路由走向。同时,配合交换机的使用,实现内部局域网络有条件、有规则地互通。
2. 操作系统安全
操作系统安全是在服务器的系统本身进行的一系列安全设置和优化。例如,在Linux操作系统下,经常进行的系统安全设置有:系统内核定期升级并保持最新,系统自带软件保持最新,配置系统软件防火墙iptables防范策略,配置杀毒软件防范病毒,关闭无关的服务和端口,密码安全管理等。
现在有很多攻击都可以绕过防火墙或者在防火墙允许的范围内伪装进入系统内部,企图进行破坏。例如,对于常见的一些病毒程序,防火墙是无法检测到的。此时,如果操作系统本身配置了杀毒软件程序,那么系统就能检测到病毒攻击,进而化解危机,将危险消灭在萌芽状态。由此可以看到,即是黑客者攻破了第一道网络传输安全关,也难逃操作系统安全关的检验。
3. 应用软件安全
应用软件安全是对在服务器上运行的应用软件程序本身进行的安全策略配置和优化。例如,常见的WWW服务器中对Apache进行安全配置,数据库服务器中通过数据库本身对连接数据库的客户端进行限制,FTP服务器中通过修改FTP本身的配置文件进行资源授权访问等,这些都是应用软件安全防范策略的提现。
上面介绍的SQL注入攻击,以及跨站脚本攻击都属于应用软件安全漏洞造成的攻击入侵。可见,应用软件安全防范是网络安全的核心,一个不安全的程序即使经过再多的安全设备、安全策略的过滤,也都无济于事。我们做各种安全防范时,安全设备都要在应用软件安全的基础上进行。这就对程序员提出了安全要求。
上面从网络传输安全、操作系统安全、应用软件安全三个方面详细介绍了每个方面需要做的工作。从互联网访问服务器资源,都必须要经历这三个安全关卡,如果能够在每个方面都制订出很详细、很完备的安全策略,黑客的各种攻击与破坏将无法施展。
第四篇 性能调优篇
性能问题概述
Linux操作系统是一个开源产品,也是一个开源软件的实践和应用平台。在这个平台下有无数的开源软件支撑,常见的有Apache、Tomcat、MySQL、PHP等。开源软件的最大理念是自由、开放,那么Linux作为一个开源平台,最终要实现的是通过这些开源软件的支持,以最低廉的成本,达到应用最优的性能。因此,谈及性能问题,主要实现的是Linux操作系统和应用程序的最佳结合。
系统的性能是指操作系统完成任务的有效性、稳定性和响应速度。Linux系统管理员可能经常会遇到系统不稳定、响应速度慢等问题。例如,在Linux上搭建了一个Web服务,经常出现网页无法打开、打开速度慢等现象,而遇到这些问题时,就有人会抱怨Linux系统不好,其实这些都是表面现象。操作系统完成一个任务的快慢,与系统自身设置、网络拓朴结构、路由设备、路由策略、接入设备、物理线路等多个方面都密切相关,任何一个环节出现问题,都会影响整个系统的性能。因此当Linux应用出现问题时,应当从应用程序、操作系统、服务器硬件、网络环境等方面综合排查,定位问题出现在哪个部分,然后集中解决。
在应用程序、操作系统、服务器硬件、网络环境等方面,影响性能最大的是应用程序和操作系统两个方面,因为这两个方面出现的问题不易察觉,隐蔽性很强。而硬件、网络方面只要出现问题,一般都能马上定位。
== 分析系统性能涉及的人员==
Linux运维人员
在优化性能的过程中,Linux运维人员承担着很重要的任务。首先,Linux运维人员要了解和掌握操作系统的当前运行状态,例如,系统负载、内存状态、进程状态、CPU负荷等信息,这些信息是检测和判断系统性能的基础与依据。其次,Linux运维人员还要掌握系统的硬件信息,例如,磁盘I/O、CPU型号、内存大小、网卡带宽等参数信息,然后根据这些信息综合评估系统资源的使用情况。最后,作为一名Linux运维人员,还要掌握应用程序对系统资源的使用情况,更深入一点就是要了解应用程序的运行效率,例如,是否有程序bug、内存溢出等问题。通过对系统资源的监控,就能发现应用程序是否存在异常。如果应用程序确实存在问题,需要把问题立刻反映给程序开发人员,进而改进或升级程序。
性能优化本身就是一个复杂和繁琐的过程,Linux运维人员只有了解了系统硬件信息、网络信息、操作系统配置信息和应用程序信息才能有针对性地优化服务器性能,这就要求Linux运维人员有充足的理论知识、丰富的实战经验以及缜密分析问题的头脑。
系统架构设计人员
系统性能优化涉及的第二类人员就是应用程序的架构设计人员。如果Linux运维人员在经过综合判断后,发现影响性能的是应用程序的执行效率,那么程序架构设计人员就要及时介入,深入了解程序运行状态。首先,系统架构设计人员要跟踪了解程序的执行效率,如果执行效率存在问题,要找出哪里出现了问题。其次,如果真的是架构设计出现了问题,那么就要马上优化或改进系统架构,设计更好的应用系统架构。
软件开发人员
系统性能优化的最后一个环节涉及的是程序开发人员。在Linux运维人员或架构设计人员找到程序或结构瓶颈后,程序开发人员要马上介入进行相应的程序修改。修改程序要以程序的执行效率为基准,改进程序的逻辑,有针对性地进行代码优化。例如,Linux运维人员在系统中发现有条SQL语句耗费大量的系统资源,抓取这条执行的SQL语句,发现此SQL语句的执行效率太差,是开发人员编写的代码执行效率低造成的。这就需要把这个信息反馈给开发人员,开发人员在了解到这个问题后,可以有针对性地进行SQL优化,进而实现程序代码的优化。
从上面这个过程可以看出,系统性能优化一般遵循的流程。首先,Linux运维人员查看系统的整体状况,然后主要从系统硬件、网络设备、操作系统配置、应用程序架构和程序代码五个方面进行综合判断。如果发现系统硬件、网络设备或者操作系统配置问题,Linux运维人员可以根据情况自主解决。如果发现程序结构问题,就需要提交给程序架构设计人员。如果发现程序代码执行问题,就交给开发人员进行代码优化。这样就完成了一个系统性能优化的过程。
云计算
当一件产品必不可少,而价格又特别高时,人们往往会寻找它的替代品。一旦廉价替代品的性能与原产品的性能相当,人们就会放弃对原产品的使用。云计算最初就是为了应对互联网行业高速发展所带来的网络、服务器、存储、应用软件及服务的昂贵价格而出现的“替代品”。随着云计算技术的逐步更新,人们只需投入少量的管理工作,并且不必与服务供应商打太多交道,就能迅速获得云计算资源。云计算已经逐渐成为互联网公司的第一选择。
什么是云计算
云计算是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来虚拟化资源。“云”通常为互联网的一种比喻说法,而“计算”一词有两层含义,一是进行计算,二是对计算机资源的简称。因此我们可以把云计算理解为将计算机资源通过网络进行虚拟化,或者用虚拟化资源进行计算。
当然,现在对于云计算的定义没有一个标准的说法,一千个人心中有一千种云计算的概念,现阶段比较被人们认可的说法是美国国家标准与技术研究院给出的定义:云计算是一种按使用量付费的模式,它随时随地提供便捷的、可通过网络按需访问的可配置计算资源共享池(资源包括网络、服务器、存储、应用软件、服务),这些资源能够快速调配,极度缩减管理资源的工作量和与服务供应商的交互。简单地说,云计算通过网络连接的方式对计算资源进行统一的管理和调度,构建一个计算资源池向用户按需提供服务。
云计算的服务特征
云计算服务的主要特征如下。
(1)可以随时随地使用任何网络设备进行访问。
(2)可以多人共享资源池。
(3)可以快速重新部署服务,十分灵活。
(4)服务自助化。
(5)服务可监测。
(6)可以减小用户的终端压力。
(7)降低了用户的使用门槛。
(8)基于虚拟化技术快速部署资源与提供服务。
云计算的发展现状
随着云计算的不断发展,云计算服务逐步占领IT大舞台,使传统的IT行业日益丧失竞争力。
为了求存,大量的互联网企业开始转型,使用云计算服务。而新生的互联网公司为了节约成本与增强竞争力,也放弃了传统的互联网模式,采用云计算服务模式。
随着越来越多的企业采用云计算服务,过去的一些可靠的云计算服务已经难以满足企业的要求,加之容器技术的爆发,云计算又将迎来新的挑战。
云计算是新兴的IT产业,其发展时间较短,但发展势头迅猛,云计算专业人才供不应求已成为常态。因此,现阶段各大高校先后开设云计算相关专业,为这一产业输送新生力量。
云计算的应用案例
云计算的应用案例多如牛毛,这里举一个最简单也是大家最熟悉的例子:百度云盘。
百度公司是云计算技术早期的受益者之一,百度云盘通过云计算服务为百度带来每年上亿元的收入,并且大大提高了百度用户的黏着度,也为其后的百度云的发展打下了坚实的基础。
百度云盘的思路很简单,就是将我们常见的U盘虚拟化,利用网络手段使用户可以随时随地获取自己所需要的资源。这个思路现在看起来很普通,但在当年是前所未有的。
当时的人们还在为U盘丢失或者U盘没有随身携带而苦恼,因缘际会,云计算思路被提出,百度开始考虑利用云计算的思路将U盘虚拟化,然而,信息泄露、信息丢失、传输速率低等难题一直困扰着百度人。当然,最后事实证明,云计算的时代到来了,百度云盘培养了大批用户。
可能大家会感到惊奇,云计算原来就在我们身边。其实就是这样,云计算已经融入了我们的生活,无所不在。