10分钟在Rainbond上部署mall电商项目( 二 )


url:jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false#MySQL连接地址
username:${MYSQL_USERNAME}#MySQL用户
password:${MYSQL_PWD}#MySQL密码
......
data:
mongodb:
host:${MONGODB_HOST}#MySQL连接地址为环境变量
port:27017
database:mall-port
redis:
host:${REDIS_HOST}#Redis服务器地址
......
rabbitmq:
host:${AMQP_HOST}#RabbitMQ连接地址
virtual-host:${RABBITMQ_DEFAULT_VHOST}#RabbitMQvirtualhost
username:${RABBITMQ_DEFAULT_USER}#RabbitMQ用户
password:${RABBITMQ_DEFAULT_PASS}#RabbitMQ密码
......
修改mall-search服务的application-dev.yml文件 , 内容如下:
spring:
datasource:
url:jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false#MySQL连接地址
username:${MYSQL_USERNAME}#MySQL用户
password:${MYSQL_PWD}#MySQL密码
......
elasticsearch:
uris:${ES_HOST}:${ES_PORT}#ElasticSearch连接地址
......
为什么都要改成环境变量的方式呢 , 因为这样更灵活 , 只需修改简单的变量配置可以让mall项目在任何环境中运行 。 而在Rainbond中 , 组件之间建立了依赖关系之后 , 会自动注入被依赖组件的环境变量 , 这样我们连环境变量都不用配置 , 更加方便 , 原理可参阅Rainbond组件之间的环境变量注入[2] 。
部署后端组件
在团队视图或应用视图「新增从源码创建组件:」
组件名称:自定义
组件英文名称:自定义
仓库地址:https://github.com/zzzhangqi/mall.git
代码版本:master
以上仓库已经修改了上述的代码配置
此时Rainbond会检测到项目为多模块项目 , 进入多模块项目构建:勾选mall-admin、mall-portal、mall-search并构建 。
进入每个组件内->端口 , 删除默认的5000端口 , 添加新的组件对应端口:
mall-admin:8080
10分钟在Rainbond上部署mall电商项目】mall-portal:8085
mall-search:8081
10分钟在Rainbond上部署mall电商项目
文章图片
建立组件间的依赖关系
在应用内 , 切换到编辑模式 , 按照以下依赖关系并建立连接:
给组件之间添加依赖
部署mall前端服务
很多时候我们的后端服务一般是不对外提供访问的 , 如果采用现在的配置那么在部署的时候 , config/prod.env.js中后端的地址就必须与前端的访问地址一样 , 如果不一样则会产生跨域 , 如下:
module.exports={
NODE_ENV:'"production"',
BASE_API:'"https://admin-api.xxx.com"'
}
如何不暴露后端服务的同时又能解决跨域 , 可以使用Nginx反向代理后端服务 。
在config/prod.env.js定义一个不存在的接口 , 比如/api
module.exports={
NODE_ENV:'"production"',
BASE_API:'"/api"'
}
比如现在前端访问登陆接口的URL是/api/admin/login , 显然/api不是我们的接口 , /admin/login才是 , 那么通过NginxURL重写 , 把/api重写 , 访问到后端的接口就是/admin/login此时接口正确就可以正常返回数据 , 也能解决跨域问题同时后端服务也不用对外暴露 。
server{
listen80;
location/{
root/app/www;
indexindex.htmlindex.htm;
}
location/api{
rewrite^/api/(.*)$/$1break;
proxy_passhttp://127.0.0.1:8080;
}
}
部署前端组件
在团队视图或应用视图「新增从源码创建组件:」
组件名称:自定义
组件英文名称:自定义
仓库地址:https://github.com/zzzhangqi/mall-admin-web.git