服务器部署结构

1、服务器访问直接访问NGINX

2、静态资源访问, nginx读取本地文件夹

3、API接口路由, nginx把以api开头的访问都路由到业务逻辑服务器。

nginx配置

   client_max_body_size 100m; # 上传文件大小限制
server {
listen 80;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; # 静态资源位置 (这里的dist文件夹,即vue打包的默认文件名)
location / {
root c:/nginx/dist;
index index.html index.htm;
} # 业务逻辑路由到真实服务器
location /api {
proxy_pass http://192.168.0.161:40001;
}
# .....
}

启动

cd /usr/sbin

./nginx

重启

更改配置重启nginx

kill -HUP 主进程号或进程号文件路径

或者使用

cd /usr/sbin

./nginx -s reload

Vue资源打包

axios 跨域访问问题

跨域问题分两种情况, 分别是开发者模式与生产环境跨域访问。

所谓开发者模式是指, 直接用npm run dev 运行vue程序, 包含了各种调试信息。

生产者环境是指, 通过npm run build把vue项目程序进行打包, 生成一个干净的发布内容。

1、在进行跨域访问时, 我们用axios进行访问服务器如下

this.$axios.post(process.env.API_HOST + '/api/app/download', {id : id}).then((result) => {
console.log(result)
}).catch((err) => {
console.log(err);
});

这里POST的路径为process.env.API_HOST + '/api/app/download'的绝对路径。

2、在开发者模型式下的配置

在config/dev.env.js文件中,添加如下内容

module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
API_HOST:'""'
})

在config/index.js文件中,添加路由表proxyTable

module.exports = {
dev: {
// .....这里省略
proxyTable: {
'/api': {
target: "http://localhost:40001", // 这里需要访问的跨域服务器地址
changeOrigin: true
}
},
//....这里省略
}
}

这样开者模式下的配置就完成了

3、生产环境下的配置

在config/prod.env.js文件中,添加如下内容

module.exports = {
NODE_ENV: '"production"',
API_HOST:' "http://localhost" '
}

API_HOST就是指定需要跨域访问的服务器。

然后,在config/index.js文件中, 添加和编辑打包配置信息, 找到build字段,添加如下内容

  build: {
env: require('./prod.env'),
assetsPublicPath: './',
productionSourceMap: false,
...
}

这样就可以使用npm run build进行打包vue项目。默认输出到../dist这个位置。 前面的nginx静态资就是这个文件夹内容。

Spring Cloud打包

1、打包 jar文件包

在pom.xml文件中,指定打包类型, 即添加jar

    <groupId>com.example</groupId>
<artifactId>svc-gateway</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

执行命令mvn build打包, 生产包,如上配置生成svc-gateway-0.0.1-SNAPSHOT.jar

添加配置,取消tomcat的依赖, 告诉pom.xml配置已经有了。

在pom.xml文件内容中添加以下内容

        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>

注意

有时打包找到不依赖module, 此时需要把根项目clean + install.

2、运行程序

java -jar svc-gateway-0.0.1-SNAPSHOT.jar --server.port=40001

更换发布端口为90

在config/prod.env.js文件中,添加如下内容

module.exports = {
NODE_ENV: '"production"',
API_HOST: '"http://localhost:90"'
}

