前后端部署笔记

windows版:

如果傻呗公司让用win电脑部署,类似于我们使用笔记本做局域网服务器,社内使用。

1.安装win版的nginx、mysql、node、jdk等

2.nginx开机自启参考Nginx配置及开机自启动(Windows环境)_nginx开机自启动 windows-CSDN博客
Windows环境Nginx部署springboot+vue前后端分离项目_windows nginx配置前后端分离-CSDN博客

worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {root   /usr/local/YiZhanShi/yizhanshi-ui;try_files $uri $uri/ /index.html;index  index.html index.htm;}location /prod-api/{proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://yizhanshi-gateway:8080/;# 添加 CORS 头add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';# 对预检请求响应if ($request_method = 'OPTIONS') {add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';add_header 'Access-Control-Max-Age' 1728000;add_header 'Content-Type' 'text/plain charset=UTF-8';add_header 'Content-Length' 0;return 204;}}# 避免actuator暴露if ($request_uri ~ "/actuator") {return 403;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

Nginx配置及开机自启动(Windows环境)_nginx开机自启动 windows-CSDN博客

3.java项目开机自启参考
win10环境中设置java开机自启动_java windows 稳定自启-CSDN博客
4.查看相关端口是否被占用就证自启成功
java:    netstat -ano | findstr 8092
nginx:   netstat -ano | findstr 80

linux版:

以docker为例
1.安装相关镜像
dockerfile:

# 基础镜像
FROM  openjdk:8-jre
# author
MAINTAINER hejiale# 挂载目录
VOLUME /usr/local/YiZhanShi
# 创建目录
RUN mkdir -p /usr/local/YiZhanShi
# 指定路径
WORKDIR /usr/local/YiZhanShi
# 复制jar文件到路径
COPY ./jar/bishe-gateway.jar /usr/local/YiZhanShi/bishe-gateway.jar
# 启动网关服务
ENTRYPOINT ["java","-jar","bishe-gateway.jar"]
 # 基础镜像
FROM mysql:8.0.30
# author
MAINTAINER hejiale# 执行sql脚本
ADD ./db/*.sql /docker-entrypoint-initdb.d/# 基础镜像
FROM nacos/nacos-server:v2.3.0
# author
MAINTAINER hejiale# 复制conf文件到路径
COPY ./conf/application.properties /home/nacos/conf/application.properties# 基础镜像
FROM nginx
# author
MAINTAINER ruoyi# 挂载目录
VOLUME /home/ruoyi/projects/yizhanshi-ui
# 创建目录
RUN mkdir -p /home/ruoyi/projects/yizhanshi-ui
# 指定路径
WORKDIR /home/ruoyi/projects/yizhanshi-ui
# 复制conf文件到路径
COPY ./conf/nginx.conf /etc/nginx/nginx.conf
# 复制html文件到路径
COPY ./html/dist /home/ruoyi/projects/yizhanshi-ui# 基础镜像
FROM redis:7.2
# author
MAINTAINER hejiale# 挂载目录
VOLUME /usr/local/YiZhanShi/redis
# 创建目录
RUN mkdir -p /usr/local/YiZhanShi/redis
# 指定路径
WORKDIR /usr/local/YiZhanShi/redis
# 复制conf文件到路径
COPY ./conf/redis.conf /usr/local/YiZhanShi/redis/redis.conf

2.配置docker-compose.yml启动镜像

# 使用时,用容器名称:容器端口号访问
version : '3.8'
services:yizhanshi-nacos:container_name: yizhanshi-nacosimage: nacos/nacos-server:v2.3.0build:context: ./nacosenvironment:- MODE=standalonevolumes:- ./nacos/logs:/home/nacos/logs- ./nacos/conf/application.properties:/home/nacos/conf/application.propertiesports:- "8848:8848"- "9848:9848"- "9849:9849"depends_on:- yizhanshi-mysqlmem_limit: 1000myizhanshi-mysql:container_name: yizhanshi-mysqlimage: mysql:8.0.30build:context: ./mysqlports:- "13306:3306"volumes:- ./mysql/conf/my.cnf:/etc/mysql/my.cnf- ./mysql/logs:/var/logs/mysql- ./mysql/data:/var/lib/mysqlcommand: ['mysqld','--innodb-buffer-pool-size=100M','--character-set-server=utf8mb4','--collation-server=utf8mb4_unicode_ci','--default-time-zone=+8:00','--lower-case-table-names=1']environment:MYSQL_DATABASE: 'yizhanshi-system'MYSQL_ROOT_PASSWORD: Nwafu_176012mem_limit: 700myizhanshi-redis:container_name: yizhanshi-redisimage: redis:7.2build:context: ./redisports:- "16379:6379"volumes:- ./redis/redis.conf:/etc/redis/redis.conf- ./redis/data:/datamem_limit: 400m#  yizhanshi-nginx:
#    container_name: yizhanshi-nginx
#    image: nginx
#    build:
#      context: ./nginx
#    ports:
#      - "80:80"
#    volumes:
#      - ./nginx/html/dist:/home/yizhanshi/projects/yizhanshi-ui
#      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
#      - ./nginx/logs:/var/log/nginx
#      - ./nginx/conf.d:/etc/nginx/conf.d
#    depends_on:
#      - yizhanshi-gateway
#    links:
#      - yizhanshi-gatewayyizhanshi-gateway:container_name: yizhanshi-gatewaybuild:context: ./yizhanshi/gatewaydockerfile: dockerfileports:- "18080:8080"depends_on:- yizhanshi-redislinks:- yizhanshi-redismem_limit: 500myizhanshi-auth:container_name: yizhanshi-authbuild:context: ./yizhanshi/authdockerfile: dockerfileports:- "9200:9200"depends_on:- yizhanshi-redislinks:- yizhanshi-redismem_limit: 500myizhanshi-modules-system:container_name: yizhanshi-modules-systembuild:context: ./yizhanshi/modules/systemdockerfile: dockerfileports:- "9201:9201"depends_on:- yizhanshi-redis- yizhanshi-mysqllinks:- yizhanshi-redis- yizhanshi-mysqlmem_limit: 500myizhanshi-place:container_name: yizhanshi-placebuild:context: ./yizhanshi/modules/placedockerfile: dockerfileports:- "9202:9202"depends_on:- yizhanshi-mysqllinks:- yizhanshi-mysqlmem_limit: 500myizhanshi-course:container_name: yizhanshi-coursebuild:context: ./yizhanshi/modules/coursedockerfile: dockerfileports:- "9203:9203"depends_on:- yizhanshi-mysqllinks:- yizhanshi-mysqlmem_limit: 500myizhanshi-talent:container_name: yizhanshi-talentbuild:context: ./yizhanshi/modules/talentdockerfile: dockerfileports:- "9204:9204"depends_on:- yizhanshi-mysql- yizhanshi-redislinks:- yizhanshi-mysql- yizhanshi-redismem_limit: 500myizhanshi-lost:container_name: yizhanshi-lostbuild:context: ./yizhanshi/modules/lostdockerfile: dockerfileports:- "9205:9205"depends_on:- yizhanshi-mysqllinks:- yizhanshi-mysqlmem_limit: 500myizhanshi-modules-file:container_name: yizhanshi-modules-filebuild:context: ./yizhanshi/modules/filedockerfile: dockerfileports:- "9300:9300"mem_limit: 400mvolumes:- /usr/local/YiZhanShi/FileData:/usr/local/YiZhanShi/FileDatayizhanshi-visual-monitor:container_name: yizhanshi-visual-monitorbuild:context: ./yizhanshi/visual/monitordockerfile: dockerfileports:- "9100:9100"mem_limit: 400m

3.编写deploy.sh脚本或者copy.sh脚本,做自动化部署

copy.sh

#!/bin/sh# 复制项目的文件到对应docker路径,便于一键生成镜像。
usage() {echo "Usage: sh copy.sh"exit 1
}# copy sql
#echo "begin copy sql "
#cp ../sql/yizhanshi-system-202403031520.sql ./mysql/db
#cp ../sql/yizhanshi-nacos-config-202403031522.sql ./mysql/db# copy html
#echo "begin copy html "
#cp -r ../yizhanshi-ui/dist/** ./nginx/html/dist# copy jar
echo "begin copy bishe-gateway "
cp ../target/bishe-gateway.jar ./yizhanshi/gateway/jarecho "begin copy bishe-auth "
cp ../target/bishe-auth.jar ./yizhanshi/auth/jarecho "begin copy yizhanshi-visual "
cp ../target/bishe-visual-monitor.jar  ./yizhanshi/visual/monitor/jarecho "begin copy bishe-modules-system "
cp ../target/bishe-modules-system.jar ./yizhanshi/modules/system/jarecho "begin copy yizhanshi-place "
cp ../target/yizhanshi-place.jar ./yizhanshi/modules/place/jarecho "begin copy yizhanshi-course "
cp ../target/yizhanshi-course.jar ./yizhanshi/modules/course/jarecho "begin copy yizhanshi-talent "
cp ../target/yizhanshi-talent.jar ./yizhanshi/modules/talent/jarecho "begin copy yizhanshi-lost "
cp ../target/yizhanshi-lost.jar ./yizhanshi/modules/lost/jarecho "begin copy bishe-modules-file "
cp ../target/bishe-modules-file.jar ./yizhanshi/modules/file/jar
#
#echo "begin copy yizhanshi-modules-job "
#cp ../yizhanshi-modules/yizhanshi-job/target/yizhanshi-modules-job.jar ./yizhanshi/modules/job/jar
#
#echo "begin copy yizhanshi-modules-gen "
#cp ../yizhanshi-modules/yizhanshi-gen/target/yizhanshi-modules-gen.jar ./yizhanshi/modules/gen/jar

deploy.sh

#!/bin/sh
#删除镜像
#docker rmi docker-yizhanshi-modules-system docker-yizhanshi-talent:latest docker-yizhanshi-auth docker-yizhanshi-lost docker-yizhanshi-place docker-yizhanshi-course:latest  docker-yizhanshi-gateway docker-yizhanshi-modules-file:latest
# 使用说明,用来提示输入参数
usage() {echo "Usage: sh 执行脚本.sh [port|base|modules|stop|rm]"exit 1
}# 开启所需端口
port(){firewall-cmd --add-port=80/tcp --permanentfirewall-cmd --add-port=8080/tcp --permanentfirewall-cmd --add-port=8848/tcp --permanentfirewall-cmd --add-port=9848/tcp --permanentfirewall-cmd --add-port=9849/tcp --permanentfirewall-cmd --add-port=6379/tcp --permanentfirewall-cmd --add-port=3306/tcp --permanentfirewall-cmd --add-port=9100/tcp --permanentfirewall-cmd --add-port=9200/tcp --permanentfirewall-cmd --add-port=9201/tcp --permanentfirewall-cmd --add-port=9202/tcp --permanentfirewall-cmd --add-port=9203/tcp --permanentfirewall-cmd --add-port=9300/tcp --permanentservice firewalld restart
}# 启动基础环境(必须)
base(){docker-compose up -d yizhanshi-mysql yizhanshi-redis yizhanshi-nacos
}# 启动程序模块(必须)
modules(){docker-compose up -d yizhanshi-modules-file yizhanshi-gateway yizhanshi-auth yizhanshi-modules-system yizhanshi-place yizhanshi-course yizhanshi-talent yizhanshi-lost
}
visual(){docker-compose up -d yizhanshi-visual-monitor
}
# 关闭所有环境/模块
stop(){docker-compose stop
}
# 关闭基础环境/模块
stopNacos(){docker-compose stop yizhanshi-nacos
}
# 关闭业务环境/模块
stopBusiness(){docker-compose stop yizhanshi-modules-file yizhanshi-gateway yizhanshi-auth yizhanshi-modules-system yizhanshi-place yizhanshi-lost   yizhanshi-course yizhanshi-talent
}
stopVisual(){docker-compose stop yizhanshi-visual-monitor
}# 删除所有环境/模块
rm(){docker-compose rm
}
# 删除基础环境/模块
rmNacos(){docker-compose rm yizhanshi-nacos
}
# 删除所有环境/模块
rmBusiness(){docker-compose rm yizhanshi-modules-file yizhanshi-gateway yizhanshi-auth yizhanshi-modules-system yizhanshi-place yizhanshi-course yizhanshi-talent yizhanshi-lost  yizhanshi-visual-monitor
}
rmVisual(){docker-compose rm yizhanshi-visual-monitor
}# 根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"port")port
;;
"base")base
;;
"modules")modules
;;
"visual")visual
;;
"stop")stop
;;
"stopNacos")stopNacos
;;
"stopBusiness")stopBusiness
;;
"stopVisual")stopVisual
;;
"rm")rm
;;
"rmNacos")rmNacos
;;
"rmBusiness")rmBusiness
;;
"rmVisual")rmVisual
;;
*)usage
;;
esac

4.运行只需要,先在copy.sh和deploy.sh文件夹下进行命令
sh copy.sh -> sh deploy.sh  base/modules 即可
5.结构:

注意:如果条件不允许前后端局域网内开发,每次都需要部署,每次上传新jar包时,必须先删除镜像(docker rmi yizhanshi-gateway:latest),再进行sh deploy.sh modules之类的命令,重新打镜像。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/14494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UPPAAL使用方法

UPPAAL使用方法 由于刚开始学习时间自动机及其使用方法,对UPPAAL使用不太熟悉,网上能找到的教程很少,摸索了很久终于成功实现一个小例子,所以记录一下详细教程。 这里用到的例子参考【UPPAAL学习笔记】1:基本使用示例…

专业级润滑油,一站式批发服务

要为机械设备提供持久稳定的动力保障吗?选择我们的专业级润滑油,让您的设备运转更顺畅,效率更高。 我们专业从事润滑油批发多年,以优质的产品、合理的价格和完善的服务赢得了广大客户的信赖。无论是汽车、机械还是工业设备&#x…

【Vue3】env环境变量的配置和使用(区分cli和vite)

原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 前言一、env文件二、vue3cli加载env1..env配置2..dev配置(其他环境参考)3.package.json文件4.使用 三、vue3vite加载e…

【html5】03-新表单元素及属性

目录 1 引言 2 智能表单控件-type 3 表单属性 form input 5 答疑--解决required自定义提示信息 1 引言 HTML5引入了一系列新的表单输入类型,如email、url、number、range、date、time、datetime-local、month、week、search、color和tel等。这些新类型增强了表…

FFmpeg源码:bytestream_get_byte函数解析

一、引言 FFmpeg源码中经常使用到bytestream_get_byte这个函数,比如使用FFmpeg对BMP图片进行解析,其源码会调用函数bmp_decode_frame,而该函数内部会通过bytestream_get_byte读取BMP 的header。本文讲解函数bytestream_get_byte的作用和内部…

Spark SQL 中DataFrame DSL的使用

在上一篇文章中已经大致说明了DataFrame APi,下面我们具体介绍DataFrame DSL的使用。DataFrame DSL是一种命令式编写Spark SQL的方式,使用的是一种类sql的风格语法。 文章链接: 一、单词统计案例引入 import org.apache.spark.sql.{DataFrame, SaveMod…

Xinstall助力实现App间直接跳转,提升用户体验

在移动互联网时代,App已成为我们日常生活中不可或缺的一部分。然而,在使用各类App时,我们经常会遇到需要在不同App之间切换的情况,这时如果能够直接跳转,将会大大提升用户体验。而Xinstall正是这样一款能够帮助开发者实…

OpenCV 获取 RTSP 摄像头视频流保存至本地

介绍 Java OpenCV 是一个强大的开源计算机视觉库,它提供了丰富的图像处理和分析功能,越来越多的应用需要使用摄像头来获取实时视频流进行处理和分析。 在 Java 中使用 OpenCV 打开摄像头的基本步骤如下: 确保已经安装了OpenCV库使用 OpenC…

Raylib 绘制自定义字体的一种套路

Raylib 绘制自定义字体是真的难搞。我的需求是程序可以加载多种自定义字体,英文中文的都有。 我调试了很久成功了! 很有用的参考,建议先看一遍: 瞿华:raylib绘制中文内容 个人笔记|Raylib 的字体使用 - …

W801 实现获取天气情况

看了小安派(AiPi-Eyes 天气站)的源码,感觉用W801也可以实现。 一、部分源码 main.c #include "wm_include.h" #include "Lcd_Driver.h"void UserMain(void) {printf("\n user task \n");Lcd_Init();Lcd_Clea…

MySQL主从复制(五):读写分离

一主多从架构主要应用场景:读写分离。读写分离的主要目标是分摊主库的压力。 读写分离架构 读写分离架构一 架构一结构图: 这种结构模式下,一般会把数据库的连接信息放在客户端的连接层,由客户端主动做负载均衡。也就是说由客户…

RabbitMQ 消息队列安装及入门

市面常见消息队列中间件对比 技术名称吞吐量 /IO/并发时效性(类似延迟)消息到达时间可用性可靠性优势应用场景activemq万级高高高简单易学中小型企业、项目rabbitmq万级极高(微秒)高极高生态好(基本什么语言都支持&am…

leetcode124 二叉树中的最大路径和-dp

题目 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root &…

【Crypto】Rabbit

文章目录 一、Rabbit解题感悟 一、Rabbit 题目提示很明显是Rabbit加密,直接解 小小flag,拿下! 解题感悟 提示的太明显了

redis核心面试题二(实战优化)

文章目录 10. redis配置mysql实战优化[重要]11. redis之缓存击穿、缓存穿透、缓存雪崩12. redis实现分布式session 10. redis配置mysql实战优化[重要] // 最初实现OverrideTransactionalpublic Product createProduct(Product product) {productRepo.saveAndFlush(product);je…

MQTT 5.0 报文解析 05:DISCONNECT

欢迎阅读 MQTT 5.0 报文系列 的第五篇文章。在上一篇中,我们已经介绍了 MQTT 5.0 的 PINGREQ 和 PINGRESP 报文。现在,我们将介绍下一个控制报文:DISCONNECT。 在 MQTT 中,客户端和服务端可以在断开网络连接前向对端发送一个 DIS…

手把手教你搭建一个花店小程序商城

如果你是一位花店店主,想要为你的生意搭建一个精美的小程序商城,以下是你将遵循的五个步骤。 步骤1:登录乔拓云平台进入后台 首先,你需要登录乔拓云平台的后台管理页面。你可以在电脑或移动设备上的浏览器中输入乔拓云的官方网站…

2024.5.26 机器学习周报

目录 引言 Abstract 文献阅读 1、题目 2、引言 3、创新点 4、Motivation 5、naive Lite-HRNet 6、Lite-HRNet 7、实验 深度学习 解读SAM(Segment Anything Model) 1、SAM Task 2、SAM Model 2.1、Patch Embedding 2.2、Positiona Embedding 2.3、Transformer …

互联网医院开发:引领智慧医疗新时代

随着科技的迅猛发展和互联网的普及,传统医疗模式正在迎来一场深刻的变革。互联网医院的崛起,打破了时间和空间的限制,为患者和医疗机构带来了更加便捷、高效、安全的医疗服务体验。本文将从技术角度深入探讨互联网医院的开发,包括…

多线程(八)

一、wait和notify 等待 通知 机制 和join的用途类似,多个线程之间随机调度,引入 wait notify 就是为了能够从应用层面上,干预到多个不同线程代码的执行顺序.( 这里说的干预,不是影响系统的线程调度策略 内核里的线程调度,仍然是无序的. 相当于是在应用程序…