当前位置: 首页 > 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;咱们可以挂个小程序…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...