40-Linux
学习目标
第一章-项目部署
在企业中,一般都采用linux系统作为Web应用服务器,所以我们需要在linux系统搭建项目运行环境。在linux系统上搭建运行环境需要安装jdk、myql、tomcat相关软件。
实操-部署项目
1.目标
2.步骤
- 准备一台Linux服务器
- 服务器软件环境准备(jdk、tomcat、mysql)
- 在linux服务器的mysql上进行添加项目数据库
- 把javaweb项目打成war包 发布到tomcat的webapps目录下
3.讲解
3.1.linux系统myql导入数据库
- 把windows的mysql数据库itheima_mm的数据库导出itheima_mm.sql文件
- 使用Navicat远程连接到linux的MySQL数据库
- 重新在导入itheima_mm.sql文件,这样linux里面的mysql数据库就有了。
- 数据库中文乱码
# 进入MySQL查看字符编码设置:
mysql> show variables like 'char%';
# 退出MySQL,编辑MySQL配置文件 将拉丁文的设置改为 utf8
mysql> quit
[root@localhost bin]# vi /etc/my.cnf
character_set_server=utf8
# 添加完成之后文件保存退出,重启mysql
[root@localhost bin]# service mysqld restart
3.2.导出war包部署到tomcat上
-
在linux上传要安装的Tomcat 8.5.27的压缩包, 只要解压即可。
# 1.打开文件上传窗口 上传tomcat压缩包 alt+ p 打开上传文件的窗口 # 2.在/usr/local目录下创建tomcat目录 mkdir /usr/local/tomcat # 3.解压tomcat安装包到/usr/local/tomcat目录 tar -zxvf apache-tomcat-8.5.27.tar.gz -C /usr/local/tomcat/ # 4.切换到tomcat解压目录bin下 启动tomcat cd /usr/local/tomcat/apache-tomcat-8.5.27/bin sh startup.sh # 5.开放端口号8080 # 6.访问 在Windows打开浏览器,输入 http://你的linux的ip地址:8080/ # 7.停止tomcat sh shutdown.sh
-
把javaweb项目打成war包
如果希望把面面项目给部署上去,那么需要给修改一下代码再打包项目
- 所有controller的方法的@RequestMapping的字符串前面都加上 /day38
- 所有页面发请求的地方,都得加上 /day38
- 注意修改db.properties里面连接数据库的用户名和密码为linux数据库的用户名和密码
- 执行项目右侧 mvn package 命令打包
- 打包完毕之后,在项目里面的target目录下存在javaweb项目的war包
- 把打出来的war包名字修改为 day38.war ,这个day38 就是项目的映射路径
-
上传war包 到 tomcat里面的webapps目录
- 把war包放到tomcat里面去,会有一个特点,就是启动tomcat之后,tomcat会自动解压war包
- 然后解压出来的名字(war包的名字)就是项目的映射名字!举例:
- day38.war , 这个项目里面有一个login.html,
- 启动tomcat,访问这个login.html的路径地址: localhost:8080/day38/login.html
# 1.打开文件上传窗口 上传war包 alt + p # 2.将war包复制到tomcat里面webapps目录下 cd ~ cp day38.war /usr/local/tomcat/apache-tomcat-8.5.27/webapps # 3.切换到tomcat bin目录下 cd /usr/local/tomcat/apache-tomcat-8.5.27/bin/ # 4.重新启动tomcat ./startup.sh # 5.访问项目 # 在Windows下打开浏览器,输入http://你linux的ip地址:8080/war包名称/login.html # eg: http://192.168.93.129:8080/day38/login.html ###############################如果上传的war包有问题,可以这么处理####################### # 6. 停止掉tomcat cd /usr/local/tomcat/apache-tomcat-8.5.27/bin/ ./shutdown.sh # 7. 删除刚才的day38项目 rm -rf /usr/local/tomcat/apache-tomcat-8.5.27/webapps/day38* # 8. 重新执行上面的 1~5 的步骤。
小结
-
准备Linux下软件环境(JDK、tomcat、MySQL)
-
将项目的数据库导入到Linux的MySQL数据库中
-
将项目打war包 部署到tomcat的webapps目录下 ,重新启动tomcat
注意:打包项目时,注意项目中数据库连接信息要和Linux下的MySQL保持一致
第二章-Nginx介绍和安装
知识点-Nginx介绍
1. 目标
2. 路径
- Nginx简介
- Nginx作用
3. 讲解
3.1 Nginx简介
Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务(这三种协议的服务都是针对邮件|邮箱)。
Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名,其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
nginx是一个高性能的web服务器,经常也作为反向代理服务器 ,代理tomcat接收请求,然后再转交给tomcat进行处理。
3.2 Nginx作用
- Nginx是一款轻量级的web 服务器,可以处理 静态资源
- Nginx是反向代理服务器,实现负载均衡
- Nginx也是电子邮件(IMAP/POP3)代理服务器,能够代理收发电子邮件
3.3tomcat与nginx的区别
-
设计目的
Tomcat是一个免费的开源的Servlet(动态资源)容器,实现了JAVAEE规范,遵循http协议的的服务器
Nginx是一款轻量级的电子邮件(电子邮件遵循IMAP/POP3协议)代理服务器,后来又发展成可以部署静态应用程序和进行反向代理的服务器
-
存放内容
tomcat可以存放静态和动态资源
nginx可以存放静态资源
-
应用场景
tomcat用来开发和测试javaweb应用程序
nginx用来做负载均衡服务器, 发布静态网页
4. 小结
- Nginx 是一款轻量级的高性能WEB服务器。
- 作用
- 发布静态资源
- 反向代理服务器
- 实现负载均衡
- 邮箱代理服务器
实操-Nginx安装和启动
1. 目标
2. 步骤
- 下载Nginx
- 安装Nginx
- nginx常用操作命令
3. 实现
3.1 下载
- Nginx的下载地址:http://nginx.org/en/download.html
3.2 安装
3.2.1window下安装Nginx
- Nginx的Windows版免安装,解压可直接使用
解压要放到没有中文和空格的目录下!
- 解压后目录结构如下:
nginx-1.16.1
|--conf 配置文件,其中有一个nginx.conf是核心配置文件
|--contrib nginx提供的一些脚本工具等
|--docs 文档说明
|--html nginx的默认部署的静态资源,其中有欢迎页面和错误页面
|--logs 日志
|--temp 临时文件夹
|--nginx.exe nginx程序 ★
注意:
1. 访问localhost:80 --> localhost
2. 启动windows下nginx时不要点击多下,一下就够
3. 如果启动不了,以管理员身份启动
4.如果启动多个,在任务管理器详细信息中 关闭nginx实例,保证使用的时候只有一个启动
3.2.2配置yum安装 阿里云软件源
https://help.aliyun.com/document_detail/120851.html?spm=5176.22414175.sslink.1.4696252blk4gcx
# 0. 切换管理员
su root
输入root用户的密码
# 1.备份原软件源
# 有的同学可能会出现 : CentOS-Base.repo 这个文件不存在,没有这个文件的情况!
# 那么也不用管它,出现这个问题的原因可能是早前,没有用过yum,
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 2.添加CentOS 7软件源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 3.生成本地缓存,加快搜索、安装软件的速度
yum clean all && sudo yum makecache
# 4.查看软件源是否添加成功
yum repolist
3.2.3Linux下安装Nginx
- 进入http://nginx.org/网站,下载nginx-1.16.1.tar.gz文件
- 把安装包上传到Linux
crt中 alt+p
- 在 /usr/local下新建文件夹 nginx
[root@shuaige ~]# mkdir /usr/local/nginx
- 将root下的nginx压缩包解压到 /usr/local/nginx目录下
cd ~
[root@shuaige ~]# tar -zxvf nginx-1.16.1.tar.gz -C /usr/local/nginx/
- 安装Nginx依赖环境gcc
Nginx是C/C++语言开发,建议在Linux上运行,安装Nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,所以需要安装gcc。一直y(同意)(需要网络),
[root@shuaige ~]# yum -y install gcc-c++
- 连接网络,安装Nginx依赖环境pcre/zlib/openssl. y表示安装过程如有提示,默认选择y
[root@shuaige ~]# yum -y install pcre pcre-devel
[root@shuaige ~]# yum -y install zlib zlib-devel
[root@shuaige ~]# yum -y install openssl openssl-devel
- 编译和安装nginx
# 进入nginx目录 切换到nginx解压目录下
[root@shuaige ~]# cd /usr/local/nginx/nginx-1.16.1/
# 配置nginx(在nginx-1.16.1目录中执行这个配置文件)
[root@shuaige nginx-1.16.1]# ./configure
# 编译nginx
[root@shuaige nginx-1.16.1]# make
# 安装nginx
[root@shuaige nginx-1.16.1]# make install
- 进入sbin目录,启动nginx
# 进入/usr/local/nginx/sbin这个目录
[root@shuaige nginx-1.16.1]# cd /usr/local/nginx/sbin
# 启动Nginx
./nginx
- 开放Linux的对外访问的端口80,在默认情况下,Linux不会开放端口号80
# 1.开放端口号80
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 2.重启加载防火墙或者重启防火墙
service firewalld restart
- 测试访问
Windows浏览器的地址栏输入 linux的ip地址访问
- 停止Nginx服务器
# 进入/usr/local/nginx/sbin这个目录
[root@shuaige sbin]# cd /usr/local/nginx/sbin
# 停止Nginx
[root@shuaige sbin]# ./nginx -s stop
# 想重新加载配置文件
[root@shuaige sbin]# ./nginx -s reload
3.3 常用操作命令
3.3.1 操作命令
- 打开cmd,切换到nginx的解压目录
- 输入命令,操作nginx:
- 启动Nginx:
start nginx.exe
- 重新载入配置文件:
nginx.exe -s reload
- 如果修改了配置文件,不需要重启,只要重新载入即可
- 停止:
nginx.exe -s stop
- 启动Nginx:
3.3.2 演示效果
-
启动nginx
- 启动成功后,在任务管理器中会有两个nginx的进程
-
使用浏览器访问nginx
- nginx的默认端口是80,所以访问地址是:
http://localhost:80
- nginx的默认端口是80,所以访问地址是:
-
如果修改了配置文件,就重新载入
-
停止nginx
4. 小结
-
下载
我们工作里面一般不会使用最新的版本的. 一般在稳定(正式)版本里面选择最新的
-
安装
- window: 解压即用,解压到一个没有中文和空格目录
- Linux: 安装C++ 及其他的依赖环境,
-
常用的命令
-
window
# 开启nginx cmd进入nginx的解压目录 start nginx.exe # 重新加载配置文件 nginx.exe -s reload # 关闭nginx nginx.exe -s stop
-
linux
# 启动 进入sbin目录 ./nginx # 重新加载配置文件 ./nginx -s reload # 关闭 进入sbin目录 ./nginx -s stop
-
-
windows查找端口使用进程并关闭
# 0.win+r 进入运行 输入cmd进入dos窗口 # 1.查找端口占用进程 netstat -ano|findstr "80" # 2.结束进程 【注意:如果权限不足,需要以管理员身份进入dos窗口结束进程】 taskkill -PID 进程号 -F
注意:在使用nginx时,一定要保证启动的nginx实例只有一个!!!
第三章-Nginx的功能【重点】
实操-Nginx部署静态web应用
1. 目标
- 使用Nginx部署静态web应用
2. 步骤
- 准备一个静态web应用
- 修改nginx配置文件
- 启动nginx,进行访问
3. 实现
3.1 准备一个静态web应用
- 有静态项目如下:(任意静态项目均可)
项目的目录不要有中文和空格。
3.2 修改nginx的配置文件
- 打开
conf\nginx.conf
配置文件,修改http
中server
的内容- 配置文件中
#
开头的是注释
- 配置文件中
3.3 启动nginx,使用浏览器访问
- 打开cmd,启动nginx:
start nginx.exe
- 使用浏览器访问:
http://localhost:80
,或者使用ip访问:http://你的ip地址:80
4. 小结
- 修改nginx的配置文件
- 我们后面项目或者工作里面, 可以把一些访问量比较大的页面, 通过模版静态化技术, 生成静态页面, 直接部署到Nginx(商品详细页)
- 以后基本上不怎么用jsp页面了。
- jsp的背后其实就是一个servlet ,每次访问都需要转化java文件,然后输出。
- html页面属于静态资源,不需要转化,直接可以输出。(肯定也需要填数据)
- 现在前后端分离已经成趋势。
- 静态网页,方便搜索引擎的抓取 ,方便SEO。
实操-Nginx虚拟主机-配置端口
1. 目标
- 使用nginx部署多个web应用,通过不同端口访问不同web应用
2. 分析
- Nginx可以配置多个虚拟主机(server),每个虚拟主机里部署不同的web项目
- 我们可以
- 方案一:给每个虚拟主机设置不同的端口,浏览器通过不同端口访问不同的web项目
- 方案二:给每个虚拟主机设置不同的域名,浏览器通过不同域名访问不同的web项目
- 这里我们将演示方案一:虚拟主机监听端口
- 通过
18081和18082
两个端口,分别访问两个web项目 - 项目A:login
- localhost:18081
- 项目B:regist
- localhost:18082
- 通过
3. 实现
1.1 准备两个web应用
- 在E盘里准备了两个web应用(其实就是两个文件夹)
- 第1个web应用:login
- 第2个web应用:regist
1.2 修改nginx配置文件
- 找到Nginx的
conf/nginx.conf
,打开并修改文件:- 其中每个
server
是一个虚拟主机,server
中的listen
是要监听的端口 - 我们拷贝,得到两个server
- 第1个:监听端口18081,配置login项目
- 第2个:监听端口18082,配置regist项目
- 其中每个
# 2. 通过端口号来区分不同的项目
# 18081 端口,呈现login项目
server {
listen 18081; # 监听的端口
server_name localhost; # 监听的域名
# 监听到地址请求之后, 就把下面的配置的内容拿出来显示
location / {
root D:/heima/login; # 拿这个D:/heima/login目录下的内容出来显示!
index index.html; # 里面的index.html出来显示 或者是 index.htm出来显示
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 18082 端口,呈现regist项目
server {
listen 18082; # 监听的端口
server_name localhost; # 监听的域名
# 监听到地址请求之后, 就把下面的配置的内容拿出来显示
location / {
root D:/heima/regist; # 拿这个D:/heima/regist目录下的内容出来显示!
index index.html; # 里面的index.html出来显示 或者是 index.htm出来显示
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
1.3 重新加载nginx配置文件,使用浏览器访问
- 使用端口18081,访问travel:
http://localhost:18081/
- 使用端口18082,访问regist:
http://localhost:18082/
4. 小结
- 配置虚拟主机(端口)
# 2. 通过端口号来区分不同的项目
# 18081 端口,呈现login项目
server {
listen 18081; # 监听的端口
server_name localhost; # 监听的域名
# 监听到地址请求之后, 就把下面的配置的内容拿出来显示
location / {
root D:/heima/login; # 拿这个D:/heima/login目录下的内容出来显示!
index index.html; # 里面的index.html出来显示 或者是 index.htm出来显示
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 18082 端口,呈现regist项目
server {
listen 18082; # 监听的端口
server_name localhost; # 监听的域名
# 监听到地址请求之后, 就把下面的配置的内容拿出来显示
location / {
root D:/heima/regist; # 拿这个D:/heima/regist目录下的内容出来显示!
index index.html; # 里面的index.html出来显示 或者是 index.htm出来显示
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
实操-Nginx虚拟主机-配置域名
1. 目标
- 配置虚拟主机,能够使用指定域名访问web应用
2. 分析
- Nginx可以配置多个虚拟主机,每个虚拟主机里部署不同的web项目
- 我们可以
- 方案一:给每个虚拟主机设置不同的端口,浏览器通过不同端口访问不同的web项目
- 方案二:给每个虚拟主机设置不同的域名,浏览器通过不同域名访问不同的web项目
- 这里我们将方案二演示:让Nginx监听域名
- 通过
www.sz115.com
和www.sz116.com
两个域名,分别访问两个web项目
- 通过
3. 实现
3.1 修改hosts文件,设置域名映射
www.sz115.com
和www.sz116.com
两个域名是我们自定义的,如果想让浏览器通过两个域名能访问到nginx部署的web项目,必须要设置两个域名对应的ip。- 因为实际上计算机只能识别ip地址,是不能识别域名的。当我们向一个域名发请求时,必须要把域名转换成对应的ip地址,实际是还是通过ip地址向服务器发请求。
3.1.1 域名和ip映射介绍
- 当我们上网时,在浏览器里输入的地址通常是域名,例如:
http://www.jd.com
- 当我们浏览器向
http://www.jd.com
域名发请求时,域名解析的流程如下:- Windows会自动把本地的DNS配置,加载到本地DNS缓存中(第①步) , 先要在自己电脑上找一找域名和ip地址的映射规则,这个规则的配置文件是:
C:\Windows\System32\drivers\etc\hosts
- 本地的DNS配置文件是:
C:\Windows\System32\drivers\etc\hosts
- 本地的DNS配置文件是:
- 先查找本地的DNS缓存(第②步);如果本地缓存了域名对应的ip,则获取ip,直接向ip发请求(第④步)
- 如果本地没有找到,则请求到DNS服务器(第③步),得到对应的ip,然后发ip发请求(第④步)
- Windows会自动把本地的DNS配置,加载到本地DNS缓存中(第①步) , 先要在自己电脑上找一找域名和ip地址的映射规则,这个规则的配置文件是:
3.1.2 修改hosts文件
-
把
www.sz115.com
和www.sz116.com
域名,和127.0.0.1
域名进行绑定,这样的话:- 浏览器上输入域名:
www.sz115.com
,实际访问的是绑定的ip127.0.0.1
- 浏览器上输入域名:
www.sz116.com
,实际访问的是绑定的ip127.0.0.1
- 浏览器上输入域名:
-
修改方式:要使用管理员权限打开这个文件,打开
C:\Windows\System32\drivers\etc\hosts
文件,在文件最后增加:127.0.0.1 www.sz115.com 127.0.0.1 www.sz116.com
3.2 准备两个web应用
- 在E盘里准备了两个web应用
- 第1个web应用:login
- 第2个web应用:regist
3.3 修改nginx配置文件
- 找到Nginx的
conf/nginx.conf
,打开并修改文件:- 其中每个
server
是一个虚拟主机,server
中的listen
是要监听的端口 - 我们拷贝,得到两个server
- 第1个:监听域名
www.sz115.com
,端口使用默认的80,配置login项目 - 第2个:监听域名
www.sz116.com
,端口使用默认的80,配置regist项目
- 第1个:监听域名
- 其中每个
# 监听 www.sz115.com 端口号:80
server {
listen 80; # 监听的端口
server_name www.sz115.com; # 监听的域名
# 监听到地址请求之后, 就把下面的配置的内容拿出来显示
location / {
root D:/heima/login; # 拿这个D:/heima/login目录下的内容出来显示!
index index.html; # 里面的index.html出来显示 或者是 index.htm出来显示
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 监听 www.sz116.com 端口号:80
server {
listen 80; # 监听的端口
server_name www.sz116.com; # 监听的域名
# 监听到地址请求之后, 就把下面的配置的内容拿出来显示
location / {
root D:/heima/regist; # 拿这个D:/heima/regist目录下的内容出来显示!
index index.html; # 里面的index.html出来显示 或者是 index.htm出来显示
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3.4重新加载nginx配置文件,使用浏览器访问
- 输入
http://www.sz115.com
,访问login项目
- 输入
http://sz116.com
,访问regist项目
4. 小结
-
配置虚拟主机(域名)
- 修改hosts文件
该文件位于: C:\Windows\System32\drivers\etc\hosts
127.0.0.1 www.sz115.com 127.0.0.1 www.sz116.com
- 修改nginx的配置文件
# 监听 www.sz115.com 端口号:80 server { listen 80; # 监听的端口 server_name www.sz115.com; # 监听的域名 # 监听到地址请求之后, 就把下面的配置的内容拿出来显示 location / { root D:/heima/login; # 拿这个D:/heima/login目录下的内容出来显示! index index.html; # 里面的index.html出来显示 或者是 index.htm出来显示 } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } # 监听 www.sz116.com 端口号:80 server { listen 80; # 监听的端口 server_name www.sz116.com; # 监听的域名 # 监听到地址请求之后, 就把下面的配置的内容拿出来显示 location / { root D:/heima/regist; # 拿这个D:/heima/regist目录下的内容出来显示! index index.html; # 里面的index.html出来显示 或者是 index.htm出来显示 } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
- 重新加载nginx配置文件,浏览器根据域名访问即可
知识点-反向代理介绍
1. 目标
- 了解什么是反向代理
2. 路径
- 正向代理
- 反向代理
- 正向代理和反向代理区别
3. 讲解
3.1 正向代理
3.1.1正向代理介绍
正向代理类似一个跳板机,代理访问外部资源。
举个例子:
我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,它能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从那个网站的角度来看,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。
注意:客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。
本地客户端设置代理服务器操作如下:
3.1.2正向代理原理
总结来说:正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
一句话:正向代理为客户端进行代理,和客户端处于同一个局域网内,同时还可以访问外网。
3.1.3正向代理的用途
(1)访问原来无法访问的资源,如google
(2) 可以做缓存,加速访问资源 , 迅雷VIP Maven私服 …
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
正向代理是为客户端进行代理,并且和客户端在同一个局域网内。
3.2.反向代理
3.2.1反向代理介绍
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求 , 然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
反向代理:
我想买iPad,平哥明天去香港,我就说,明天帮我拿回来一个iPad, 平哥明学给我带回来了ipad. 至于他从哪里拿回来的,我不知道。
这就是反向代理!
3.2.2反向代理原理
一句话:反向代理是为服务端进行代理,与服务端处在同一个局域网内。并且可以访问外网。
3.2.3反向代理的作用
(1) 保证内网的安全,可以使用反向代理提供防火墙(WAF)功能,阻止web攻击。大型网站,通常将反向代理作为公网访问地址,Web服务器是内网。
(2)负载均衡,通过反向代理服务器来优化网站的负载。当大量客户端请求代理服务器时,反向代理可以集中分发不同用户请求给不同的web服务器进行处理请求。(本阶段不实现,负载均衡技术项目阶段讲解)
4. 小结
4.1 反向代理与正向代理区别
- 正向代理:为客户端进行代理,可以看成是客户端和代理是一伙的
- 作用
- 帮助客户端访问不能访问到的资源 比如vpn
- 记录用户访问记录(上网行为管理),对外隐藏用户信息
- 作用
- 反向代理:为服务器端进行代理,可以看成是服务端和代理是一伙的
- 作用
- 保证内网安全
- 实现负载均衡
- 作用
实操-Nginx反向代理配置
1. 目标
- 使用Nginx实现服务器的反向代理配置
2. 步骤
- 准备一个tomcat实例
- 修改nginx配置 实现反向代理
- 通过访问nginx即可访问到实际的tomcat下的web应用
3. 实现
3.1 准备一个服务器实例
-
把web应用
day38.war
拷贝到Tomcat的webapps
里 -
双击Tomcat的
bin\startup.bat
,启动Tomcat -
访问
http://localhost:8080/day38/login.html
3.2 修改配置nginx,使用Nginx作为反向代理
-
打开Nginx的
conf\nginx.conf
,修改配置信息- 在
http
里增加upstream
- 修改
server
的配置
# 4. 配置反向代理,给tomcat配置代理 # 只要在浏览器的地址栏打上 localhost:80, nginx就抓住这个请求 # 然后把这个请求交给 localhost:8080 # #4.1 配置代理的服务器,也就是给哪个服务器做代理! upstream tomcat{ # 给本地的tomcat做代理 #server localhost:8080; # 给linux里面的tomcat做代理 server 192.168.163.128:8080; } # 4.2 配置监听请求,抓localhost:80 server { listen 80; # 监听的端口 server_name localhost; # 监听的域名 # 监听到地址请求之后, 就把下面的配置的内容拿出来显示 location / { proxy_pass http://tomcat; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
- 在
3.3 启动Nginx,浏览器通过Nginx访问目标服务器
- 浏览器输入地址:
http://localhost:80/day38/login.html
- 请求过程:浏览器发请求到Nginx
- Nginx把请求分发到Tomcat上,由Tomcat处理
- 响应过程:Tomcat把响应返回给Nginx
- Nginx把响应返回给浏览器
- 请求过程:浏览器发请求到Nginx
4. 小结
- 配置tomcat
# 4. 配置反向代理,给tomcat配置代理
# 只要在浏览器的地址栏打上 localhost:80, nginx就抓住这个请求
# 然后把这个请求交给 localhost:8080
# #4.1 配置代理的服务器,也就是给哪个服务器做代理!
upstream tomcat{
# 给本地的tomcat做代理
#server localhost:8080;
# 给linux里面的tomcat做代理
server 192.168.163.128:8080;
}
- 配置反向代理
# 4.2 配置监听请求,抓localhost:80
server {
listen 80; # 监听的端口
server_name localhost; # 监听的域名
# 监听到地址请求之后, 就把下面的配置的内容拿出来显示
location / {
proxy_pass http://tomcat;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
实操-Nginx实现负载均衡
1. 目标
- 使用Nginx实现负载均衡
2. 步骤
- 了解负载均衡的概念
- 使用Nginx实现负载均衡
3. 实现
3.1 负载均衡介绍
负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。
负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。
nginx负载均衡使用机制:轮询机制
3.2 Nginx实现负载均衡的步骤
- 在服务器集群环境中,要有多个服务器实例共同提供服务。这些服务器由Nginx实现负载均衡
- Nginx实现负载均衡的步骤:
- 准备多个服务器实例,这里使用Tomcat
- 服务器1地址:
localhost:18080
- 服务器2地址:
localhost:18081
- 服务器3地址:
localhost:18082
- 服务器1地址:
- 修改配置nginx,实现负载均衡
- 主要是配置文件中
upstream
的配置
- 主要是配置文件中
- 启动Nginx,浏览器通过Nginx访问目标服务器
- 准备多个服务器实例,这里使用Tomcat
3.3 Nginx实现负载均衡
3.3.1 准备多个服务器实例
- 修改tomcat端口号【需要修改3个位置 】
tomcat里面的conf文件夹/server.xml
- 这里我们使用Tomcat,部署启动三个服务。为了避免端口冲突,需要设置三个Tomcat使用不同的端口
参考修改tomcat默认端口号.mhtml
- 三个Tomcat都部署了
day38
- 为了能让客户端可以区分访问的是哪个服务器,我们对三个Tomcat部署的
day38
代码做了以下修改- 18080的首页
login.html
,<el-input v-model="form.userName" placeholder="用户名1">
- 28080的首页
login.html
,<el-input v-model="form.userName" placeholder="用户名2">
- 38080的首页
login.html
,<el-input v-model="form.userName" placeholder="用户名3">
- 18080的首页
- 为了能让客户端可以区分访问的是哪个服务器,我们对三个Tomcat部署的
- 分别启动三个Tomcat
3.3.2 修改配置nginx,实现负载均衡
-
打开Nginx的
conf\nginx.conf
,修改配置信息- 在
upstream
里设置多个服务器的地址,并增加weight
设置每个服务器被访问的权重weight
:服务器的权重,可以理解为服务器被访问到的机率
- 修改
server
的配置
# 5. 负载均衡 #5.1 配置代理的服务器,也就是给哪个服务器做代理! upstream tomcat{ server localhost:18080 weight=10; server localhost:28080 weight=5; server localhost:38080 weight=2; } # 5.2 配置监听请求,抓localhost:80 server { listen 80; # 监听的端口 server_name localhost; # 监听的域名 # 监听到地址请求之后, 就把下面的配置的内容拿出来显示 location / { proxy_pass http://tomcat; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
- 在
3.3.3 启动Nginx,浏览器通过Nginx访问目标服务器
4. 小结
配置步骤
1:准备3台tomcat实例
注意:
1.1:修改tomcat的端口号 【两个地方8005、8080、8009】
1.2:修改项目首页,方便区分看效果 【18080、28080、38080】
2.nginx.conf配置
# tomcatServers 是自己命名的,可以叫其它名称
upstream tomcatServers{
# 格式: server 服务器的域名或ip:端口;
server 127.0.0.1:18080 weight=3;
server 127.0.0.1:28080 weight=1;
server 127.0.0.1:38080 weight=1;
}
server {
listen 80;
server_name localhost;
location / {
# root D:/nginx/login;
# index index.html index.htm;
# 反向代理的配置
proxy_pass http://tomcatServers;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3.重启nginx或重新加载nginx配置文件
4.访问
第四章-Redis安装
实操-Linux版本Redis的安装
1.目标
2.讲解
- 在Linux虚拟机中安装c++环境(C的编译运行环境)
在上午的课程已经安装过,所以不需要安装了. 如果想测试有没有安装,可以直接敲 gcc 如果出现: 没有输入文件,即表示已经安装了。
yum -y install gcc-c++
- 下载Redis
- 上传到Linux
- 解压
# 创建目录/usr/local/redis
[root@shuaige ~]# mkdir /usr/local/redis
# 将redis解压到/usr/local/redis目录下
cd ~
[root@shuaige ~]# tar -zxvf redis-4.0.14.tar.gz -C /usr/local/redis
- 编译
# 切换到redis解压目录
[root@shuaige ~]# cd /usr/local/redis/redis-4.0.14/
# 执行编译
[root@shuaige redis-4.0.14]# make
- 安装
[root@shuaige redis-4.0.14]# make install PREFIX=/usr/local/redis
- 进入安装好的redis目录,复制配置文件
# 进入bin目录
[root@shuaige redis-4.0.14]# cd /usr/local/redis/bin
# 将redis配置文件复制到bin目录下
[root@shuaige bin]# cp ../redis-4.0.14/redis.conf ./
- 修改配置文件
# 修改配置文件
[root@shuaige bin]# vi redis.conf
# Redis后台启动
修改 daemonize 为 yes
# 设置Redis服务器可以跨网络访问
修改 bind 为 0.0.0.0
- 开放端口号6379
# 1.开放端口号6379
firewall-cmd --zone=public --add-port=6379/tcp --permanent
# 2.重启加载防火墙或者重启防火墙
service firewalld restart
- 启动redis
[root@shuaige bin]# ./redis-server redis.conf
补充:相对路径和绝对路径
1. 解释说明
- 相对和绝对路径
- 相对路径要明白相对的是当前的位置(谁去执行这个跳转,那么谁的位置就是当前的位置)
- 如果要跳转的目标地址和当前发起请求的资源所在地址目录层级一样,那么直接写对应的地址即可。
- 如果要跳转的目标地址和当前发起请求的资源地址目录层级不同,则需要使用 ../ 来倒退目录层级或者拼接目录层级。
- 绝对路径
- 绝对路径就比较简单,只要路径地址前面有 / 都可看成是绝对路径。绝对路径比较单一,它永远只会把现在要跳转的地址拼接到端口号的后面去,形成一个完整的地址。
- 相对路径要明白相对的是当前的位置(谁去执行这个跳转,那么谁的位置就是当前的位置)
2. 案例
1. index.jsp 页面
位于 webapp/a1/b1/c1/index.jsp
<%--
Created by IntelliJ IDEA.
User: xiaomi
Date: 2021/9/23
Time: 14:48
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--
相对路径:
特点:
1. 地址前面不能以 /打头, 以 /打头就是绝对路径
分析:
1. 相对路径其实就要找到相对的参照物,谁发起请求,就相对于谁的位置。
2. 现在是从index.jsp里面的a标签发起的请求,那么相对的就是index.jsp页面
步骤:
1. 现在的位置: localhost:82/a1/b1/c1/index.jsp
在这个页面上发请求的时候,其实就是相对于这个index.jsp页面的位置去拼接地址|跳转!
如果: href="a" 一会就会跳转到:localhost:82/a1/b1/c1/a
2. 到哪里去: localhost:82/user/add
如果写成 user/add 一会跳转的地址:localhost:82/a1/b1/c1/user/add
必须要去掉 /a1/b1/c1 那么地址就要写成 ../../../user/add
--%>
<a href="../../../user/add">使用相对路劲跳转到Servlet</a><br/>
<%-- 绝对路径:
1. 要以 / 打头
2. 会把地址拼接到端口号的后面去,没有项目映射名!
要到哪里去呢?: localhost:82/user/add
--%>
<a href="/user/add">使用绝对路劲跳转到Servlet</a>
</body>
</html>
2. Servlet
package com.itheima.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/user/add")
public class ServletDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("调用了doGet方法~!~!");
/*
使用相对路径跳转到success.jsp
我在哪里:localhost:82/user/add
我要去哪:localhost:82/a2/b2/success.jsp
应该填什么? ../a2/b2/success.jsp
*/
//resp.sendRedirect("../a2/b2/success.jsp");
/*使用绝对路径跳转到success.jsp*/
resp.sendRedirect("/a2/b2/success.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
3. success.jsp
位于 webapp/a2/b2/sucsess.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>这是成功的页面</h2>
</body>
</html>