偌依 项目部署及上线步骤
准备实验环境,准备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 #需修改# 端口,默认为6379port: 6379# 密码password:
2.修改mysql
[root@nginx-server resources]# vim application-druid.yml
# 数据源配置
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.cj.jdbc.Driverdruid:# 主库数据源master:url: jdbc:mysql://192.168.2.65:3306/(ry)?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull(&useSSL=false&)serverTimezone=GMT%2B8username: rootpassword: 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
相关文章:
偌依 项目部署及上线步骤
准备实验环境,准备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 [rootweb-nginx ~]…...
PHP特性知识点扫盲 - 上篇
概述 之前在分析thinkphp源码的时候,对依赖注入等等php高级的特性一直想做一个梳理和总结,一直没有时间,好不容易抽一点时间对技术的盲点做一个扫盲和总结。 特性 1.命名空间 命名空间是在PHP5.3中引入,是一个很重要的工具&am…...

Docker一键极速安装Nacos,并配置数据库!
1 部署方式 1.1 DockerHub javaedgeJavaEdgedeMac-mini ~ % docker run --name nacos \ -e MODEstandalone \ -e JVM_XMS128m \ -e JVM_XMX128m \ -e JVM_XMN64m \ -e JVM_MS64m \ -e JVM_MMS64m \ -p 8848:8848 \ -d nacos/nacos-server:v2.2.3 a624c64a1a25ad2d15908a67316d…...

交换机04_远程连接
通过远程管理方式连接交换机 1、telnet简介 telnet 是应用层协议 基于传输层TCP协议的,默认端口:23 采用的是明文密码方式 不是很安全,一般用于内网管理。 2、ssh协议简介 ssh 是应用层的协议,基于传输层的TCP协议&#x…...
ES6定义一个类(函数内部定义属性,,原型定义方法 ), 实现继承?
ES6中使用class关键字定义一个类,使用extends关键字实现继承。下面是一个示例: class Animal {constructor(name) {this.name name;}sayHello() {console.log(Hello, my name is ${this.name});} }class Dog extends Animal {constructor(name, breed)…...

使用 Process Explorer 和 Windbg 排查软件线程堵塞案例分享
目录 1、问题说明 2、线程堵塞的可能原因分析 3、使用Windbg和Process Explorer确定线程中发生了死循环 4、根据Windbg中显示的函数调用堆栈去查看源码,找到问题 4.1、在Windbg定位发生死循环的函数的方法 4.2、在Windbg中查看变量的值去辅助分析 4.3、是循环…...

“智慧”千里眼助力水泵站
泵站是为水提供势能和压能,解决无自流条件下的排灌、供水和水资源调配问题的唯一动力来源,在工农业用水、防洪、排涝和抗旱减灾等方面发挥着重要作用。一旦出现异常,对经济生产将造成难以估量的损失,给水利安全管理造成负担。因此…...

C++多态性——(5)运算符重载(第二节)
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝 身先才能率人,律己才能服人…...

ES -极客学习
Elasticsearch 简介及其发展历史 起源 Lucene 于 Java 语言开发的搜索引擎库类创建于 1999 年,2005 年成为 Apache 顶级开源项目Lucene 具有高性能、易扩展的优点Lucene 的局限性 只能基于 Java 语言开发类库的接口学习曲线陡峭原生并不支持水平扩展原生并不支持水…...

【大厂秘籍】系列 - Java多线程面试题
Java多线程面试题 友情提示,看完此文,在Java多线程这块,基本上可以吊打面试官了 线程和进程的区别 进程是资源分配的最小单位,线程是CPU调度的最小单位 线程是进程的子集,一个进程可以有很多线程,每条线…...
vue实现画笔回放,canvas转视频播放功能
示例图: 一、vue2版本 <template><div class"canvas-video"><canvasref"myCanvasByVideo"class"myCanvas"id"myCanvasByVideo":width"width":height"height"></canvas><d…...

Docker中镜像的相关操作
1.辅助操作 docker version:用查看docker客户端引擎和server端引擎版本信息。 docker info:用来查看docker引擎的详细信息。 docker --help:用来查看帮助信息。 2.镜像Image docker images:查看当前本地仓库中存在哪些镜像。 …...

[python]python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频
当电脑没有立体声混音导致Python写代码无法使用pyaudio进行录制系统声音怎么办?查阅资料和安装驱动等方法都不行,难道没办法了吗?那为什么电脑其他软件可以做到呢?因此研究了一下pyaudio在没有立体声混音情况下确实无法录制声音&a…...

使用echarts的bmap配置项绘制区域轮廓遮罩
示例图 代码 <template><div id"map" style"width: 100%; height: 100vh"></div> </template><script> import * as echarts from "echarts"; import "echarts/extension/bmap/bmap"; export default…...
第3章 【课后习题】(完整版)
【3.18】写出下面程序的运行结果 //3.18写出下面程序的运行结果 #include <iostream> using namespace std; class test{public:test();~test() {};private:int i; }; test::test() {i25;for(int ctr0;ctr<10;ctr){cout<<"Counting at "<<ctr…...

redis安装与配置
目录 1. 切换到 root 用户 2. 搜索安装包 3. 安装 redis 4. 查看 redis 是否正常存在 5. 修改ip 6. 重新启动服务器 7. 连接服务器 1. 切换到 root 用户 通过 su 命令切换到 root 用户。 2. 搜索安装包 apt search redis 这里安装的是下面的版本: 3. 安装 …...
kotlin first/last/indexOf/elementAt
kotlin 中 first 是取集合元素中第一个元素 last 是取集合元素中最后一个元素 indexOf 根据元素寻找下标,默认是第一个 elementAt 根据下标找元素 下面写一个demo 说明下他们几个的使用 val list listOf("A", "D", "A", "…...
计算机网络——网络中要解决的问题
1. 从网络管理的角度看 1.1 配置管理 追踪所有部署的硬件和软件资源,包括设备配置和软件版本。 1.2 故障管理 监控设备的运行状态,以确保所有组件都正常工作,以及快速响应和修复任何故障。 1.3 计费管理 监控资源消耗并进行计费…...

初识STL
目录 💡STL 💡STL六大组件 💡三大组件介绍 💡容器 💡算法 💡迭代器 💡示例 💡STL C STL(标准模板库)是一套功能强大的 C 模板类,提供了…...

程序员副业之无人直播助眠
介绍和概览 大家好,我是小黑,本文给大家介绍一个比较轻松简单的副业,无人直播助眠副业。 这个项目的核心就是通过直播一些助眠素材来赚钱。比如你可以放一些舒缓的雨声之类的,吸引观众进来。然后,咱们可以挂个小程序…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...