vue-element-admin项目部署 nginx动态代理 含Docker部署、 Jenkins构建

news2024/11/24 11:08:57

介绍三种方式:
1.直接部署到nginx中
2.用nginx docker镜像部署
3.使用Jenkins构建

1.直接用nginx部署

vue-element-admin项目下有两个.env文件,.env.production是生产环境的,.env.developpment是开发环境的

在这里插入图片描述在这里插入图片描述

vue-element-admin默认用的是mock数据,如果想调用后台接口(自己要把用户登录、角色、权限之类的写好),在vue.config.js里,大概39行左右,把proxy里的内容改成如下形式:

在这里插入图片描述

  proxy: {
      [process.env.VUE_APP_BASE_API]: {
        target: process.env.SYSTEM_BACKEND_URL,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }
    }

先保证开发环境和后台调通,之后再进行服务器部署。
生产环境打包,执行 npm run build:prod
执行成功后,项目路径下会出现一个dist文件夹

在这里插入图片描述

把dist文件夹上传到nginx服务器,比如放到 /usr/share/static/dist,注意 /usr/share/static/dist就是打包好的dist文件夹,index.html路径是 /usr/share/static/dist/index.html,不要写成 /usr/share/static/dist/dist
nginx.conf代理相关配置如下:

server {
	listen       80;  #端口
	server_name  localhost;
	location / {  #映射前端资源
		root   /usr/share/static/dist;  #静态资源路径,index.html就在这个目录里
		try_files $uri $uri/ @router;
		index  index.html index.htm;
	}
	location @router {
		rewrite ^.*$ /index.html last;
	}
	#后端请求转发,/prod-api/ 对应.env.production里的SYSTEM_BACKEND_URL,注意两端都有/
	location /prod-api/ {  
		proxy_pass http://xxxx:9999/;  #后端接口地址,
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $http_host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header REMOTE-HOST $remote_addr;
	}
}

nginx -s reload 重启nginx,完成部署

2.Nginx Docker镜像

比如使用k8s等容器化部署时,每一个项目单独结合一个nginx制作镜像
再工程中创建Dockerfile和nginx.conf文件
在这里插入图片描述
nginx.conf示例配置如下,具体解释见上一节 直接用nginx部署 的说明


#user  nobody;
worker_processes  1;

