若依Linux与Docker集群部署
若依Linux集群部署
- 1. 若依
- 2.MYSQL Linux环境安装
- 2.1 MYSQL数据库部署和安装
- 2.2 解压MYSQL安装包
- 2.3 创建MYSQL⽤户和⽤户组
- 2.4 修改MYSQL⽬录的归属⽤户
- 2.5 准备MYSQL的配置⽂件
- 2.6 正式开始安装MYSQL
- 2.7 复制启动脚本到资源⽬录
- 2.8 设置MYSQL系统服务并开启⾃启
- 2.9 启动MYSQLD
- 2.10 将 MYSQL 的 BIN ⽬录加⼊ PATH 环境变量
- 2.11 ⾸次登陆MYSQL
- 2.12 设置远程主机登录
- 2.2 Redis部署
- 2.2.1 查看REDIS服务启动情况
- 2.2.2 设置允许远程连接
- 2.2.2 设置访问密码
- 3. 代码部分
- 3.1 本地调通
- 4. Linux小集群部署
- 4.1 前段代码(华为云)
- 4.2 后端代码(天翼云、腾讯云)
- n.Docker部署(todo)
- 3.1 Docker安装Mysql
- 3.2 录制快照
- 附录
1. 若依
- 若依前后端分离项目地址:https://gitee.com/y_project/RuoYi-Vue
- 若依Linux集群部署课程
- 若依官网
2.MYSQL Linux环境安装
2.1 MYSQL数据库部署和安装
这⾥下载的是 mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
安装包,并将其直接放在了 root⽬录下
卸载系统⾃带的MARIADB(如果有)
如果系统之前⾃带 Mariadb
,可以先卸载之。
⾸先查询已安装的 Mariadb
安装包:
rpm -qa|grep mariadb
将其均卸载之:
yum -y remove mariadb-server-5.5.56-2.el7.x86_64
yum -y remove mariadb-5.5.56-2.el7.x86_64
yum -y remove mariadb-devel-5.5.56-2.el7.x86_64
yum -y remove mariadb-libs-5.5.56-2.el7.x86_64
这里我使用的是mac系统安装的虚拟机,所以命令有所不一样
2.2 解压MYSQL安装包
将上⾯准备好的 MySQL
安装包解压到 /usr/local/
⽬录,并重命名为 mysql
tar -zxvf /root/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ mv mysql-5.7.30-linux-glibc2.12-x86_64 mysql
2.3 创建MYSQL⽤户和⽤户组
groupadd mysql
useradd -g mysql mysql
同时新建 /usr/local/mysql/data ⽬录,后续备⽤
2.4 修改MYSQL⽬录的归属⽤户
[root@localhost mysql]# chown -R mysql:mysql ./
2.5 准备MYSQL的配置⽂件
在 /etc
⽬录下新建 my.cnf
⽂件
写⼊如下简化配置:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装⽬录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放⽬录
datadir=/usr/local/mysql/data
# 允许最⼤连接数
max_connections=200
# 服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
同时使⽤如下命令创建 /var/lib/mysql
⽬录,并修改权限:
mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
2.6 正式开始安装MYSQL
执⾏如下命令正式开始安装:
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
注意:记住上⾯打印出来的 root 的密码,后⾯⾸次登陆需要使⽤
这里因为我需要aarch结构的文件才能执行,M系列芯片不能运行x86-64
得Mysql bin所以后续我将用Docker来实现
2.7 复制启动脚本到资源⽬录
执⾏如下命令复制:
[root@localhost mysql]# cp ./support-files/mysql.server
/etc/init.d/mysqld
并修改 /etc/init.d/mysqld
,修改其 basedir 和 datadir 为实际对应⽬录:
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
2.8 设置MYSQL系统服务并开启⾃启
⾸先增加 mysqld 服务控制脚本执⾏权限:
chmod +x /etc/init.d/mysqld
同时将 mysqld 服务加⼊到系统服务:
chkconfig --add mysqld
最后检查 mysqld 服务是否已经⽣效即可:
chkconfig --list mysqld
这样就表明 mysqld
服务已经⽣效了,在2、3、4、5运⾏级别随系统启动⽽⾃动启动,以后可以直接使⽤ service
命令控制 mysql
的启停。
2.9 启动MYSQLD
直接执⾏:
service mysqld start
2.10 将 MYSQL 的 BIN ⽬录加⼊ PATH 环境变量
这样⽅便以后在任意⽬录上都可以使⽤ mysql 提供的命令。
编辑 ~/.bash_profile ⽂件,在⽂件末尾处追加如下信息:
export PATH=$PATH:/usr/local/mysql/bin
最后执⾏如下命令使环境变量⽣效
source ~/.bash_profile
2.11 ⾸次登陆MYSQL
以 root 账户登录 mysql ,使⽤上⽂安装完成提示的密码进⾏登⼊
mysql -u root -p
接下来修改ROOT账户密码
在mysql的命令⾏执⾏如下命令即可,密码可以换成你想⽤的密码即可:
mysql>alter user user() identified by "111111";
mysql>flush privileges;
2.12 设置远程主机登录
mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;
2.2 Redis部署
这⾥下载的是 redis-5.0.8.tar.gz
安装包,并将其直接放在了 root ⽬录下
解压安装包
cd /usr/local/
mkdir redis
cd redis
将 Redis 安装包解压到 /usr/local/redis
中即可
[root@localhost redis]# tar zxvf /root/redis-5.0.8.tar.gz -C ./
解压完之后, /usr/local/redis
⽬录中会出现⼀个 redis-5.0.8 的⽬录
编译并安装
cd redis-5.0.8/
make && make install
将 REDIS 安装为系统服务并后台启动
进⼊ utils ⽬录,并执⾏如下脚本即可:
[root@localhost redis-5.0.8]# cd utils/
[root@localhost utils]# ./install_server.sh
此处我全部选择的默认配置即可,有需要可以按需定制
2.2.1 查看REDIS服务启动情况
直接执⾏如下命令来查看Redis的启动结果:
systemctl status redis_6379.service
启动REDIS客户端并测试
启动⾃带的 redis-cli 客户端,测试通过:
但是此时只能在本地访问,⽆法远程连接,因此还需要做部分设置
2.2.2 设置允许远程连接
编辑 redis 配置⽂件
vim /etc/redis/6379.conf
将 bind 127.0.0.1 修改为 0.0.0.0
然后重启 Redis 服务即可:
systemctl restart redis_6379.service
2.2.2 设置访问密码
编辑 redis
配置⽂件
vim /etc/redis/6379.conf
找到如下内容:
#requirepass foobared
去掉注释,将 foobared 修改为⾃⼰想要的密码,保存即可。
requirepass codesheep
保存,重启 Redis 服务即可
systemctl restart redis_6379.service
这样后续的访问需要先输⼊密码认证通过⽅可:
3. 代码部分
代码仓库https://gitee.com/y_project/RuoYi-Vue 这是一个若依前后端分离项目。
3.1 本地调通
在本地数据库新建一个库,ry-vue
在图形化界面中执行若依项目中的两个SQL文件
在本地新建一个log文件夹,并将若依的日志指向调整为新建的目录
这里插入一个Homebrew的安装https://zhuanlan.zhihu.com/p/111014448
视频地址:
https://www.bilibili.com/video/BV1634y1t7B9/?share_source=copy_web&vd_source=6888e998072955ff0cd273996df291f5
Homebrew安装命令:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
安装Redis
brew install redis启动redis
brew services start redis查看一下版本(复制如下代码到终端运行):
redis-server查看redis进程
ps axu | grep redis停止redis
brew services stop redis
本地配置好redis、mysql、日志路径之后Redis可以正常启动
4. Linux小集群部署
共计3台服务器,分别是腾讯云、华为云、天翼云三台服务器。其中华为云部署前端以及提供MYSQL与Redis服务。另外两台部署后端服务。
华为云安装redis、MySQL
mysql 初始密码Mr%d;N?ce4<l
这里华为云需要修改入方向规则
代码中需要修改的地方
全部的encode地方加上charset
注意华为云6379接口要开放
4.1 前段代码(华为云)
我把ruoyi-ui的前段代码打包
上传到服务器中
然后在workspace
中解压代码
华为云要安装nginx
并且放开80端口
华为云中修改nginx
文件
重启nginx
之后前段就可以访问了
/usr/local/nginx/sbin/nginx -s reload
4.2 后端代码(天翼云、腾讯云)
因为是SpringBOOT项目内置了Tomcat
直接打jar
包。上图是两种打包方式都可以。第一个图先clean
后package
。
jar
包位置。
这里不打war包了,还要安装tomcat,需要打war包可以看视频(最上面的)
[root@VM-8-7-centos ruoyi]# pwd
/root/workspace/ruoyi[root@VM-8-7-centos ruoyi]# nohup java -jar ruoyi-admin.jar &
虽然前后端都发布了,但是前段的nginx代理还未配置。也就是说前段现在没有访问到后端接口
在华为云中修改了nginx
并重启了nginx
这里腾讯云记得打开8080端口
为了集群部署,我们还是需要修改nginx
,并设置天翼云权重为3,腾讯云的为5
再次将nginx reload一下,当前天翼云的后端服务也运行起来了。
查看天翼云
这里天翼云有个坑,8080端口不备案不开放,我重新换成了8081端口
这里算是部署好了前后端
为了验证效果,以及看一下Nginx转发。当我输入错误验证码时可以看到多次访问的是腾讯服务器因为它的权重更高
n.Docker部署(todo)
Docker请看我的专栏http://t.csdnimg.cn/2rLIs
3.1 Docker安装Mysql
这里我已经安装过mysql了,不熟悉如何Docker安装mysql可以看专栏。
我目前Docker正在run的容器有
此处我发现时间不准确。通过将NTP服务代理为阿里云解决。
[root@node ~]# vim /etc/ntp.conf
[root@node ~]# grep server /etc/ntp.conf
# Use public servers from the pool.ntp.org project.
#server 0.centos.pool.ntp.org iburst
server ntp.aliyun.com iburst
#broadcast 192.168.1.255 autokey # broadcast server
#broadcast 224.0.1.1 autokey # multicast server
#manycastserver 239.255.254.254 # manycast server
3.2 录制快照
附录
1.同步阿里云时间 https://www.cnblogs.com/liulianzhen99/articles/17637056.html
2.Mac 如何安装 Homebrew
3.Homebrew安装以及使用Redis
相关文章:

