1、准备基础环境
systemctl stop firewalld
setenforce 0
服务器功能 | 主机IP | 主机名 | 服务名称 | 配置 |
---|---|---|---|---|
前端服务器 | 10.36.192.251 | nginx | nginx | 1C2G |
后端服务器+代码打包 | 10.36.192.252 | java | java、maven、nodejs | 2C4G |
数据库/缓存 | 10.36.192.253 | db | mysql、redis | 1C2G |
检查源
cd /etc/yum.repos.d
rm -rf *
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo && curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo——安装阿里云源
本地域名解析步骤
1:重命名
hostnamectl set-hostname nginx-server
hostnamectl set-hostname java-server
hostnamectl set-hostname mysql-server
2:域名解析 在192.168.52.150中:vim /etc/hosts
192.168.52.150 nginx-server 192.168.52.151 java-server 192.168.52.152 mysql-server
3: 远程拷贝给其他两台机器
scp /etc/hosts 192.168.52.151:/etc/
scp /etc/hosts 192.168.52.152:/etc/
4: 三台都安装工具。
yum install -y wget git nptdate
2、Nginx配置
#配置Nginx yum源
[root@nginx ~]# cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1----测试环境尽量改成0,因为这个系统的通过机制比较严格。
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
***这一步最好是直接创建新文件进行编辑。
#安装Nginx
[root@nginx ~]# yum install -y nginx
#systemctl start nginx
#可以查看版本:nginx --version
3、配置java
# 上传java包到服务器
默认上传到~下。
# 安装java环境
[root@java ~]# tar -xf jdk-8u211-linux-x64.tar.gz -C /usr/local/
[root@java ~]# mv /usr/local/jdk1.8.0_211/ /usr/local/java
[root@java ~]# vim /etc/profile.d/java.sh
JAVA_HOME=/usr/local/java
PATH=$PATH:$JAVA_HOME/bin
[root@java ~]# source /etc/profile.d/java.sh
[root@java ~]# java --version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
4、配置redis
redis作用:
缓存层、会话存储、消息队列(管理用户会话、分布式会话-共享会话存储)、
[root@db ~]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz(或者直接yum -y install redis,如果是直接yum安装,安装好之后可以直接启动systemctl start redis ,然后查看端口是否启动,如果启动,那么就可以直接查看/etc/redis.conf的文件了。)
[root@db ~]# tar -xf redis-4.0.9.tar.gz -C /usr/local/
[root@db ~]# mv /usr/local/redis-4.0.9/ /usr/local/redis
[root@db ~]# yum install -y gcc make
[root@db ~]# cd /usr/local/redis/
[root@db redis]# make
[root@db redis]# cat redis.conf yum安装可以直接跳到这一步
bind 0.0.0.0 允许所有的ip能够访问。
port 6379
daemonize yes--- 是否转换成守护进程。
[root@db redis]# ./src/redis-server redis.conf & 后台运行。
[root@db redis]# ss -tlanp |grep redis
LISTEN 0 128 *:6379 *:* users:(("redis-server",pid=4938,fd=6))
5、配置mysql yum源
配置mysql yum源
进官网下载mysql数据库安装包
https://dev.mysql.com/downloads/file/?id=521599
# rpm下载 -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
修改安装包的版本类型
# vim /etc/yum.repos.d/mysql-community.server
# 安装mysql
[root@db ~]# yum install -y mysql-server
[root@db ~]# systemctl start mysqld
[root@db ~]# systemctl enable mysqld
[root@db ~]# grep "password" /var/log/mysqld.log
2023-11-03T19:44:26.450149Z 1 [Note] A temporary password is generated for root@localhost: rb894yRh(NUG
[root@db ~]# mysqladmin -uroot -p'rb894yRh(NUG' password 'QianFeng@123456'
在mysql主机上创建数据库前。需要先在java主机上查找到指定的数据库名称:/root/RuoYi-Vue/ruoyi-admin/src/main/resources
#vim application-druid.yml
修改为数据库的主机ip,查看数据库名称,修改数据库密码。然后再去创建数据库。
#/root/RuoYi-Vue/ruoyi-admin/src/main/resources
vim application.yml
在这个文件中redis模块中,修改ip地址,指定为安装了redis软件(nginx主机)的ip地址。
#[root@db ~]# mysql -uroot -p'新密码'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.42 MySQL Community Server (GPL)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 创建数据库
mysql> create database `ry-vue` character set utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
#授权root用户远程登录
mysql> grant all on *.* to 'root'@'%' identified by 'QianFeng@123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
#刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> \q
Bye
6、配置前端的打包环境。
nodejs,一种JavaScript运行环境
[root@java ~]# wget https://nodejs.org/dist/v12.18.4/node-v12.18.4-linux-x64.tar.xz 直接复制
[root@java ~]# tar -xf node-v12.18.4-linux-x64.tar.xz -C /usr/local/
[root@java ~]# mv /usr/local/node-v12.18.4-linux-x64/ /usr/local/node
[root@java ~]# vim /etc/profile.d/node.sh
NODE_HOME=/usr/local/node
PATH=$PATH:$NODE_HOME/bin
[root@java ~]# source /etc/profile.d/node.sh
[root@java ~]# node -v
v12.18.4
7、配置后端的打包环境
maven:java项目,自动化构建工具。
[root@java ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz --no-check-certificate 直接复制。
[root@java ~]# tar -xf apache-maven-3.9.5-bin.tar.gz -C /usr/local/
[root@java ~]# mv /usr/local/apache-maven-3.9.5/ /usr/local/maven
[root@java ~]# vim /etc/profile.d/mvn.sh
MAVEN_HOME=/usr/local/maven
PATH=$PATH:$MAVEN_HOME/bin
[root@java ~]# source /etc/profile.d/mvn.sh
[root@java ~]# mvn -version
Apache Maven 3.9.5 (57804ffe001d7215b5e7bcb531cf83df38f93546)
Maven home: /usr/local/maven
Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /usr/local/java/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
8、获取项目代码
[root@java ~]# yum install -y git
[root@java ~]# git clone https://gitee.com/y_project/RuoYi-Vue.git 去gitee平台的若依用户博客下查找。
[root@java ~]# ls
anaconda-ks.cfg node-v12.18.4-linux-x64.tar.xz
apache-maven-3.9.5-bin.tar.gz RuoYi-Vue
jdk-8u211-linux-x64.tar.gz
9、前端代码打包
[root@java ~]# cd RuoYi-Vue/ruoyi-ui
#替换为国内的taobaoyuan(淘宝源之前实验时有报错,一般建议用官方的源代码)
[root@java ruoyi-ui]# npm install --registry=https://registry.npmmirror.com ->安装官方源代码依赖包。
[root@java ruoyi-ui]# npm run build:prod
构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 xxx.js 、xxx.css、index.html 等静态文件。
通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。
[root@java ruoyi-ui]# ls
babel.config.js dist package-lock.json src
bin node_modules public vue.config.js
build package.json README.md
[root@java ruoyi-ui]# cd dist/
[root@java dist]# ls
favicon.ico html index.html index.html.gz robots.txt static
# 将静态资源移动到其他位置,(#然后进行后端代码打包)或者不移动也可以,后端打包时不会捕捉到前端的资源。
[root@java dist]# cd /root/RuoYi-Vue
[root@java RuoYi-Vue]# mv ruoyi-ui/ /opt/
10、后端代码打包
[root@java ~]# cd RuoYi-Vue/
[root@java RuoYi-Vue]# vim ruoyi-admin/src/main/resources/application.yml
# 修改redis配置信息
redis:
# 地址
host: 192.168.52.151 指向安装了redis的机器。
# 端口,默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password: 默认没有设置密码。
# 连接超时时间
timeout: 10s
lettuce:
[root@java RuoYi-Vue]# vim ruoyi-admin/src/main/resources/application-druid.yml
### 修改数据库url,修改数据库密码
master:
url: jdbc:mysql://192.168.52.152指向安装数据库的机器ip地址:3306/ry-vue? 若依官方指定的数据库名称useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: QianFeng@123456 修改数据库密码。
# 开始进行后端打包
[root@java RuoYi-Vue]# mvn package
…………
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:35 min
[INFO] Finished at: 2023-11-03T20:18:20+08:00
[INFO] ------------------------------------------------------------------------
[root@java RuoYi-Vue]# ls ruoyi-admin/target/
classes maven-archiver ruoyi-admin.jar
generated-sources maven-status ruoyi-admin.jar.original
11、前端上线
# 拷贝前端资源到前端服务器
[root@java-server ruoyi-ui]# scp -r dist/* 192.168.52.150:/usr/share/nginx/html/ 前端服务机ip
#前端项目上线
[root@nginx ~]# rm -rf /usr/share/nginx/html/* 提前把前端服务机的静态页面处理干净。
[root@nginx ~]# ls /usr/share/nginx/html/
favicon.ico html index.html index.html.gz robots.txt static
[root@nginx ~]# vim /etc/nginx/conf.d/default.conf 这里需要考虑一下是否需要设置,有可能不需要设置,直接在/etc/nginx/nginx.conf配置文件中设置。内容可以直接去若依官方文档中复制粘贴,原内容没有其他内容的前提下删除掉。
upstream rs {
server 10.36.192.252:8080;
}
server {
listen 80;
server_name localhost;
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://rs/;
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 ~]# systemctl restart nginx
#前端上线完成,但是由于后端还未上线,所以有报错,并且验证码无法显示
12、后端上线
# 将jar包传送到后端服务器
[root@java-server ruoyi-admin]# cp target/ruoyi-admin.jar /root/
#导入初始化数据,首先将初始化数据传到数据库服务器
[root@java ~]# cd /RuoYi-Vue/sql
[root@java sql]# ls
quartz.sql ry_20230706.sql
[root@java sql]# scp sql/* 192.168.52.152:/root/ 拷贝到数据库机器上
# 导入初始化数据
[root@db redis]# mysql -uroot -p'数据库密码' ry-vue < quartz.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@db redis]# mysql -uroot -p'数据库密码' ry-vue < ry_20231130.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
#开始测试上线后端服务
[root@java-server ~]# java -jar -server -Xmx1024m -Xms1024m ruoyi-admin.jar
Application Version: 3.8.6
Spring Boot Version: 2.5.15
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永不宕机 永无BUG //
中间省略,注意观察是否有报错情况。
(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙
.-------. ____ __
| _ _ \ \ \ / /
| ( ' ) | \ _. / '
|(_ o _) / _( )_ .'
| (_,_).' __ ___(_ o _)'
| |\ \ | || |(_,_)'
| | \ `' /| `-' /
| | \ / \ /
''-' `'-' `-..-'
## 开始正式上线
[root@java target]# nohup java -jar -server -Xmx1024m -Xms1024m ruoyi-admin.jar & 即使终端关闭,命令也会自动继续执行。
***可以用tail nohup.out观察是否在后台并且刚才操作之后能启动成功
***如果后端若依正常启动,但是网址栏输入nginx代理机的网址后报错,看不到页面,说明/etc/nginx/nginx.conf有问题,在若依代码的官网上复制server模块,并且修改ip和页面网址。---可以先删除原来的nginx.conf,完全复制粘贴官网的内容。
修改内容:
location / {
root /usr/share/nginx/html; 前端静态页面路径
}
location /prod-api/{
proxy_pass http://192.168.52.151:8080/; 代理后端服务器ip
}
## 如果报错链接不上数据库,且数据库配置无问题,将RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml文件中,
master:
url: jdbc:mysql://10.36.192.253:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
将url中useSSL=yes改成useSSL=false,然后重新打包上线
在JDBC连接MySQL数据库时,useSSL参数用于指定是否使用SSL(安全套接层)加密连接。SSL是一种用于在计算机网络上提供安全通信的协议,它可以确保在客户端和服务器之间传输的数据在传输过程中是加密的,从而提供了一定程度的安全性。
当useSSL参数设置为false时,表示不使用SSL加密连接。这通常在开发和测试环境中比较常见,因为在这些环境下,对数据传输的安全性要求可能较低,而且SSL加密会增加一些额外的性能开销。在这种情况下,如果数据库服务器不要求强制的SSL连接,你可以将useSSL参数设置为false来简化连接配置。
但是,在生产环境中,特别是涉及到敏感数据的应用,强烈建议使用SSL加密来保护数据的传输安全性。在生产环境中,通常会将useSSL参数设置为true,以确保数据库连接是安全的。
在你的连接字符串中,useSSL=false表示不使用SSL加密连接。如果你的数据库服务器要求SSL连接,那么你需要将useSSL参数设置为true,以便建立加密连接。