error_log  /etc/nginx/access.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /etc/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;
        access_log  /etc/nginx/access.log  main;

        location / {
	          root   /usr/share/static/dist;
	          try_files $uri $uri/ @router;
            index  index.html index.htm;
        }
	      location @router {
            rewrite ^.*$ /index.html last;
        }
        location /prod-api/ {
		        proxy_pass http://xxxx:9999/;
		        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
		        proxy_set_header REMOTE-HOST $remote_addr;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

Dockerfile如下

FROM nginx  
WORKDIR '/xxxx'

COPY build /usr/share/static/build
COPY dist /usr/share/static/dist
COPY nginx.conf /etc/nginx/nginx.conf
RUN touch /etc/nginx/access.log

EXPOSE 80
RUN echo "daemon off;" >> /etc/nginx/nginx.conf

CMD ["nginx", "-c", "/etc/nginx/nginx.conf"]

在这里插入图片描述

在Dockerfile所在路径下执行:
docker build -t testdocker .
构建镜像 -t代表target,testdocker是自定义的镜像名,最后的.代表当前路径

镜像制作完成,启动镜像 端口号和id按实际情况定

3.Jenkins构建

jenkins要先配置NodeJS,在系统管理->全局工具配置
在这里插入图片描述

开始构建项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

git config --global url."https://".insteadOf git://
node -v
npm -v
npm install --registry=https://registry.npm.taobao.org
npm run build:prod
ls /var/jenkins_home/workspace/项目名

#下面可选   
# 删除原有项目镜像
docker rmi xxxx || true
# 打包项目镜像
docker build -t xxxx  .
# 上传项目镜像
docker push xxxxx 

配置完成之后保存,即可构建项目

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

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

相关文章

ChatGPT竞争对手Writer,获得1亿美元融资;面向不同任务微调Llama-2经验总结

🦉 AI新闻 🚀 ChatGPT竞争对手Writer,获得1亿美元融资 摘要:美国生成式AI平台Writer宣布获得1亿美元的B轮融资。Writer提供类似于ChatGPT的功能,主要聚焦在企业领域,提供文本生成、总结摘要、文本纠错等服…

注解实现接口幂等性

一、什么是幂等性? 简单来说,就是对一个接口执行重复的多次请求,与一次请求所产生的结果是相同的,听起来非常容易理解,但要真正的在系统中要始终保持这个目标,是需要很严谨的设计的,在实际的生…

C++ 异常处理学习笔记

一、使用情况 1、数组越界:包括数组索引小于0,或者大于数组长度 2、空指针 可以抛出(throw)各种类型的异常,catch的地方接收就可以

电子产品的老化测试有哪些类型?

一、什么是老化测试?老化测试时,专用老化电路板上的元件将承受等于或高于其额定工作条件的压力,以消除任何在额定寿命之前过早失效的元件。这些测试条件包括温度、电压/电流、工作频率或指定为上限的任何其他测试条件。这些类型的压力测试有时…

java -jar后出现中文乱码

吹牛撒谎是道义上的灭亡,它势必引向政治上的灭亡。列宁 黑窗口执行一个jar包,发现程序运行后打印的日志全部出现中文乱码的情况,现记录一下解决的办法。 网上说dos窗口出现中文乱码有两种情况,一是运行jar包后程序输出的日志出现乱码&#x…

节省十倍代码,精益 Web 开发:Nue JS 的极简之道 | 开源日报 No.34

lodash/lodash Stars: 57.3k License: NOASSERTION lodash 是一个以 UMD 模块形式导出的 Lodash 库。 简化 JavaScript 编程,提供了一系列处理数组、数字、对象和字符串等操作的方法。模块化设计,方便迭代数组、对象和字符串;操作和测试值…

MPLS VPN跨域B

拓扑设计 拓扑介绍 如图,上海分公司与山东分公司之间为保证业务可以互通,需要使用MPLS VPN技术进行连接。且为了使设备减轻压力,只有拓扑中两边的设备需要建立VRF实例,其余设备不可以建立实例。因为网络需要经过联通与移动两个AS域…

2023最新最热五款CRM系统推荐,一文让你明白CRM系统是什么?

本文将为大家讲解:1、CRM是什么;2、CRM系统应该如何玩转?3、CRM实施要注意哪些问题?4、如何选择优质的CRM管理系统?5、2023最新最热五款CRM系统推荐。 一、 CRM是什么 CRM代表客户关系管理(Customer Rela…

sentry安装self-hosted版,前端监控平台

一、下载self-hosted-23.7.2.tar.gz 二、解压 三、cd self-hosted-23.7.2然后执行./install.sh 四、查找python whereis python修改yum配置文件:vim /usr/bin/yum五、修改RUN apt-get update && apt-get install -y --no-install-recommends cron &…

[论文阅读]A ConvNet for the 2020s

摘要 视觉识别的咆哮的20年代开始于ViTs的引入,它很快取代了卷积神经网络,成为最先进的图像分类模型。另一方面,一个原始的ViT在用于一般的比如目标识别和语义分割的计算机视觉任务的时候面临困难。层次Transformer(例如,Swin-Tr…

Vc - Qt - “扩张“的窗口

该示例演示了一个"扩张的窗口"&#xff0c;主窗口的布局为水平布局&#xff0c;内置两个子窗口&#xff0c;采用定时器设置左边窗口的宽度&#xff0c;达到控制"扩张"的目的。 #include <QApplication> #include <QWidget> #include <QHBox…

iTunes无法连接iPhone?五大绝佳方法!

使用苹果手机的用户应该都知道iTunes软件。这是一款多媒体管理中心&#xff0c;用来管理音乐、视频、广播以及备份等数据&#xff0c;能够帮助用户更好地使用苹果手机。 但是有些小伙伴表示很苦恼&#xff1a;“按照软件提示连接电脑后根本没反应&#xff0c;iTunes无法识别手…

Unity WebGL 编译 报错: emcc2: error: ‘*‘ failed: [WinError 2] ϵͳ�Ҳ���ָ�����ļ���解决办法

文章目录 错误日志可能的原因及解决办法:导出路径不能有中文系统名(win)含有中文, 修改环境变量Temp和Tmp, 如下图:真正的原因: 杀毒软件删除了部分wasm相关文件,如: 错误日志 Building Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js failed with output: emc…

9.18号作业

完善登录框 点击登录按钮后&#xff0c;判断账号&#xff08;admin&#xff09;和密码&#xff08;123456&#xff09;是否一致&#xff0c;如果匹配失败&#xff0c;则弹出错误对话框&#xff0c;文本内容“账号密码不匹配&#xff0c;是否重新登录”&#xff0c;给定两个按钮…

Postman应用——Request数据导入导出

文章目录 导入请求数据导出请求数据导出Collection导出Environments 导出所有请求数据导出请求响应数据 Postman可以导入导出Request和Variable变量配置&#xff0c;可以通过文本方式&#xff08;JOSN文本&#xff09;或链接方式进行导入导出。 导入请求数据 可以通过JSON文件…

一键畅享云端ERP:使用Cpolar内网穿透将用友U8 Cloud部署至外网

文章目录 前言1. 用户需求2. Cpolar内网穿透的安装和注册2.1 Cpolar云端设置2.2 Cpolar Web UI本地设置 3. 公网访问测试 前言 用友U8 Cloud是用友公司推出的一款云端ERP解决方案。它以云计算技术为基础&#xff0c;为企业提供全面的企业资源管理解决方案&#xff0c;涵盖了财…

5.1 内存CRC32完整性检测

CRC校验技术是用于检测数据传输或存储过程中是否出现了错误的一种方法&#xff0c;校验算法可以通过计算应用与数据的循环冗余校验&#xff08;CRC&#xff09;检验值来检测任何数据损坏。通过运用本校验技术我们可以实现对特定内存区域以及磁盘文件进行完整性检测&#xff0c;…

无涯教程-JavaScript - POWER函数

描述 POWER函数返回加到幂的数字的输出。 语法 POWER (number, power)争论 Argument描述Required/OptionalNumber 基数。 它可以是任何实数。 RequiredPowerThe exponent to which the base number is raised.Required Notes 可以使用" ^"运算符代替POWER来指示…

【深度学习实验】线性模型(四):使用Pytorch实现线性模型:使用随机梯度下降优化器训练模型

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入库 1. 线性模型linear_model 2. 损失函数loss_function 3. 定义数据 4. 初始化权重和偏置 5. 模型训练 6. 迭代 7. 实验结果 8. 完整代码 一、实验介绍 使用随机梯度下降优化…

【ES6知识】Iterator迭代器与 class类

文章目录 一、Iterator迭代器1.1 基础知识概述1.2 工作原理1.3 Symbol.iterator1.4 Generator函数来实现Symbol.iterator接口 二、ES6 Class 类2.1 概述2.2 ES6中的继承2.3 面向对象应用 - React 一、Iterator迭代器 1.1 基础知识概述 迭代器&#xff08;Iterator&#xff09…