发布spring cloud + vue项目
服务器部署结构
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项目的更多相关文章
- 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚
新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...
- 优秀的Spring Cloud开源项目整理推荐
无论是对于初学者,还是有一定工作经验的程序员来讲,Spring Cloud开源项目都是一笔宝贵的财富.下面给大家整理了十个优秀的开源项目,分别是spring-cloud-examples.spaasc ...
- Spring Cloud Netflix项目进入维护模式
任何项目都有其生命周期,Spring Could Netflix也不例外,官宣已进入维护模式,如果在新项目开始考虑技术选型时要考虑到这点风险,并考虑绕道的可能性. 原创: itmuch IT牧场 这 ...
- 搭建一套ASP.NET Core+Nacos+Spring Cloud Gateway项目
前言 伴随着随着微服务概念的不断盛行,与之对应的各种解决方案也层出不穷.这毕竟是一个信息大爆发的时代,各种编程语言大行其道,各有各的优势.但是有一点未曾改变,那就是他们服务的方式,工作的时候各 ...
- 【Spring Cloud + Vue 有来商城】研发小组开发规范全方位梳理
项目演示 后端 Spring Cloud实战 | 第一篇:Windows搭建Nacos服务 Spring Cloud实战 | 第二篇:Spring Cloud整合Nacos实现注册中心 Spring ...
- 创建Spring Cloud聚合项目
使用maven创建单一项目的时候通常用不到聚合项目,创建spring cloud项目时候,由于下面都是一个一个微服务,每个服务对应一个项目,这就需要用到聚合项目,方便对依赖和项目之间的关系进行管理,使 ...
- Spring Boot +Vue 项目实战笔记(一):使用 CLI 搭建 Vue.js 项目
前言 从这篇文章开始,就进入真正的实践了. 在前端项目开发中,我们可以根据实际情况不同程度地使用 Vue.利用 Vue CLI(或写成 vue-cli,即 Vue 脚手架)搭建出来的项目,是最能体现 ...
- 一文搞定Spring Boot + Vue 项目在Linux Mysql环境的部署(强烈建议收藏)
本文介绍Spring Boot.Vue .Vue Element编写的项目,在Linux下的部署,系统采用Mysql数据库.按照本文进行项目部署,不迷路. 1. 前言 典型的软件开发,经过" ...
- Spring Boot +Vue 项目实战笔记(三):数据库的引入
这一篇的主要内容是引入数据库并实现通过数据库验证用户名与密码. 一.引入数据库 之前说过数据库的采用是 MySQL,算是比较主流的选择,从性能和体量等方面都比较优秀,当然也有一些弊端,但数据库不是我们 ...
随机推荐
- 如何在hadoop上做等频离散化
抛砖引玉,先根据特征值group by,统计每个特征值出现次数,然后reduce到一个文件,根据一个文件来统计吧,毕竟,你知道多个桶,那么每个桶多少个样本就是确定了,数数,数到一个桶样本的时候停止,就 ...
- 规则引擎 - (二)XOM工程
XOM工程即一个Java项目. 新建Java类,添加属性,实现get/set方法.
- aggregate基础 使用记录
mongoDB中聚合(aggregate)的具体使用 我们可以用$指定字段来表示选定的document的field,另外可以使用$$ROOT来表示选定的document的所有内容(例如:chosenD ...
- C#使用RSA证书文件加密和解密
public class EncrypHelp { static public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKey ...
- python 两个 list 获取交集,并集,差集的函数
1. 获取两个 list 的交集 a = [1, 2, 3, 4] b = [1, 2, 5] print(list(set(a).intersection(set(b)))) 2. 获取两个 lis ...
- Sql中如何将数据表的两个字段的值如何互换?
今天遇到一个数据表的两个列数据要互换,在网上找到并记录下. 直接用Sql就可以搞定,语法如下 --将数据表中两个列数据互换的语法-- update tabName set field1=field2, ...
- ,vue-router使用心得
今天周末,趁着没事,自学了一下vue-router,对于vue的路由跳转,目前我遇到了router-link和this.$router.push(或者this.$router.replace)这种 ...
- MySQL运用
进入mysql 命令行: mysql -uroot -p查看所有数据库: show databases;创建数据库: create database niu charset utf8;删除数据库: d ...
- 总结AWS使用要点
最近做毕业设计,要用AWS跑代码,以前只用过一次,这次踩了很多坑,记录一下.. AWS命令行管理S3 bucket AWS官方文档: http://docs.amazonaws.cn/cli/late ...
- 【Java集合系列五】HashMap解析
2017-07-31 19:36:00 一.简介 1.HashMap作用及使用场景 HashMap利用数组+单向链表的方式,实现了key-value型数据的存储功能.HashMap的size永远是2^ ...