当前位置: 首页 >> 资讯 > > 正文

10分钟在Rainbond上部署mall电商项目-环球今热点

2023-01-30 12:59:24OSC开源社区

很多小伙伴在学习mall电商项目时,都会在部署上折腾许久,虽然目前已经提供了很多种部署方式,比如在Linux上部署mall、使用Docker或DockerCompose部署mall,但对于正在学习的我们都显得比较复杂,需要理解并学习这些容器技术。而本文将使用Rainbond部署mall电商项目,通过Rainbond部署mall商城项目非常方便、简单,让我们专注于代码,Rainbond是一个云原生应用管理平台,使用简单,不需要懂容器、Kubernetes和底层复杂技术,轻松的在Kubernetes上部署应用并体验Kubernetes带来的能力。

本文介绍在Rainbond上的两种部署mall电商项目的方式:

通过Rainbond开源应用商店快速部署mall


【资料图】

从0开始部署mall项目所有服务前提

安装可用的Rainbond环境,Linux、Mac、Win上均可安装,参阅Rainbond快速安装[1]

通过应用商店快速部署mall

mall电商项目已发布到Rainbond开源应用商店,可以通过开源应用商店一键部署,在「平台管理->应用市场->开源应用商店」中搜索mall并安装。

此时Rainbond会自动构建、启动mall所有服务,只需等待即可,部署完成后拓扑图如下:

访问mall-admin-web前端项目验证部署,默认用户密码:admin/macro123

mall-portal和mall-search暂时没有前端,可以访问后端swagger验证部署http://xxx/swagger-ui/,如下:

从零开始部署mall中间件部署

mall需要用到的中间件有:MysqlRedisRabbitMQMongoDBElasticSearch,这些中间件都可以通过Rainbond开源应用商店部署。

安装Redis

在开源应用商店中搜索Redis并安装5.x版本

安装MongoDB

在开源应用商店中搜索MongoDB并安装4.x版本

安装RabbitMQ

在开源应用商店中搜索RabbitMQ并安装

安装MySQL

在开源应用商店中搜索MySQL并安装5.7版本

在Mysql「组件->端口」打开对外端口服务,通过IP:PORT连接,默认用户密码root/root

通过工具连接并导入mallsql数据。安装ElasticSearch

在开源应用商店中搜索ElasticSearch并安装7.15.2版本

ElasticSearch应用包含了Kinbana,如不需要可删除Kinbana组件

ElasticSearch默认开启了密码验证,在「组件->环境配置->配置文件设置」编辑配置文件将xpack.security.enabled设置为false并更新组件生效。

「安装中文分词器IKAnalyzer」

首先在「团队视图->插件->新增插件->通过应用商店安装插件」搜索ES-IK-Analysis并安装插件

为ElasticSearch组件添加存储,「组件->存储->添加存储」

名称:自定义

挂载路径:/usr/share/elasticsearch/plugins

类型:共享存储

进入「组件->插件->未开通」,开通ES-IK-Analysis插件

更新或重启ElasticSearch组件即可生效。部署mall后端服务修改项目代码配置

注释主pom.xml文件中的execution部分,不需要在项目中配置Docker打包项目,打包工作交给Rainbond处理,pom.xml配置如下:

修改mall-admin服务的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密码

......

redis:

host:${REDIS_HOST}#Redis连接地址

......

修改mall-portal服务的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密码

......

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

mall-portal:8085

mall-search:8081

建立组件间的依赖关系

在应用内,切换到编辑模式,按照以下依赖关系并建立连接:

给组件之间添加依赖

部署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

代码版本:master

以上仓库已经添加了上述配置

添加mall-admin-web依赖于mall-admin

验证部署

访问mall-admin-web前端项目验证部署,默认用户密码:admin/macro123。mall-portal和mall-search暂时没有前端,可以访问后端swagger验证部署http://xxx/swagger-ui/

最后

下一期出在Rainbond上部署mall-swarm微服务项目实践。

ReferenceLink

[1]

Rainbond快速安装:https://www.rainbond.com/docs/quick-start/quick-install

[2]

Rainbond组件之间的环境变量注入:https://www.rainbond.com/docs/micro-service/service-mesh/connection_env

小心你的VSCode扩展!Linux发行版新秀:基于Ubuntu、系统核心“不可变”curl作者收下社区成员赠送的Macmini,将用于curl开发

这里有最新开源资讯、软件更新、技术干货等内容

点这里↓↓↓记得关注✔标星⭐哦~返回搜狐,查看更多

责任编辑:

标签: mall