首页 > 其他分享 >线上部署面试蛙

线上部署面试蛙

时间:2024-11-06 22:57:05浏览次数:4  
标签:kB set header 部署 next 面试 proxy 线上

线上部署面试蛙

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界面:

三 宝塔部署-前端

  1. 修改前端代码:request.js
// 创建 Axios 示例
// 区分开发和生产环境
const DEV_BASE_URL = "http://localhost:8102";
const PROD_BASE_URL = "http://线上ip";
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://线上ip

至此,已经部署好一个基础的核心面试蛙项目,但是还未集成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部署


标签:kB,set,header,部署,next,面试,proxy,线上
From: https://www.cnblogs.com/container-simple/p/18531237

相关文章

  • 常见的Kubernetes面试题总结
    常见的Kubernetes面试题总结1、简述etcd及其特点etcd是CoreOS团队发起的开源项目,是一个管理配置信息和服务发现(servicediscovery)的项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于Go语言实现。特点:简单:支持REST风格的HTTP+JSONAPI安全:支持HTTPS方式的访问......
  • 基于微信小程序的智慧停车系统设计与实现(源码+springboot+uinapp+部署文档+讲解等)
    收藏关注不迷路!!......
  • 3分钟部署生产级k8s集群
    3分钟部署生产级k8s集群什么是sealos?sealos:sealos是一个kubernetes高可用安装工具,一条命令,离线安装,包含所有依赖,内核负载不依赖haproxykeepalived,纯golang开发,99年证书,支持v1.14.9v1.15.6v1.16.3v1.17.0。概览图​​前提条件安装并启动docker,高版本离线包自......
  • 基于Azure DevOps 的 CICD 项目部署(.Net Core)
    使用微软的来进行CICD链接:https://dev.azure.com创建新项目3.创建项目名称4.选择仓库地址5.选择空模板6.创建代理池7.按照以下步骤把代理部署到服务器上8.连接你的服务器9.创建新的文件夹mkdirmyangecdmyagent10.可通过链接下载文件wgethttps://vstsa......
  • Selenium 高频面试题及答案
    ......
  • SpringBoot小说阅读网s8w30--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着互联网技术的普及,网络文学逐渐成为一种重要的文化现象。然而,当前市场上的小说阅读网站大多存在功能单一、用户体验不佳等问......
  • SpringBoot小学生在线数学学习平台m0ncg(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着互联网技术的普及,在线学习已成为教育领域的重要趋势。小学生作为基础教育阶段的重要群体,其数学学习效果直接影响到后续学业......
  • SpringBoot小区垃圾分类系统62nc6(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景随着城市化进程的推进,小区垃圾处理问题日益突出。传统的垃圾处理方式不仅效率低下,而且对环境造成了严重污染。垃圾分类作为一种有效的......
  • 计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、AR
    文章目录一、TCP/IP五层模型(重要)二、应用层常见的协议三、TCP与UDP3.1TCP、UDP的区别(重要)3.2运行于TCP、UDP上的协议3.3TCP的三次握手、四次挥手3.3.1TCP的三次握手3.3.2TCP的四次挥手3.3.3随机生成序列号的原因四、TCP传输可靠性保障4.1保证传输的......
  • 来自蚂蚁数据研发一面的SQL面试题
    来自蚂蚁数据研发一面:有一张用户贷款信息表dwd_trd_loan_tb_dd,包含uid(用户id)、amt(贷款金额)、ovd_days(逾期天数)、dt(时间分区)以及逾期等级配置表dim_ovd_config_dd,包含ovd_days(逾期天数),user_level(用户风险等级)注意:示例如下,当ovd_days=1且user_level=1,表示用户逾期天数<=1时,用户......