若依Linux与Docker集群部署
若依Linux集群部署 1. 若依2.MYSQL Linux环境安装2.1 MYSQL数据库部署和安装2.2 解压MYSQL安装包2.3 创建MYSQL⽤户和⽤户组2.4 修改MYSQL⽬录的归属⽤户2.5 准备MYSQL的配置⽂件2.6 正式开始安装MYSQL2.7 复制启动脚本到资源⽬录2.8 设置MYSQL系统服务并开启⾃启2.9 启动MYSQL…...

20.2 设备树中的 platform 驱动编写
一、设备树下的 platform 驱动 platform 驱动框架分为总线、设备和驱动,总线不需要我们去管理,这个是 Linux 内核提供。在有了设备树的前提下,我们只需要实现 platform_driver 即可。 1. 修改 pinctrl-stm32.c 文件 先复习一下 pinctrl 子系…...

C++实现ransac
目录 一、ransac算法原理 1.1、算法概念 1.2、图解 二、c实现ransac 2.1、设置随机样本和离群点 2.2、随机抽取样本 2.3、内点计算 2.4、更新参数 2.2、完整代码 一、ransac算法原理 1.1、算法概念 随机抽样一致性 (RANSAC) 是一种迭代方法,用于根据一组包…...

DNS域名解析服务
1.概述 1.1.产生原因 IP 地址:是互联网上计算机唯一的逻辑地址,通过IP 地址实现不同计算机之间的相互通信,每台联网计算机都需要通过I 地址来互相联系和分别,但由于P 地址是由一串容易混淆的数字串构成,人们很难记忆所有计算机的…...