nginx配置端口

   server {
listen 90;

然后,通过npm run build来打包vue重新发布即可。

总结

访问请来了, 如果是http://localhost/api/xxxxx,就会被nginx路由到配置poxyPass对应的位置;否则会直接指定的location下面打找文件。

发布spring cloud + vue项目的更多相关文章

  1. 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚

    新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...

  2. 优秀的Spring Cloud开源项目整理推荐

    无论是对于初学者,还是有一定工作经验的程序员来讲,Spring Cloud开源项目都是一笔宝贵的财富.下面给大家整理了十个优秀的开源项目,分别是spring-cloud-examples.spaasc ...

  3. Spring Cloud Netflix项目进入维护模式

    任何项目都有其生命周期,Spring Could Netflix也不例外,官宣已进入维护模式,如果在新项目开始考虑技术选型时要考虑到这点风险,并考虑绕道的可能性. 原创: itmuch  IT牧场 这 ...

  4. 搭建一套ASP.NET Core+Nacos+Spring Cloud Gateway项目

    前言     伴随着随着微服务概念的不断盛行,与之对应的各种解决方案也层出不穷.这毕竟是一个信息大爆发的时代,各种编程语言大行其道,各有各的优势.但是有一点未曾改变,那就是他们服务的方式,工作的时候各 ...

  5. 【Spring Cloud + Vue 有来商城】研发小组开发规范全方位梳理

    项目演示 后端 Spring Cloud实战 | 第一篇:Windows搭建Nacos服务 Spring Cloud实战 | 第二篇:Spring Cloud整合Nacos实现注册中心 Spring ...

  6. 创建Spring Cloud聚合项目

    使用maven创建单一项目的时候通常用不到聚合项目,创建spring cloud项目时候,由于下面都是一个一个微服务,每个服务对应一个项目,这就需要用到聚合项目,方便对依赖和项目之间的关系进行管理,使 ...

  7. Spring Boot +Vue 项目实战笔记(一):使用 CLI 搭建 Vue.js 项目

    前言 从这篇文章开始,就进入真正的实践了. 在前端项目开发中,我们可以根据实际情况不同程度地使用 Vue.利用 Vue CLI(或写成 vue-cli,即 Vue 脚手架)搭建出来的项目,是最能体现 ...

  8. 一文搞定Spring Boot + Vue 项目在Linux Mysql环境的部署(强烈建议收藏)

    本文介绍Spring Boot.Vue .Vue Element编写的项目,在Linux下的部署,系统采用Mysql数据库.按照本文进行项目部署,不迷路. 1. 前言 典型的软件开发,经过" ...

  9. Spring Boot +Vue 项目实战笔记(三):数据库的引入

    这一篇的主要内容是引入数据库并实现通过数据库验证用户名与密码. 一.引入数据库 之前说过数据库的采用是 MySQL,算是比较主流的选择,从性能和体量等方面都比较优秀,当然也有一些弊端,但数据库不是我们 ...

随机推荐

  1. 一条shell命令让多台Linux服务器执行

    1.环境 局域网环境有3台Linux服务器,配置host文件 [root@master1 ~]# vim /etc/hosts 192.168.8.201 master1 192.168.8.202 ...

  2. chrome google plugins

    Advanced REST client  Axure RP Extension for Chrome  Charset  Chrono下载管理器  Code Cola  CSS Sprite Gen ...

  3. RuntimeError: Model class app_anme.models.User doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.---python学习错误记录

    untimeError: Model class app_anme.models.User doesn't declare an explicit app_label and isn't in an ...

  4. work2:贪吃蛇

    学号:2017*****7219 姓名:邰嘉琛我的码云贪吃蛇项目仓库:https://gitee.com/tjc666/sesnake/tree/master2) 给出你的各项任务完成时间估算与实际消 ...

  5. linux IPtable防火墙 禁止和开放端口

    1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放.下面是命令实现: iptables -P INPUT DROPiptables -P FORWARD DROPiptable ...

  6. Road of computer tec 01

    回顾自己过去将近3年的学习经历 当初报考的时候,自己是真正喜欢这个专业的么? 当初报这个专业的时候,对计算机还没有什么很明显的概念,只知道这个专业以后是要每天面对电脑的,喜欢不喜欢谈不上吧,但是还蛮感 ...

  7. vue组件的通信

    组件的引入两种方式 动态组件  <p is="com-a"></p> 直接引入 <com-a></com-a> 插槽功能 父组件引入 ...

  8. jvm参数及分析工具

    -Xmx4G 设置堆的最大内存大小为4GB,也可通过-XX:MaxHeapSize=4GB进行设置 -Xms256m 设置堆的初始内存大小为256兆,如果未设置此选项,则初始大小将设置为新生代和年老代 ...

  9. COM/DCOM简述

    这些组件对象可以互相通讯与交互,而与它们的语言.分布及原始平台无关.COM规程包括一套标准API.一个标准的接口集以及COM用于支持分布式计算的网络协议.而DCOM模型则是一套用于分布式环境中的COM ...

  10. 关于解决Mac使用docker安装SQL server for Linux 中文乱码问题

    本人是Mac的追随者,无奈本学期数据库课要求使用Microsoft的SQL server.但是Microsoft并没有发布SQL server for Mac ,笔者使用Google搜索后, 发现可以 ...