简述
此次配置改造分为三个部分:
1.修改获取配置的方式(通过nacos获取)
2.增加主题样式
3.部分grails项目替换旧版本jar包(包括autherUser、postgres和httpclient)
nacos使用流程:
1.复制项目的配置到nacos
2.服务读取nacos配置并注册到nacos
3.服务间调用通过nacos(暂未使用)
数据模型
项目(project):指java或grails项目,例如工作台(work)项目、表单(form)项目、空间前端项目(spaceview)、空间后端项目(space)
服务(service):指运行中的java或grails项目,一个项目可以起多个服务,一个服务可以为多个应用提供后台支持。
应用(application):指配置在工作台的应用 ,一个应用可能由多个服务提供接口。
前提条件
将authuser包更新到该版本及以上:<version>0.1.8-RELEASE</version>
AuthUser包版本在0.0.18以下时,升级包时同时需要把httpclient版本升级
包在ftp该目录下:D:/南京多邦软件有限公司/开发部/工作空间/安装包
配置改造
nacos测试、研发环境 http://192.168.0.174:8848/nacos/index.html 账号:nacos nacos
命名规则
将所有配置复制到nacos的dev-example(开发示例)命名空间内,其中dataId即项目key,全局唯一。
如需个性配置,可创建本人姓名缩写的命名空间,复制开发示例到自己的命名空间即可。
datad:项目唯一标识,全小写,不使用驼峰命名,不使用下划线,springboot项目加上”.yml”后缀
group:使用默认值DEFAULT_GROUP
当一个项目部署为集群,且不同服务的配置不同时,dataId以下划线”_”区分,例如:
(iot.yml —>iot_camera.yml)
springboot
注意事项:不要在部署路径遗留原来的application.yml文件,否则依然会读取到旧文件!!!
pom加入以下依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.5.0</version>
</dependency>
将application.yml 改名为bootstrap.yml,按以下配置设置
#springboot项目的dataId必须如下命名
#nacos的dataId必须命名为:${prefix}.${file-extension}
#prefix 即 spring.application.name
#file-extension 即 spring.cloud.nacos.config.file-extension仅支持yml
spring:
application:
name: thirdplatform #${prefix}
cloud:
nacos:
config:
server-addr: 192.168.0.174:8848
namespace: 64b93762-02f5-431f-91ba-ae4582a91fe1 #命名空间id
file-extension: yml
group: DEFAULT_GROUP
refresh-enabled: true
discovery:
server-addr: 192.168.0.174:8848
namespace: 64b93762-02f5-431f-91ba-ae4582a91fe1
将配置文件命名为【项目名.yml】
在启动类上添加注解
@EnableDiscoveryClient
grails
grails项目整合后仅有一个配置。将配置复制到nacos后,需增加如下配置:
//单点登录配置项
casClientServerName = "http://localhost:8080"
casServerLoginUrl = "http://auth.e100soft.cn/cams"
casServerUrlPrefix = "http://auth.e100soft.cn/cams"
//数据库配置项
db.driverClass= "org.postgresql.Driver"
db.username="postgres"
db.password="duobang123456"
db.url="jdbc:postgresql://192.168.0.174:5432/work2021?useUnicode=true&characterEncoding=utf8"
//当前应用IP及端口号(局域网内)
ip = "192.168.0.122"
port = "8080"
项目名-config.groovy配置改为以下内容
import cn.e100soft.user.web.WebApi
//配置中心地址
nacos.urlprefix = "http://192.168.0.174:8848"
//命名空间id
nacos.tenant = "64b93762-02f5-431f-91ba-ae4582a91fe1"
//项目名
nacos.dataId = "work"
//分组名
nacos.group = "DEFAULT_GROUP"
//无需修改,configData不可改名
configData = WebApi.get(nacos.urlprefix
+ "/nacos/v1/cs/configs?tenant="
+ nacos.tenant
+ "&dataId="
+ nacos.dataId
+ "&group="
+ nacos.group)
resource.xml修改为以下内容:
<!--配置注入-->
<bean id="propertyConfigurer"
class="cn.e100soft.user.grails.GrailsPropertyPlaceholderConfigurer">
</bean>
<!--druid设置-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${db.driverClass}" />
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
<property name="filters" value="stat" />
<property name="maxActive" value="50" />
<property name="initialSize" value="5" />
<property name="maxWait" value="60000" />
<property name="minIdle" value="1" />
<property name="timeBetweenEvictionRunsMillis" value="3000" />
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="validationQuery" value="SELECT 'x'" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
</bean>
<!--单点登录配置-->
<bean name="casAuthenticationFilter" class="org.jasig.cas.client.authentication.AuthenticationFilter">
<property name="serverName" value="${casClientServerName}"/>
<property name="casServerLoginUrl" value="${casServerLoginUrl}"/>
<property name="gateway" value="true"/>
</bean>
<bean name="casTicketValidationFilter"
class="org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter">
<property name="serverName" value="${casClientServerName}"/>
<property name="ticketValidator">
<bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
<constructor-arg index="0" value="${casServerUrlPrefix}"/>
</bean>
</property>
<property name="redirectAfterValidation" value="true"/>
</bean>
web.xml按如下配置,并删除原有同名配置
<filter>
<filter-name>casTicketValidationFilter </filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>casTicketValidationFilter </filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>casAuthenticationFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy </filter-class>
</filter>
<filter-mapping>
<filter-name>casAuthenticationFilter</filter-name>
<url-pattern>/login/*</url-pattern>
</filter-mapping>
bootstrap.groovy增加如下配置
//注册服务到nacos
ProjectUtil.registerNacos()
检查代码中调用dataSource.properties的文件,修改url、username等配置的获取方式
主题样式增加
参考dailymanage项目,项目地址:
svn://192.168.0.90/work_space_daily_manage
1、在各项目_common.gsp中添加topTheme主题
2、拷贝dailymanage项目下的_topTheme.gsp文件到对应目录
3、拷贝dailymanage项目下的top_theme文件夹到对应目录
postgres版本更新
针对postgres9.6的数据源
删除原有jar:
postgresql-9.1dev-900.jdbc4.jar
cas-client-core-3.2.1.jar
新增:
postgresql-42.2.5.jre7.jar
druid-1.0.6.jar
tmp-cas-client-core-3.2.1.jar
xercesImpl.jar
在spring目录下,新增resources.xml,可以拷贝样例文件。
删除原来DataSource.groovy中的dataSource定义。
复制web.xml,注意看一下原来的文件有没有特殊的,有少数项目如classboardmanage有webservice接口开放,所以有配置,否则所有的web.xml文件都是一样的。