【milkv】2、mpu6050驱动添加及测试
前言 本章介绍mpu6050的驱动添加以及测试。 其中驱动没有采用sdk提供的驱动,一方面需要配置irq,另一方面可以学习下如何通过ko方式添加驱动。 一、参考文章 驱动及测试文件编译流程: https://community.milkv.io/t/risc-v-milk-v-lsm6ds…...

SpringCloud Alibaba(中):服务熔断降级-Sentinel
Sentinel Sentinel是阿里巴巴开源的分布式系统流量防卫防护组件,主要对分布式系统中的流量进行控制、熔断降级等保护操作。Sentinel的目标是成为互联网级别分布式系统的流量防卫防护组件,它与系统的各个部分集成,保护着系统的入口和出口。 …...

模型的训练专题
训练目标在数学上指定了模型应该如何从训练数据中学习和获取能力。训练基础模型的当前现状涉及特定于模型的目标。我们设想,未来基础模型的训练目标将反映两个变化:从系统证据和评估中得出的原则性选择,以及跨数据源和模式提供丰富、可扩展和…...

深入解析 Azure 机器学习平台:架构与组成部分
Azure机器学习平台是Microsoft Azure提供的一种云上机器学习服务,为开发者和数据科学家提供了一个全面且易于使用的环境来创建、训练、部署和管理机器学习模型。本文将对Azure机器学习平台的基本架构和组成部分进行深入解析,帮助读者全面了解该平台的工作…...

