1.反向代理
1.1业务需求
需求说明: 当用户完成图片上传之后 会根据网络地址访问图片,但是查找的图片一定存在于磁盘中.
URL地址: http://image.jt.com/2021/12-16/f9981c76-e6a7-49fa-88d9-3be0851dbf50.jpg
磁盘地址: R:/project3/images/2021/12/16/f9981c76-e6a7-49fa-88d9-3be0851dbf50.jpg
技术难点:
1.当用户访问URL网络地址时,应该按照磁盘地址进行查找
如何将网络地址转化为磁盘地址?
1.2反向代理介绍
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
1.3反向代理特点
1.反向代理服务器介于用户和目标服务器之间
2.用户从反向代理服务器获取资源, 用户以为反向代理服务器就是目标服务器.
3.用户不清楚真实的服务器到底是谁, 保护了真实服务器的信息. 也称之为 “服务器端代理”
2.正向代理
2.1正向代理介绍
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
2.2正向代理特点
1.正向代理服务器介于客户端和原始服务器之间.
2.用户访问正向代理服务器,并且指定目标服务器地址.
3.服务器端不清楚到底是谁访问的,以为是正向代理服务器访问的. 保护了用户信息. 也称之为客户端代理.
3.nginx
3.1 Nginx介绍
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
3.2Nginx特点
1.nginx时一款开源免费轻量级的反向代理服务器/web服务器。
2.nginx并发能力强 理论值:五万次/秒 实际值:三万次/秒 tomcat:150个-220个->1000个/秒
3.nginx占用内存少 不超过2MB tomcat:内存占用200MB
3.3Nginx下载
URL:http://nginx.org/en/download.html
3.4Nginx安装和使用
说明:
1.nginx启动会占用80端口
2.nginx启动路径不能有中文/空格/特殊字符,底层开发为
c语言。
访问测试:localhost:80
3.5关于nginx80端口占用问题说明
3.5.1检查端口号占用
如果80端口 被PID=4占用,则需要升级驱动配置,如果输入localhost:80是IIS界面,修改注册表无效,需要执行一下操作:
1.尝试停用IIS:右键“我的电脑”->“管理”->“服务”->“服务和应用程序”->“IIS” 在IIS面板中停用IIS。
2.输入以下命令,关掉http服务
C:\WINDOWS\system32>net stop http
C:\WINDOWS\system32>netstat -ano | findstr 0.0.0.0:80
C:\WINDOWS\system32>sc config http start=disabled
3.6Nginx命令
启动nginx:start nginx
重启nginx:nginx -s reload
关闭nginx:nginx -s stop
3.7Nginx反向代理机制
一个**http块可以包含多个server**块
一个server块可以包含多个location块
http{
#每个反向代理服务,就是一个server
server{
#nginx默认监听端口号 是80
listen 80;
#nginx要拦截的域名
server_name localhost;
#拦截所有请求
location / {
#root代表代理的是一个目录
root html;
#配置默认访问的首页
index index.html index.htm;
}
}
}
3.8Nginx实现图片
3.8.1这里设置的端口号为80,配置nginx.conf文件
3.8.2配置hosts文件
不能为只读
检查权限
修改hosts文件
4.项目发布
4.1修改main.js
4.2修改addItem.vue
4.3将前端项目编译
编译完成之后准备发布
4.4前端项目发布
4.4.1业务说明
将dist文件夹复制到nginx根目录下
4.4.2发布
需求:用户通过http://web.jt.com 访问 dist/insex.html
配置代理
重启nginx,输入web.jt.com
4.5后端项目发布
命令:java -jar 8091.jar
4.6Nginx完成后端发布
重启nginx,输入manage.jt.com/getPort测试一下
5.集群部署
5.1集群部署流程图
5.2启动多个进程
说明: 分别准备3台tomcat服务器 端口号分别为8091/8092/8093
勾选其中的选项 ,可以平行运行多个进程
5.3 部署集群
5.4Nginx负载均衡策略
5.4.1轮询策略
说明: 按照配置文件的顺序 依次访问
5.4.2权重策略
说明: 可以根据服务器性能,灵活的设置配比
5.4.3IP_HASH策略
说明: 如果需要让用户与服务器进行绑定. 则使用IPHASH
5.4.4nginx常见属性
1.down属性 如果down属性标识了服务器,则nginx不会再次访问该服务器
2.backup属性 设置备用机, 正常情况下,备用机不会被访问,但是当主机遇忙时/或者宕机时,备用机才会被访问
5.4.5项目如何实现在线部署
说明:
1.首先需要制定上线计划 分批次上线部署。
2.首先可以先将一部分服务器down掉,之后替换新的jar包,重启服务器,测试通过之后,nginx正式接通。
3.重复执行多次,直至项目部署完成为止。
nginx启动的速度很快,所以几乎对用户没有影响.
6.Linux常用命令:
用MobaXterm连接linux系统:
6.1常见命令
6.2创建命令
mkdir a 常见文件夹
vim a.txt 创建a文件
输入 i 进行插入数据,先点esc,在输入:wq保存退出
底行模式 shift+:
不保存退出 :q!
esc->u 撤回输入内容
6.3删除命令
rmdir a 删除文件夹
rm a.txt 删除文件
rm -f a.txt 不提示删除文件
rm -rf a 强制删除,可以删除目录
rm -rf * 删除所有文件
rm -rf /* 删除所有目录和文件
cat a.txt 查看文件内容
6.4复制文件
cp a.txt c.txt 将a.txt复制一份为c.txt
cp -r a b 将a文件夹复制一份为b文件夹
mv a.txt aa 将a.txt移动到aa文件夹中
6.5改名
mv c.txt cc.txt 将c.txt文件改名为cc.txt
7.Linux项目发布
7.1安装JDK
7.1.1上传安装包
7.1.2解压tar -xvf jdk-8u51-linux-x64.tar.gz
改名为jdk1.8
7.1.3检查jdk是否有效,查看版本
7.1.4编辑jdk环境配置
编辑:vim /etc/profile
可查看配置内容
环境变量生效:
1.重启linux服务器
2.刷新环境变量source /etc/profile
8.安装MariaDB数据库
8.2安装
[root@localhost src]# yum install mariadb-server 安装mariadb数据库
[root@localhost src]# yum clean all 清空已安装文件 如果下载失败之后执行的
8.3数据库命令
1. 启动命令 [root@localhost src]# systemctl start mariadb
2. 重启命令 [root@localhost src]# systemctl restart mariadb
3. 关闭命令 [root@localhost src]# systemctl stop mariadb
4. 设定开机自起 [root@localhost src]# systemctl enable mariadb
5. 关闭开机自起 [root@localhost src]# systemctl disable mariadb
8.4数据库初始化操作
命令: mysql_secure_installation
回车设置密码,我这是root
8.5物理电脑远程连接linux数据库
8.6关于链接数据库的说明
- 如果需要远程链接数据库必须通过防火墙。
- 如果远程链接数据库,数据库中必须开启远程访问权限才行,否则拒绝链接。
8.7配置Linux数据库权限
8.7.1 切换数据库mysql
8.7.2修改数据库表
8.7.3刷新数据库权限
9.配置Linux防火墙策略
9.1 检查防火墙状态
命令: firewall-cmd --state
9.2 防火墙配置
说明:防火墙中有一个配置文件,表示当Linux系统启动时防火墙应该如何操作!!!
需求: 告诉linux系统以后开机需不需要启动防火墙
命令:
systemctl disable firewalld.service
systemctl enable firewalld.service
9.3 手动关闭防火墙
说明:通过命令手动将防火墙关闭
命令:
- systemctl stop firewalld.service
- systemctl start firewalld.service
9.4 手动开放防火墙端口
1.检查防火墙开放的端口
firewall-cmd --list-ports
2.检查端口是否开放
firewall-cmd --query-port 80/tcp
3.开启防火墙
firewall-cmd --zone=public --add-port=80/tcp --permanent
4.移除端口
firewall-cmd --zone=public --remove-port=9090/tcp --permanent
5.关于防火墙操作的解释
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–remove-port=80/tcp #移除端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
6.重启防火墙
firewall-cmd --reload
9.5导入数据库
10.总结
10.1负载均衡
请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,使系统中每个节点能够均匀的处理请求负载,则可认为系统是负载均衡的。
10.2正向代理和反向代理
系统内部要访问外部网络时,统一通过一个代理服务器把请求转发出去,在外部网络看来就是代理服务器发起的访问,此时代理服务器实现的是正向代理;当外部请求进入系统时,代理服务器把该请求转发到系统中的某台服务器上,对外部请求来说,与之交互的只有代理服务器,此时代理服务器实现的是反向代理。简单来说,正向代理是代理服务器代替系统内部来访问外部网络的过程,反向代理是外部请求访问系统时通过代理服务器转发到内部服务器的过程。如图所示
11.tomcat服务器发布
11.1项目打包
Linux项目部署
11.2jar包文件上传
11.3启动项目
11.3.1.前端运行
命令:java -jar linux8091.jar
测试启动是否正常:
http://192.168.126.129:8091/getPort
前端运行的弊端:
- 如果采用上述指令,则当前的终端与tomcat绑定,如果终端关闭或者退出,tomcat服务器也会关闭。
- 可以通过末尾添加 & 号的方式,可以缓解终端与tomcat绑定的问题,但是不能根本上解决。
11.3.2.后台运行(关闭终端tomcat可继续运行)
命令:nohup java -jar linux8091.jar =>linux8091.log &
说明:将运行的方式改为后台运行,所有日志输出端到linux8091.log,查看日志cat linux8091.log
Linux 查看端口占用情况:
- lsof:需要 root 用户的权限来执行。
lsof -i:端口号:查看某端口占用 - netstat:netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat -tunlp | grep 端口号
java进程的命令:
- ps -ef 打印linux所有进程
- jps 检索java命令,打印java的进程
关闭进程:
- kill PID号 普通关闭进程
- kill -15 PID号 较为强硬的关闭
- kill -9 PID号 强制关闭
linux查看.log文件的日志情况:
命令格式: tail[必要参数][选择参数][文件]
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
用法,例:
tail -n 10 test.log 查询日志尾部最后10行的日志;
tail -n +10 test.log 查询10行之后的所有日志;
tail -fn 10 test.log 循环实时查看最后1000行记录(最常用的)
如果一次性查询的数据量太大,可以进行翻页查看,例如:
tail -n 4700 aa.log |more -1000 可以进行多屏显示(ctrl + f 或者 空格键可以快捷键)
11.3.3.脚本运行(了解)
说明:Linux常见的脚本 shell脚本 以xxx.sh结尾
编辑脚本:vim start.sh
启动脚本:sh start.sh
12Nginx项目部署
12.1安装nginx服务器
说明:在nginx-source的根目录中执行如下命令,需要提前安装nginx的依赖项
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
1../configure
- 在nginx-source的根目录中 执行 make
3.根目录中执行 make install
12.2进入nginx/sbin目录中执行
1.启动命令: ./nginx
2.重启命令: ./nginx -s reload
3.关闭命令: ./nginx -s stop
12.3配置nginx.conf文件
#配置图片代理 image.jt.com
server {
listen 80;
server_name image.jt.com;
location / {
root /usr/local/src/images;
}
}
#配置前端代理 www.jt.com
server {
listen 80;
server_name www.jt.com;
location / {
root dist;
index index.html;
}
}
#配置后台服务器集群
upstream tomcats{
server 192.168.126.129:8091;
server 192.168.126.129:8092;
server 192.168.126.129:8093;
}
#配置后端代理 manage.jt.com
server {
listen 80;
server_name manage.jt.com;
location / {
proxy_pass http://tomcats;
}
}
上传之后重启nginx服务
12.4上传静态资源
12.5修改hosts文件
#图片服务器配置
#127.0.0.1 image.jt.com
192.168.126.129 image.jt.com
#前端服务器配置
#127.0.0.1 web.jt.com
192.168.126.129 web.jt.com
#后端服务器配置
#127.0.0.1 manage.jt.com
192.168.126.129 manage.jt.com
12.6项目发布测试
后端测试:测试地址: http://manage.jt.com/rights/getRightsList
前端测试:测试地址: http://web.jt.com
12.7图片测试