Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell
shell他就是一个脚本命令,当运行该脚本命令时,可以与Linux系统底层进行交互
1.基本语法.sh
#!/bin/bash
echo "hello world !"
必须以#!/bin/bash 开头
echo:输出语句
执行: . /脚本文件名.sh
注意:权限不足
2.shell变量
shell的变量和java的变量区别:无需添加数据类型
3.shell传递参数
当执行shell脚本时,可以传递参数,在shell脚本中使用$n 接受传递的参数 n:表示数字1-∞
4.shell数组
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。
与大部分编程语言类似,数组元素的下标由 0 开始。
语法:
array_name=(value1 value2 ... valuen)
注意: Shell 数组用括号来表示,元素用"空格"符号分割开
注意: 如果直接引用数组名而没有使用下标默认下标0
5.关联数组
理解为 java中map
关联数组使用 declare(Linux declare 命令 | 菜鸟教程 命令来声明,语法格式如下:
declare -A array_name=([K]=v [k]=v [k]=v)
${arr_name[k]}
使用*表示所有key对应的值
6.shell基本运算符
- 算数运算符
- 关系运算符
- 布尔运算符
- 字符串运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
7.控制语句
7.1while语句
while循环用于不断执行一系列命令,也用于从输入文件中读取数据
while condotion
do
command
done
8.Nginx
8.1什么是Nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强, 高达 50,000 个并发连接数的响应 ,事实上nginx的并发能力在同类型的网页服务器中表现较好。
反向代理服务器
8.2为什么使用Nginx反向代理服务器
8.3有哪些企业在使用Nginx代理服务器
淘宝 京东 新浪 微博 腾讯
8.4如何安装Nginx代理服务器
nginx它使用c语言编写,通过源码的形式安装nginx.
8.4.1先安装nginx需要的依赖环境
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
8.4.2下载nginx
8.4.3把下载的nginx放入linux系统
8.4.4创建一个目录作为nginx的安装目录
mkdir /usr/soft/nginx
8.4.5解压nginx源码文件
tar -zxvf nginx-1.18.0.tar.gz
8.4.6进入解压后的目录
指定安装nginx目录
8.4.7编译
make
8.4.8安装
make install
8.4.9查看安装nginx的目录中的内容
8.4.10启动nginx
sbin/nginx 启动nginxsbin/nginx -s stop 关闭nginx sbin/nginx -s reload 重新加载nginx配置
8.4.11 window浏览器就可以访问代理服务器
9.nginx的配置文件的介绍
自定义了server
创建一个目录main并在该目录下创建一个main.html
注意:修改了nginx配置文件,必须重新加载配置文件
./nginx -s reload
一个nginx对应多个server
10.nginx的核心功能
10.1反向代理
10.1.1正向代理
举例:
1.拿借钱打个比方,A想向C借钱,但是C不认识A所以不借给他,然后A就通过B向C借钱,B借到钱之后再转交给A,在这个过程中B就扮演了一个正向代理的角色,这个过程中,真正借钱的人是谁,C是不知道的~
我们常说的代理也就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求.
2.比如我想访问www.google.com,要想翻越这堵墙,你可以在国外用Shadowsocks来搭建一台代理服务器,代理帮我们请求www.google.com,代理再把请求响应结果再返回给我。思考: 谷歌是否知道真正的访问者。
正向代理: 代理的客户端,对于服务器来说不知道真实的客户
10.1.2反向代理
举例:
还用借钱的例子,A想向C借钱,然后C借给他了,但是实际上这个钱可能C向B借的~至于钱到底是谁的,A是不知道的~
这里的C扮演着一个反向代理的角色,客户不知道真正提供服务的人是谁。反向代理隐藏了真实的服务端,对于客户来说不知道访问的是哪台服务器。
可以使用nginx反向代理。
1.准备:
服务器---tomcat项目
springboot项目放入linux副武器系统
java-jar hmq-demo01.jar
运行springboot项目
2.配置nginx来代理上面springboot真实项目服务
重新加载nginx配置文件
3.浏览器访问nginx
10.2负载均衡
配合反向代理+负载均衡
真实服务器准备2台
nginx重新加载配置文件
默认使用轮询策略
还有那些负载均衡策略:
1.权重策略:合适服务器的配置不同,被访问的频率不同
2.ip_hash:根据客户端的ip分配相应真实服务器
3.使用第三方插件:付费较多
10.3动静分离
把静态资源【css,js,img】交于nginx来处理,而动态资源接口,jsp还是有真实服务器处理
好处:当修改静态资源时,无需对每个真实服务器的静态资源做修改,只需要修改nginx一处的静态资源