使用百度语音识别技术实现文字转语音的Java应用
探讨如何使用百度语音识别技术将文字转换为语音的Java应用。百度语音识别技术是一种强大的语音识别服务,可以将输入的文字转换为自然流畅的语音输出。我们将使用Java编程语言来实现这个应用,并提供相应的源代码。 首先,我们需要准备一些前提…...

【C#学习】文件操作
文章目录 常见操作拷贝文件检测文件夹是否存在并创建判断文件是否存在删除文件夹下的所有文件保留文件夹获取指定目录下的所有文件名删除 常见操作 拷贝文件 System.IO.File.Copy(sourcePath, targetPath); 检测文件夹是否存在并创建 //if directory not exit,then establis…...

Chrome版本对应Selenium版本
1.获得浏览器版本号和驱动 浏览器版本: 119.0.6045.124 浏览器驱动版本: 119.0.6043.1 / 120.0.6051.0 访问 https://vikyd.github.io/download-chromium-history-version/ 2. 安装selenium pip install selenium4.1.1 -i http://pypi.mirrors.ustc.edu.cn/simple/ --trusted…...

Day29力扣打卡
打卡记录 美丽塔 II(前后缀分解 单调栈) 链接 大佬的题解 class Solution:def maximumSumOfHeights(self, a: List[int]) -> int:n len(a)suf [0] * (n 1)st [n] # 哨兵s 0for i in range(n - 1, -1, -1):x a[i]while len(st) > 1 and …...

java源码用到的设计模式
Java 中有许多常用的设计模式,它们是为了解决特定问题而被反复使用和验证的经验总结。以下是一些常见的 Java 设计模式: 创建型模式 工厂模式 (Factory Pattern): 提供一个创建对象的接口,但是由子类决定实例化哪个类。例如:java…...

high perfermance computer usage
简单记一下hpc的使用: hpc就是一些科研机构或者大学建立的服务器中心。我这大学的每一位学生,可以轻松使用hpc批量跑数据,也可以新建自己的server跑一些local data,后者每个学生账号最大是32核512G的运行内存,体验非常…...

51单片机+DS1302设计一个电子钟(LCD1602显示时间)
一、前言 电子钟是一种能够准确显示时间的设备,广泛应用于家庭、办公场所和公共场所,为人们提供了方便和准确的时间信息。本项目设计一个基于51单片机的电子钟,使用DS1302作为RTC时钟芯片,LCD1602作为显示屏,并通过串…...

vue项目中在scss代码中使用data中的变量
尽管在日常开发中,这类情况实际上很少出现。 VUE2: 在HTML中使用时,请确保将cssVars绑定在需要使用CSS变量的元素或该元素的上层元素上。 <template><div :style"cssVars"><div class"test"/></div><…...

uni-app报错“本应用使用HBuilderX x.x.x 或对应的cli版本编译,而手机端SDK版本是x.x.x不匹配的版本可能造成应用异常”
uniapp开发的一个跨平台软件,在安卓模拟器上启动的时候报警告: 官方给的解释:uni-app运行环境版本和编译器版本不一致的问题 - DCloud问答 解决办法有两个 方法一:添加忽略警告的配置 项目根目录下找到 manifest.json…...

