新产品开发案例
注意:没有运维组件,启动关闭对应方案服务无法使用jeinit在(无法修改各个服务的堆内存)和作业
使用JECloud微服务低代码平台,开发用户自己的产品并且将产品发布;需要拉取代码模版,申请服务器资源,建立作业部署到服务器上。该案例是介绍整个生命周期的步骤。本案例以方案类产品为例
新建产品
确保基础代码已经启动完成,新建 方案类产品管理
创建项目
idea 中新建maven项目,file/new/project/maven
添加archetype骨架,默认输入的是以下内容
key |
value |
---|---|
groupId | jecloud |
artifactId | jecloud-service-archetype |
version | 1.0 |
repository | http://maven.jepaas.com |
如果骨架添加错误,根据文档 https://blog.csdn.net/JJBOOM425/article/details/85071733 进行修改,修改后重启idea工具
添加完骨架,选择新创建的骨架,然后点击下一步
创建项目,填写的东西根据项目自定义,然后下一步
这里可以选择自己本地的maven地址,然后点下一步
操作完上述步骤之后,项目已经创建完成,一般idea会提示是否在新窗口打开,选择在新窗口打开就可以
打开新项目之后,会拉取相关jar包,拉取完之后的项目包括以下几个模块,如果拉取完之后项目中依赖的jar包没有报错,那这几步操作就是没有任何问题的
修改配置文件,如果新建的项目,需要启动,就需要修改相关的配置文件,默认修改的是impl这个模块的dev环境的application.yml 文件
修改配置文件,如果新建的项目,需要启动,就需要修改相关的配置文件,默认修改的是impl这个模块的dev环境的application.yml 文件
如果默认启动其他环境,如preview,就可以在pom.xml里面进行修改
配置文件需要修改的地方,默认的name是test,这个需要修改为自己的产品名称,例如新加的产品是CRM管理系统,名称就可以叫crm,例如,这里下图的test 替换为crm
(注:注意这里的名称与产品管理中的编码的名称包括大小写必须保持一致!)
修改注册中心(ServiceComb)的地址,一般开发环境都有一个自己的注册中心,所以这里的地址要改成自己注册中心的地址
修改配置中心(apollo)的地址,这里面的地址需要改成自己的配置中心地址
修改APPID 这个appid是用于配置中心中应用的唯一标识,例如我们要做CRM的项目,这里就可以写成jecloud-crm,这名称自定义,并且唯一就可以
创建数据库
注意:根据自己的项目需要建立对应的数据库(一般方案数据库的为空)
参考如下:create database oa character set utf8mb4;
根据创建的应用资源创建配置中心
说明
需要从数据库信息中获取数据库的ip地址,用户名,密码,实例名,端口号。因为我们所有项目共用一个redis缓存,可以参考其他项目redis配置或者查看安装包安装项目redis的介绍
登陆配置中心
参考安装包部署配置中心信息进行登陆,用户名:apollo 密码:admin
创建应用
key |
value |
---|---|
部门 | 自己定义的部门 |
AppId | 对应的是第13步中修改的appid |
应用名称 | 应用名称可以根据自身需求填写,比如我们做的是CRM项目,这里可以填写CRM管理系统 |
应用负责人 | 选择填写 |
应用管理员 | 选择负责人后带出管理员 |
打开应用
创建完应用之后,双击打开,默认界面
创建namespace
根据配置文件中的namespances,在新加的应用里面创建相关的namespance,例如配置文件里面默认需要创建是:jdbc,redis等,那对应的配置中心就需要有这些
配置中心添加jdbc,点击添加
(注:注意这里的名称与配置文件中保持一致!)
创建jdbc的namespace
添加完以上步骤,配置数据库连接,在文本中可以直接进行添加,首先要自己本地有个数据库,并且能访问到
注意:ip、端口号、数据库实例、用户名、密码要改成自己建立的数据库信息
模板例如:
jdbc.dialect = com.je.core.dialect.PCMySQLDialect
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3305/jecloud-oa?useOldAliasMetadataBehavior=true&characterEncoding=UTF-8
jdbc.username = root
jdbc.password = root
jdbc.validationQuery = select 1
jdbc.initialSize = 15
jdbc.minIdle = 5
jdbc.maxActive = 30
填写完之后就可以在表格这里看到相关的配置数据,点击发布,变成已发布状态就可以了
创建redis的namespace
redis与上面的操作是一样的,将redis的配置host地址改成自己本地的
注意:ip、端口号、认证信息要改成自己的信息
redis模板示例:
#redis主机地址
redis.host = 127.0.0.1
#redis主机端口
redis.port = 6379
#redis登录密码
redis.pass = 123456
#使用的数据库分片
redis.dbindex = 0
#最大空闲时间
redis.maxIdle = 300
#最大连接数
redis.maxTotal = 600
#最大等待时间
redis.maxWaitMillis = 1000
#是否测试连接有效性
redis.testOnBorrow = true
redis.topic = topic.im.msg
(xxljob配置同上此处不做展示!)
服务器部署代码
- 部署的方案的环境需要jdk1.8环境(同一台服务器可以忽略这一项)
说明:新服务器可以复制当前服务器的jdk到新环境上(jdk环境/opt/jdk1.8.0_191)
在 ~/.bashrc中添加jdk环境变量export JAVA_HOME=/opt/jdk1.8.0_191 export java=/opt/jdk1.8.0_191/bin/java export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
source ~/.bashrc
- 创建jar包的存放目录
例如:oa 项目mkdir /data/jecloud/jecloud-oa
- 将jeapp.jar上传到部署目录
本实力部署目录:/data/jecloud/jecloud-oa
- 创建重启脚本
可以根据实际情况修改,例如修改堆内存-Xms512m -Xmx512m
port=$1
pname=$2
pjar=$3
jarname=/data/jecloud/$pname/$pjar
agentname=/data/jecloud/$pname/agent/skywalking-agent.jar
tmpdir=/data/jecloud/$pname/tmp
#logfile=/data/logs/$pname.log
logPath=/data/logs/$pname
logfile=$logPath/access/access.log
servicecombAdd=http://ip:30100 #部署comb服务器的ip
restaddress=ip:$port #部署平台服务器的ip
apolloAdd=http://ip:8080 #部署apollo服务器的ip(如果使用apollo)
region=test
environment=development
ps -ef|grep $jarname | grep -v "grep"|awk '{print $2}'
kill -9 `ps -ef|grep $jarname | grep -v "grep"|awk '{print $2}'` >/dev/null 2>&1;
sleep 1
pre_count=`grep -r '====启动成功====' $logfile | wc -l`
nohup java -Xms1024m -Xmx1024m -Denv=DEV -Dapollo.meta=$apolloAdd -Dservicecomb.service.registry.instance.healthCheck.interval=10 -Dservicecomb.uploads.directory=$tmpdir -Dservicecomb.downloads.directory=$tmpdir -Dlog.file.path=$logPath -Dservicecomb.service.registry.instance.preferIpAddress=true -Dservicecomb.service.registry.address=$servicecombAdd -Dservicecomb.datacenter.region=$region -Dservice_description.environment=$environment -Dserver.port=$port -Dservicecomb.rest.address=$restaddress -jar $jarname >/dev/null 2>&1 &
for((i=1;i<120;i++))
do
count=`grep -r '====启动成功====' $logfile | wc -l`
#echo "启动后"$count
#echo "启动前"$pre_count
if [ $count -gt $pre_count ];then
#count=`netstat -tlpn | grep $port |grep -v "grep" |wc -l`
#if [ "1" == "$count" ];then
echo "应用重启成功"
tail -100 $logfile
exit 0
elif [ "119" == "$i" ];then
echo "启动失败,应用无法在$i内完成启动!"
tail -100 $logfile
exit 1
else
echo "检测应用是否成功启动$i秒"
sleep 1
fi
done
以OA为例:
输入参数格式如下:
sh /root/jecloud_restart.sh 端口 项目名称(也就是/data/jecloud下面的文件夹名称) jeapp.jar
以oa为例:
sh /root/jecloud_restart.sh 8075 jecloud-oa jeapp.jar