今天学习的概念是Linux服务器
一、服务器
什么是服务器呢?从字面理解,服务器就是提供各种服务的机器。服务器提供服务主要依赖于服务器软件,比如提供数据库服务的MySQL,提供缓存服务的redis,提供HTTP服务的Tomcat、Jetty、Apache、Nginx和IIS等等。
顺便说下HTTP服务器、WEB服务器和应用服务器的作用和区别:HTTP服务器主要提供HTTP服务、WEB服务器主要支持的协议就是HTTP协议,所以通常情况下HTTP服务器等同于WEB服务器、而应用服务器主要负责运行服务器端代码,提供业务逻辑(包括事务处理和数据库连接等等)。Tomcat、Jetty、Apache、Nginx、IIS和WebLogic和WebSphere等等都可以提供HTTP服务,所以它们都属于HTTP服务器。其中Apache和Nginx是纯粹的HTTP服务器,它们处理静态请求的效率很高,但不能处理动态请求;Tomcat和Jetty主要通过运行Java代码处理动态请求,所以也可以将它们视作为轻量级的应用服务器(顺便说一下,PHP和Java类似,也是通过跑在应用服务器处理动态请求,而Python和node.js的程序一启动就是个应用服务器);WebLogic和WebSphere由于包含了EJB,相比Tomcat和Jetty属于比较重的应用服务器,现在用得比较少了;而IIS原本也是纯粹的HTTP服务器,由于引入了ASP引擎,具备了解释执行VBScript和JScript代码、处理动态请求的能力,可以将其视作带有一点应用服务器功能的HTTP服务器。
一般会将应用服务器与纯粹的HTTP服务器结合使用,纯粹的HTTP服务器负责处理静态请求(获取HTML、CSS、JS和图片等静态资源),当处理动态请求时,先代理给与之配合的应用服务器处理,然后将处理完的响应返回给前端。目前最常用的纯HTTP服务器就是Apache和Nginx,Apache的代理方式是正向代理,Nginx的代理方式是反向代理。正向代理和反向代理的关键知识点:
- 正向代理所代理的对象是客户端,反向代理所代理的对象是服务器
- 正向代理服务器会向服务器发起一个新请求(隐藏真实的客户端),反向代理服务器会根据负载算法将请求转发给集群中的某个服务器
- 正向代理服务器会将服务器的响应直接返回给对应的客户端,反向代理服务器会返回一个新响应(隐藏真实的服务器)
- 反向代理通常会配合负载均衡使用,且随着并发量提升,负载均衡用的越来越多,而使用Nginx作为负载均衡服务器比Apache性能更好,所以现在主要使用Nginx
现在前后台系统大多使用分布式系统架构,这就意味着提供不同服务的子系统会被部署到不同的服务器上,比如HTTP服务器(微服务的应用程序也是分布式的,会将各个服务分开部署)、数据库服务器、缓存服务器等等。测试环境与生产环境应该完全相同,并且在生产环境中,只有部署路由网关服务(gateway)的HTTP服务器具有外网IP,负责对用户提供HTTP服务。
二、Linux的概念与文件目录结构
Linux是一个OS内核,绝大多数服务器使用的都是基于Linux的操作系统。目前Linux的发行版本主要包括Ubuntu、CentOS和Redhat等等,它们都使用了Linux内核。Linux系统的文件目录结构如图
三、远程连接
可以通过SSH、FTP、HTTP等协议与服务器建立远程连接,由于Linux系统自带SSH服务器(监听22端口),所以无需安装FTP服务器,通过SSH客户端即进行远程连接。目前比较常用的SSH/FTP客户端为SecureCRT和SecureFX,SecureCRT支持SSH2等协议,SecureFX支持SFTP、FTP等协议(SFTP协议也是基于SSH协议的)。
四、Linux常用指令
操作文件或目录常用命令:
- pwd 显示当前工作目录(print working directory)
- cd 切换目录(change directory)
- ls 显示文件或目录列表(list)
- mkdir 创建目录(make directory)
- touch 创建文件
- cp 复制文件或目录(copy)
- mv 移动文件或目录、文件或目录改名(move)
- rm 删除文件(remove)
- cat 显示文本文件内容(catenate)
常用命令:
- find 在文件系统中查找指定文件
- grep 在指定的文本文档中查找指定文件
- kill 杀死一个进程
- netstat-nltp 显示网络状态信息
- ifconfig查看网络配置
- ping测试网络连通性
打包与解包、压缩与解压缩:
- tar 打包与解包
- gzip 压缩与解压缩(后缀为gz)
- bzip2 压缩与解压缩(后缀为bz2)
软件安装:
- rpm
- yum