准备实验环境,准备3台机器
1.作为前端服务器,mysql,redis服务器--同时临时作为代码打包服务器
192.168.2.65 nginx-server
2.作为后端服务器
192.168.2.66 java-server-1
192.168.2.67 java-server-2
安装nginx/mysql
#安装nginx
[root@web-nginx ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
[root@web-nginx ~]# yum install -y nginx
#安装mysql5.7
[root@nginx-server ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
[root@nginx-server ~]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm
[root@nginx-server ~]# vim /etc/yum.repos.d/mysql-community.repo
将mysql8.0关闭将mysql5.7开启
enabled=1
gpgcheck=0
[root@nginx-server ~]# yum install -y mysql-community-server
[root@nginx-server ~]# systemctl start mysqld
[root@nginx-server ~]# grep pass /var/log/mysqld.log
[root@nginx-server ~]# mysqladmin -uroot -p'HdV>.f>Ir8;h' password 'QingFeng@123!'
[root@nginx-server ~]# mysql -uroot -p'QingFeng@123!'
#创建数据库ry
mysql> create database ry character set utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
#设置root允许远程登录
mysql> update mysql.user set host = '%' where user = 'root';
Query OK, 1 row affected (0.10 sec)
Rows matched: 1 Changed: 1 Warnings: 0
#刷新权限
mysql> flush privileges;
#退出
mysql> \q
安装redis
[root@nginx-server ~]# wget https://a.xbd666.cn/d/Aliyun/Cloud_computing/Software_package/redis-4.0.9.tar.gz
[root@nginx-server ~]# tar xzvf redis-4.0.9.tar.gz -C /usr/local/
[root@nginx-server ~]# mv /usr/local/redis-4.0.9 /usr/local/redis
[root@nginx-server ~]# yum install -y gcc make
[root@nginx-server ~]# cd /usr/local/redis
[root@nginx-server redis]# make
[root@nginx-server redis]# cp /usr/local/redis/redis.conf /usr/local/redis/redis.conf.bak
[root@nginx-server redis]# vim redis.conf
bind 192.168.198.160 #只监听内网IP
daemonize yes #开启后台模式将on改为yes
port 6379 #端口号
#启动redis, 放后台运行
[root@nginx-server redis]# src/redis-server redis.conf &
#查看端口有没有起来
[root@nginx-server redis]# netstat -lntp | egrep '3306|6379'
前后端打包环境并打包
安装后端打包工具
#安装jdk
[root@nginx-server ~]# wget https://a.xbd666.cn/d/Aliyun/Cloud_computing/Software_package/jdk-8u271-linux-x64.tar.gz
[root@nginx-server ~]# tar zxvf jdk-11.0.20_linux-x64_bin.tar.gz -C /usr/local
[root@nginx-server ~]# mv /usr/local/jdk-11.0.20 /usr/local/java
[root@nginx-server ~]# vim /etc/profile
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
[root@nginx-server ~]# source /etc/profile
[root@nginx-server ~]# java -version
#下载maven包
[root@nginx-server ~]# wget https://a.xbd666.cn/d/Aliyun/Cloud_computing/Software_package/apache-maven-3.9.6-bin.tar.gz
[root@nginx-server ~]# tar zxvf apache-maven-3.9.6-bin.tar.gz -C /usr/local
[root@nginx-server ~]# mv /usr/local/apache-maven-3.9.6 /usr/local/maven
#设置环境变量
[root@nginx-server ~]# vim /etc/profile
MAVEN_HOME=/usr/local/maven
PATH=$PATH:$MAVEN_HOME/bin
export MAVEN_HOME PATH
[root@nginx-server ~]# source /etc/profile
#检测maven是否安装成功
[root@nginx-server ~]# mvn -version
#安装node.js前端打包工具命令npm
[root@nginx-server ~]# wget https://nodejs.org/dist/v12.18.4/node-v12.18.4-linux-x64.tar.xz
[root@nginx-server ~]# tar xf node-v12.18.4-linux-x64.tar.xz -C /usr/local/
[root@nginx-server ~]# mv /usr/local/node-v12.18.4-linux-x64 /usr/local/node
#设置变量
[root@nginx-server ~]# vim /etc/profile
NODE_HOME=/usr/local/node
PATH=$NODE_HOME/bin:$PATH
export NODE_HOME PATH
[root@nginx-server ~]# source /etc/profile
#查看版本
[root@nginx-server ~]# node --version
#下载偌依代码包,也可以下载git仓库拉取代码包
[root@nginx-server ~]# wget https://a.xbd666.cn/d/Aliyun/Cloud_computing/Software_package/RuoYi-Vue-master.zip
[root@nginx-server ~]# yum -y install unzip
[root@nginx-server ~]# unzip RuoYi-Vue-master.zip
[root@nginx-server ~]# cd RuoYi-Vue-master/
[root@nginx-server RuoYi-Vue-master]# cd RuoYi-Vue
[root@nginx-server RuoYi-Vue]# cd ruoyi-admin/src/main/resources/
编辑代码配置文件修改数据库与redis连接地址
1.修改redis
[root@nginx-server resources]# vim application.yml
# redis 配置
redis:
# 地址
host: 192.168.2.65 #需修改
# 端口,默认为6379
port: 6379
# 密码
password:
2.修改mysql
[root@nginx-server resources]# vim application-druid.yml
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://192.168.2.65:3306/(ry)?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull(&useSSL=false&)serverTimezone=GMT%2B8
username: root
password: QianFeng@123!
#另外打括号的地方是需修改的地方
`ry 是数据库的名字,需要和数据库名字一致`
&useSSL=false& 改成取消加密
同时注意数据库连接这里是否启动加密连接,如果启用了加密连接有可能会造成代码与数据库连接不上。修改为:
&useSSL=false&
打包前端代码
[root@nginx-server ~]# cd RuoYi-Vue-master/ruoyi-ui/
#替换为国内淘宝镜像源
[root@nginx-server ruoyi-ui]# npm install --unsafe-perm --registry=https://registry.npm.taobao.org
#正式环境打包前端代码
[root@nginx-server ruoyi-ui]# npm run build:prod
构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 xxx.js 、xxx.css、index.html 等静态文件。
通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。
[root@nginx-server ruoyi-ui]# ls
babel.config.js build node_modules package-lock.json README.md vue.config.js
bin dist package.json public src
[root@nginx-server ruoyi-ui]# cd dist/
[root@nginx-server dist]# ls ----前端代码完成
favicon.ico index.html robots.txt static
打包后端代码
[root@nginx-server ~]# cd RuoYi-Vue-master/
[root@nginx-server RuoYi-Vue-master]# cd sql/
[root@nginx-server sql]# ls
quartz.sql ry_20200920.sql
#导入数据给创建的数据库里面
[root@nginx-server sql]# mysql -uroot -p'QianFeng@123!' ry < quartz.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@nginx-server sql]# mysql -uroot -p'QianFeng@123!' ry < ry_20200920.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
#开始后端打包jar包
[root@nginx-server ~]# cd RuoYi-Vue-master/
[root@nginx-server RuoYi-Vue-master]# mvn package ---后端打包命令 ----时间较长
#然后会在项目下生成 target文件夹包含 war 或jar (多模块生成在ruoyi-admin)
[root@nginx-server RuoYi-Vue-master]# cd ruoyi-admin/
[root@nginx-server ruoyi-admin]# ls
pom.xml src target
[root@nginx-server target]# ls
classes generated-sources maven-archiver maven-status ruoyi-admin.jar ruoyi-admin.jar.original
准备后端java服务
两台机器修改主机名
# hostnamectl set-hostname java-server
关闭防火墙和selinux
[root@java-server ~]# systemctl stop firewalld
[root@java-server ~]# setenforce 0
两台机器上传idk
[root@java-server ~]# wget https://a.xbd666.cn/d/Aliyun/Cloud_computing/Software_package/jdk-8u271-linux-x64.tar.gz
[root@java-server ~]# tar zxvf jdk-8u271-linux-x64.tar.gz -C /usr/local
[root@java-server ~]# mv /usr/local/jdk1.8.0_271 /usr/local/java
#设置环境变量
[root@java-server ~]# vim /etc/profile
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
[root@java-server ~]# source /etc/profile
查看版本信息
[root@java-server ~]# java -version
后端机器上都创建
#创建工作目录以及代码上线目录
[root@java-server ~]# mkdir /application/java-server -p
开始上线服务
1.将前端代码放到nginx网站发布目录并启动
[root@nginx-server ~]# cd /usr/share/nginx/html/
[root@nginx-server html]# rm -rf *
#拷贝dist目录下所有文件到到当前目录
[root@nginx-server html]# cp -r /mnt/ruoyi-ui/dist/* .
[root@nginx-server html]# ls #将所有前端代码放到nginx的网站发布目录中
favicon.ico index.html robots.txt static
[root@nginx-server html]# systemctl start nginx
后端服务上线
#后端机器都操作
1.将打包好的后端jar包上传到两台后端服务器中
[root@nginx-server ~]# cd RuoYi-Vue-master/ruoyi-admin/target/
[root@nginx-server target]# scp ruoyi-admin.jar 192.168.2.66:/root/
2.开始上线后端--两台机器相同操作
[root@java-server ~]# cp ruoyi-admin.jar /application/java-server/
[root@java-server ~]# cd /application/java-server/
[root@java-server java-server]# nohup java -jar -server -Xmx1024m -Xms1024m ruoyi-admin.jar &
[1] 1212
[root@java-server java-server]# tail -f nohup.out 查看日志
查看服务端口
[root@java-server java-server]# netstat -lntp
配置反向代理
配置nginx路径转发与负载均衡
[root@nginx-server ~]# cd /etc/nginx/conf.d/
[root@nginx-server conf.d]# mv default.conf nginx.conf
[root@nginx-server conf.d]# vim upstream.conf
upstream java-web {
server 192.168.198.162:8080 weight=1 max_fails=2 fail_timeout=5s;
server 192.168.198.163:8080 weight=1 max_fails=2 fail_timeout=5s;
}
[root@nginx-server conf.d]# vim app.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/{
proxy_pass http://java-web/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
[root@nginx-server conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@nginx-server conf.d]# nginx -s reload
#解释:
try_files指令:可以实现自动检测网站根下是否存在用户在浏览器输入的名为URI文件和名为URI的目录,
当用户请求 http://localhost/example 时,这里的 $uri 就是 /example。
try_file 会到硬盘里尝试找这个文件。如果存在名为 /$root/example(其中 $root 是项目代码安装目录)的文件,就直接把这个文件的内容发送给用户。
如果目录中没有叫 example 的文件。然后就看 $uri/,增加了一个 /,也就是看有没有名为/$root/example/ 的目录。
若不存在则会跳转至最后一个参数,这以上例子中最后一个参数是根下的/index.html,也就是相当于 nginx 发起一个 HTTP 请求到 http://localhost/index.html