[sd_scripts]之train
https://github.com/kohya-ss/sd-scripts/blob/main/docs/train_README-zh.mdhttps://github.com/kohya-ss/sd-scripts/blob/main/docs/train_README-zh.md 支持模型fine-tune,dreambooth,lora,textual inversion。 1.数据准备 在任意多个…...

samba 共享目录write permission deny问题修复 可读取内容但不可修改 删除 新增文件
关于 update/delete/write permission deny问题修复 0.首先在服务器端执行testparm -s ,测试 Samba 配置并显示结果。需确保服务器端参数 read only No ,共享目录有写入权限 一、若配置了允许匿名访问,使用匿名访问来操作smb需要做如下处理…...

UDP主要丢包原因及具体问题分析
一、主要丢包原因 1、接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入…...

647. 回文子串 516.最长回文子序列
647. 回文子串 题目: 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相…...

点云从入门到精通技术详解100篇-双传感器模式的非结构化环境检测与识别
目录 前言 国内外研究现状 可通行区域检测的研究 障碍物检测的研究...

Nginx-反向代理
反向代理 1 语法 server {listen 82; server_name www.liyong.f.com;location ~* .*(css|js|html|images). {proxy_pass http://11.22.19.81:8088; } 上面的示例的意思是: 当访问:http://www.liyong.f.com:82/static/css/OneMap.b728e2e4.css 转发到 …...

Java封装一个根据指定的字段来获取子集的工具类
工具类 ZhLambdaUtils SuppressWarnings("all") public class ZhLambdaUtils {/*** METHOD_NAME*/private static final String METHOD_NAME "writeReplace";/*** 获取到lambda参数的方法名称** param <T> parameter* param function functi…...

【HUST】网安纳米|2023年研究生纳米技术考试参考
目录 1 纳米材料是什么 2 纳米材料的结构特性 3 纳米结构的其他特性 4 纳米结构的检测技术 5 纳米材料的应用 打印建议:PPT彩印(这样重点比较突出),每面12张PPT,简单做一下关键词目录,亲测可以看清。如…...

【移远QuecPython】EC800M物联网开发板的MQTT协议腾讯云数据上报
【移远QuecPython】EC800M物联网开发板的MQTT协议腾讯云数据上报 文章目录 导入库初始化设置MQTT注册回调订阅发布功能开启服务发送消息函数打包调用测试效果附录:列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 导入库 from TenCentYun import TX…...

关灯游戏及扩展
7.8 图形界面应用案例——关灯游戏 题目: [案例]游戏初步——关灯游戏。 关灯游戏是很有意思的益智游戏,玩家通过单击关掉(或打开)一盏灯。如果关(掉(或打开)一个电灯,其周围(上下左右)的电灯也会触及开关,成…...

深度解析:用Python爬虫逆向破解dappradar的URL加密参数(最详细逆向实战教程,小白进阶高手之路)
特别声明:本篇文章仅供学习与研究使用,不得用做任何非法用途,请大家遵守相关法律法规 目录 一、逆向目标二、准备工作三、逆向分析 - 太详细了!3.1 逆向前的一些想法3.1.1 加密字符串属性猜测3.1.2 是否可以手动复制加密API?3.2 XHR断点调试3.3 加密前各参数属性的变化情况…...

论文笔记:AttnMove: History Enhanced Trajectory Recovery via AttentionalNetwork
AAAI 2021 1 intro 1.1 背景 将用户稀疏的轨迹数据恢复至细粒度的轨迹数据是十分重要的恢复稀疏轨迹数据至细粒度轨迹数据是非常困难的 已观察到的用户位置数据十分稀疏,使得未观察到的用户位置存在较多的不确定性真实数据中存在大量噪声,如何有效的挖…...

Django之视图层
目录 一、三板斧的使用 二、JsonReponse序列化类的使用 三、 form表单上传文件 数据准备 数据处理 (1)post请求数据 (2)文件数据获取 四、 FBV与CBV 五、CBV的源码分析 as_view 方法 一、三板斧的使用 HttpResponse 返回字符串类型render 渲染html页面,并…...