在Linux系统安装Java运行环境
后端程序部署
本小节的任务是将学习管理系统
部署到服务器上,在部署之前先来一个快照
软件的安装包文件上传到/usr/local/src/
,软件安装位置在/usr/local/
安装包类型
1. 二进制发布包安装
软件已经针对具体平台编译打包发布,只要解压,修改配置即可
2. 源码编译安装
软件以源码工程的形式发布,需要自己编译打包
3. rpm安装
软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题
安装:rpm -ivh rpm文件
升级:rpm -Uvh rpm文件
卸载:rpm -e --nodeps 软件名
查看所有安装的软件:rpm -qa | grep 具体名
4. yum安装
一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题5464
yum install 软件名 (yum install ksh)
yum localinstall 本地rpm包
安装JDK
官方提供的是二进制安装包
#1 解压
tar -zxvf /usr/local/src/jdk-11.0.18_linux-x64_bin.tar.gz -C /usr/local/
#2 配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/jdk-11.0.18
export PATH=$PATH:$JAVA_HOME/bin
#3 更新配置文件
source /etc/profile
#4 测试
java -version
安装MySQL
官方提供的是rpm包
# 上传所有的rpm包到/usr/local/src/mysql/下
# 安装软件
yum localinstall /usr/local/src/mysql/* -y
# 启动mysql服务器
systemctl start mysqld
# 查看密码
cat /var/log/mysqld.log
# 使用日志提供的密码登录mysql
mysql -uroot -p
# 设置一个新的账号密码
alter user 'root'@'localhost' identified by '1qaz@WSX'; -- 重置密码(此密码要求很复杂)
create user 'heima'@'%' identified by '1qaz@WSX'; -- 创建一个可以再任意位置登录的heima用户
grant all privileges on *.* to 'heima'@'%'; -- 授权
flush privileges; -- 刷新
exit; -- 退出mysql
# 防火墙放行端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
数据库迁移
项目部署
打包
① 修改数据库连接
<!--在pom.xml的project节点中添加下面配置,然后执行maven clean package-->
<build>
<finalName>tlias</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.5</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
运行程序
java -jar /usr/local/tlias.jar --server.port=9090
上面方式会占据控制台运行,下面是后台运行
nohup java -jar /usr/local/tlias.jar --server.port=9090 > /usr/local/9090.log &
放行端口
使用下面命令,放行防火墙9090端口
firewall-cmd --zone=public --add-port=9090/tcp --permanent
firewall-cmd --reload
访问测试
使用postman测试
前端程序部署
我们前端程序需要部署到nginx软件中,下面我们先来了解下nginx
Nginx
Nginx是一款轻量级的Web服务器,由俄罗斯的程序设计师伊戈尔·西索夫所开发。
Nginx性能非常优秀,官方测试 nginx 能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
Nginx的作用有很多,我们经常使用的是用它来做静态资源服务器、负载均衡服务器和反向代理服务器。
软件安装
#1 安装基础包
yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
#2 解压文件
tar -zxvf /usr/local/src/nginx-1.22.1.tar.gz -C /usr/local/src
#3 配置
cd /usr/local/src/nginx-1.22.1/
./configure --prefix=/usr/local/nginx
#4 编译
make
#5 安装
make install
#6 启动
/usr/local/nginx/sbin/nginx
#7 防火墙放行端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
实战–静态资源
静态资源服务器,就是nginx中可以部署静态资源代码,比如html、css、js等等
① 上传前端代码
② 修改配置
location ^~ /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://localhost:9090;
}
③ 重新加载nginx配置
/usr/local/nginx/sbin/nginx -s reload
④ 访问测试
实战–反向代理
反向代理,就是对服务端进行代理,浏览器将请求发送到nginx,nginx会将合适的请求转发给后端的tomcat
前后端在不同的服务器上
location ^~ /api/ {
rewrite ^/api/(.*)$ /$1 break;
# 反向代理
proxy_pass http://192.168.136.3:9090;
}
实战–负载均衡
负载均衡(Load Balance, LB)意思就是将一份负载分摊到多个操作单元上进行执行
# 1. 再次启动一个后端程序,端口号设置为9091
nohup java -jar /usr/local/tlias.jar --server.port=9091 > /usr/local/9091.log &
# 2. 修改nginx的配置文件
# 声明负载均衡
upstream tomcatserver{
server localhost:9090;
server localhost:9091;
}
server {
# 声明反向代理
location ^~ /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://tomcatserver;
}
}
# 3. 重新加载nginx配置
/usr/local/nginx/sbin/nginx -s reload
# 4. 新开两个窗口, 分别观察两个日志的输出
tail -f /usr/local/9090.log
tail -f /usr/local/9091.log
Nginx中提供了下面几种负载均衡策略:
名称 | 说明 | 特点 |
---|---|---|
默认方式 | 轮询 | |
weight | 权重 | 根据权重分发请求,权重大的分配到请求的概率大 |
fair | 最快时间 | 优先把请求分发给处理请求时间短的服务器 |
least_conn | 最少连接 | 哪个服务器当前处理的连接少, 请求优先转发到这台服务器 |
ip_hash | 依据ip分配 | 根据客户端请求的IP地址计算hash值, 根据hash值来分发请求, 同一个IP发起的请求, 会发转发到同一个服务器上 |
url_hash | 依据url分配 | 根据客户端请求url地址计算hash值,根据hash值来分发请求, 同一个url请求, 会发转发到同一个服务器上 |