线上部署面试蛙

线上部署面试蛙

1.核心部署

一 本地准备

  1. 修改代码:去掉es、sentinel、hotkey第三方代码,保证核心代码能够线上运行
  2. 修改 application-prod.yml ,主要配置线上mysql、redis信息
  3. maven打包
  4. 上传jar包到宝塔

二 宝塔部署-后端

  1. 添加项目启动命令:(等待半分钟后刷新页面查看是否显示端口)
 --server.port=8102 --spring.profiles.active=prod
  1. nginx 转发:
  • 在php项目新建,域名是公网ip,目录是mianshiwa
  • php版本必须是80
  • 其他默认
  1. php项目创建后,在其nginx添加配置:(用于访问api路径打头)
    location /api {proxy_pass  http://127.0.0.1:8102;proxy_set_header Host $proxy_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_buffering off;proxy_set_header Connection "";}
  1. 将nginx默认静态配置注释:
  # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$# {#     expires      30d;#     error_log /dev/null;#     access_log /dev/null;# }# location ~ .*\.(js|css)?$# {#     expires      12h;#     error_log /dev/null;#     access_log /dev/null;# }
  1. 测试nginx转发是否成功,如果成功,则能访问后端swagger界面:
  • http://101.35.49.226/api/doc.html

三 宝塔部署-前端

  1. 修改前端代码:request.js
// 创建 Axios 示例
// 区分开发和生产环境
const DEV_BASE_URL = "http://localhost:8102";
const PROD_BASE_URL = "http://101.35.49.226";
const myAxios = axios.create({baseURL: PROD_BASE_URL,timeout: 10000,withCredentials: true,// cookie 自动携带
});
  1. 修改next.config.mjs,next单机部署
/** @type {import('next').NextConfig} */
const nextConfig = {output: "standalone",
};export default nextConfig;
  1. build 前端项目,生成

注意:如果有报错,可以直接一键忽略:在next.config.mjs添加以下内容

/** @type {import('next').NextConfig} */
const nextConfig = {output: "standalone",typescript: {// !! WARN !!// Dangerously allow production builds to successfully complete even if// your project has type errors.// !! WARN !!ignoreBuildErrors: true,},
};export default nextConfig;
  1. build成功效果:(有个小bug,○代表静态内容,如果管理员修改题库图片,并不会修改首页的图片显示)
Route (app)                                       Size     First Load JS
┌ ○ /                                             6.22 kB         277 kB
├ ○ /_not-found                                   883 B          88.6 kB
├ ○ /admin/bank                                   3.13 kB         681 kB
├ ○ /admin/question                               4.13 kB         874 kB
├ ○ /admin/user                                   2.57 kB         681 kB
├ ƒ /bank/[questionBankId]                        664 B           279 kB
├ ƒ /bank/[questionBankId]/question/[questionId]  4.47 kB         456 kB
├ ○ /banks                                        2.42 kB         270 kB
├ ƒ /question/[questionId]                        1.44 kB         437 kB
├ ƒ /questions                                    3.69 kB         674 kB
├ ○ /user/center                                  338 kB          588 kB
├ ○ /user/login                                   1.78 kB         513 kB
└ ○ /user/register                                1.52 kB         504 kB
+ First Load JS shared by all                     87.7 kB├ chunks/7023-357c18e1abddc78a.js               31.7 kB├ chunks/fd9d1056-6091cd8ebb63e356.js           53.7 kB└ other shared chunks (total)                   2.36 kB○  (Static)   prerendered as static content
ƒ  (Dynamic)  server-rendered on demand
  1. 修第一个bug:
// 强制主页动态渲染
export const dynamic = 'force-dynamic';
  1. 修改打包后的文件位置
  • 在 .next 目录下会生成 standalone 目录,该目录就是可以独立部署的前端包。但是必须按照如下模式组织目录,一定不能有错!
    1. 将项目根目录下的 public 目录移动到 .next/standalone 内
    2. 将 .next/static 目录移动到 .next/standalone/.next 内
  1. 将standalone里的文件都压缩并复制到宝塔
  2. 上传到服务器后,添加 Node 项目。注意修改启动选项(start 或者自定义命令 node server.js)和项目端口(3000)
  3. 修改 Nginx 配置,访问前端资源时,反向代理到 Node.js 服务:
location / {proxy_pass  http://127.0.0.1:3000;proxy_set_header Host $proxy_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_buffering off;proxy_set_header Connection "";
}
  1. 测试:http://101.35.49.226/

至此,已经部署好一个基础的核心面试蛙项目,但是还未集成es分词检索、sentinel流量控制、hotkey热点检测

2.es部署

代码接口:题目搜索接口、ES 定时同步任务

修改代码

安装es

开放端口

测试es

后台运行:

nohup ./bin/elasticsearch > elasticsearch.log 2>&1 &

安装kibana

安装ik 分词器:

bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.17.24

重启es

测试ik

bug:打开题目详情页的任意一道题都需要登陆

4

3.sentinel部署

4.hotKey部署


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

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

相关文章

uBlocklist屏蔽垃圾搜索结果

近年来特别是 Google 的中文搜索结果体验越来越差,出现了越来越多「不知所谓」的网站,这些网站通过机器翻译、直接复制的方式「拼接」而成一个网站占据了大量的搜索结果,这类网站就是——「内容牧场」。 什么是内容牧场 内容农场(或内容工厂,英文名为 content farm)是指生…

正则表达式如何匹配中文

正则表达式如何匹配中文\w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下 匹配中文字符的正则表达式:[\u4e00-\u9fa5]或许你也需要匹配双字节字符,所谓“双字节字符”就是长度是两个字节(byte)的字符,比如“嗨”、“!”、“。”,汉字及中文标…

windows下电脑自定义磁盘图标,u盘图标,文件夹图标

闲言 更改图标要确定有ico(icon)格式图片文件, 文件比例1:1, 一般像素大小比例推荐128:128 确保文件后缀有显示目录闲言寻找或制作ico图片直接下载网络图片制作ico文件在线制作本地制作ico磁盘/U盘图标更改文件夹图标更改 寻找或制作ico图片 直接下载网络图片 这里推荐阿里巴巴…

Macbook M1下安装elasticsearch

一、下载安装包(Kibana 的版本需要和 Elasticsearch 的版本一致。这是官方支持的配置。) 地址分别为:ElasticSearch:https://www.elastic.co/cn/downloads/elasticsearch kibana:https://www.elastic.co/cn/downloads/kibana对于Mac M1芯片基于ARM架构应该选择Aarch64(另…

博客园sakura主题只显示每天一篇或者显示不完随笔bug的修复

关于主题只显示每天第一个博文的的bug 问题 在布置sakura博客园主题的时候,发现这个主题只会显示每一天发布的博文中最晚发布的,其他的就不发了,很奇怪。去去翻了这个主题作者的博文也说了有这bug,但由于这个主题一直没更新,所以也一直没修复。因为比较喜欢这个主题,也抱…

element Plus 设置主题背景色

其主要通过给html动态的添加一个dark类。 主要要通过dom获取html标签,然后给html标签设置className 需要在main.ts中引入dark所在的css文件:具体可以参考element Plus的官网

基于ACO蚁群优化的VRPSD问题求解matlab仿真,输出规划路径结果和满载率

1.程序功能描述 基于ACO蚁群优化的VRPSD问题求解matlab仿真,输出ACO优化的收敛曲线,规划路径结果和每一条路径的满载率。 2.测试软件版本以及运行结果展示MATLAB2022a版本运行 3.核心程序%搜索 for i=1:Iteration iis_best=0; for j=1:Npop%蚂蚁搜索一次Ants …

六自由度Stewart控制系统matlab仿真,带GUI界面

1.课题概述六自由度Stewart平台控制系统是一种高精度、高稳定性的运动模拟装置,广泛应用于飞行模拟、汽车驾驶模拟、虚拟现实、精密定位等领域。其工作原理基于Stewart机构(也称为并联机构)的设计理念,通过六个独立的线性致动器(通常为液压缸或电动推杆)连接固定基座与移…

20241106-语音视频转文字的测试及其价格

一、绘影Ai字幕价格 个人专业版本60元, 商用大约一个120元,支持批量。 二、手机app 讯飞语音、语音转文字等 讯飞听见迅捷转语音 https://www.bilibili.com/read/cv21023516/ 功能 价格 视频、语音转文字的原理 涉及的模型 感悟: 我使用33字幕本地识别,实在太废时间了。我…

javascript模块 (Module) 简介

https://blog.csdn.net/chehec2010/article/details/119804381随着ES6的出现,js模块已经成为正式的标准了。曾经为了解决js模块问题而发展起来的民间秘籍,requireJs(AMD)、SeaJs(CMD)、Node(CommonJs),已经或者不久的将来会成为历史。了解历史也是很重要的,因为正式标准就是…

11.6虎牙客户端一面

1.自我介绍 2.共享屏幕看代码 ​ 类内不能用auto推导成员变量类型 ​ 类内的成员函数调用应该用作用域 3.struct和class区别 相同点两者都拥有成员函数、公有和私有部分 任何class能完成的工作,struct同样能完成不同点如果不指定,struct默认公有,class默认私有 class默认pri…

helm-v3-新的功能

helm-v3-新的功能 Helm 是什么? Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建管理本地或者远程的Chart仓库。 Helm 解决什么痛点?如何统一管理、配置和更新分散的k8s yaml资源文件 如何分发和复用一套应用模板 如何将应…