当前位置: 首页 > news >正文

偌依 项目部署及上线步骤

准备实验环境,准备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

相关文章:

偌依 项目部署及上线步骤

准备实验环境&#xff0c;准备3台机器 1.作为前端服务器&#xff0c;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源码的时候&#xff0c;对依赖注入等等php高级的特性一直想做一个梳理和总结&#xff0c;一直没有时间&#xff0c;好不容易抽一点时间对技术的盲点做一个扫盲和总结。 特性 1.命名空间 命名空间是在PHP5.3中引入&#xff0c;是一个很重要的工具&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协议的&#xff0c;默认端口&#xff1a;23 采用的是明文密码方式 不是很安全&#xff0c;一般用于内网管理。 2、ssh协议简介 ssh 是应用层的协议&#xff0c;基于传输层的TCP协议&#x…...

ES6定义一个类(函数内部定义属性,,原型定义方法 ), 实现继承?

ES6中使用class关键字定义一个类&#xff0c;使用extends关键字实现继承。下面是一个示例&#xff1a; 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中显示的函数调用堆栈去查看源码&#xff0c;找到问题 4.1、在Windbg定位发生死循环的函数的方法 4.2、在Windbg中查看变量的值去辅助分析 4.3、是循环…...

“智慧”千里眼助力水泵站

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

C++多态性——(5)运算符重载(第二节)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 身先才能率人&#xff0c;律己才能服人…...

ES -极客学习

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

【大厂秘籍】系列 - Java多线程面试题

Java多线程面试题 友情提示&#xff0c;看完此文&#xff0c;在Java多线程这块&#xff0c;基本上可以吊打面试官了 线程和进程的区别 进程是资源分配的最小单位&#xff0c;线程是CPU调度的最小单位 线程是进程的子集&#xff0c;一个进程可以有很多线程&#xff0c;每条线…...

vue实现画笔回放,canvas转视频播放功能

示例图&#xff1a; 一、vue2版本 <template><div class"canvas-video"><canvasref"myCanvasByVideo"class"myCanvas"id"myCanvasByVideo":width"width":height"height"></canvas><d…...

Docker中镜像的相关操作

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

[python]python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频

当电脑没有立体声混音导致Python写代码无法使用pyaudio进行录制系统声音怎么办&#xff1f;查阅资料和安装驱动等方法都不行&#xff0c;难道没办法了吗&#xff1f;那为什么电脑其他软件可以做到呢&#xff1f;因此研究了一下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 这里安装的是下面的版本&#xff1a; 3. 安装 …...

kotlin first/last/indexOf/elementAt

kotlin 中 first 是取集合元素中第一个元素 last 是取集合元素中最后一个元素 indexOf 根据元素寻找下标&#xff0c;默认是第一个 elementAt 根据下标找元素 下面写一个demo 说明下他们几个的使用 val list listOf("A", "D", "A", "…...

计算机网络——网络中要解决的问题

1. 从网络管理的角度看 1.1 配置管理 追踪所有部署的硬件和软件资源&#xff0c;包括设备配置和软件版本。 1.2 故障管理​​​​​ 监控设备的运行状态&#xff0c;以确保所有组件都正常工作&#xff0c;以及快速响应和修复任何故障。 1.3 计费管理 监控资源消耗并进行计费…...

初识STL

目录 ​&#x1f4a1;STL &#x1f4a1;STL六大组件 &#x1f4a1;三大组件介绍 &#x1f4a1;容器 &#x1f4a1;算法 &#x1f4a1;迭代器 &#x1f4a1;示例 &#x1f4a1;STL C STL&#xff08;标准模板库&#xff09;是一套功能强大的 C 模板类&#xff0c;提供了…...

程序员副业之无人直播助眠

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

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...