注意查看端口是否被使用
lsof -i tcp:9999
修改/opt/AAS/domains/mydomain/config/apusic.conf
<ATTRIBUTE NAME="Port" VALUE="9999" />
根据需要,修改/opt/AAS/domains/mydomain/bin/data.xml
<aasjvm>-Xms2g -Xmx2g -XX:MaxPermSize=768maasjvm>
修改文件/opt/AAS/domains/mydomain/config/vm.options
注释apusic.http.disabledMethods
#apusic.http.disabledMethods=DELETE,PUT,TRACE,OPTIONS
排除springboot内嵌tomcat
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-tomcatartifactId>
<scope>providedscope>
dependency>
添加servlet支持
<dependency>
<groupId>javax.servletgroupId>
<artifactId>jstlartifactId>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>3.1.0version>
dependency>
修改打包方式
<packaging>warpackaging>
打包插件配置
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-war-pluginartifactId>
<version>2.2version>
<configuration>
<failOnMissingWebXml>falsefailOnMissingWebXml>
configuration>
plugin>
继承SpringBootServletInitializer ,重写 configure 方法。
public class OrganizationApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(new Class[]{OrganizationApplication.class});
}
public static void main(String[] args) {
SpringApplication.run(OrganizationApplication.class, args);
}
}
一个域中需要同时启动多个war包,需要修改每个war包配置application.yml
spring.jmx.default-domain=XXX
注意:
多域(每个服务单独)部署需要去掉 spring.jmx.default-domain=XXX 配置,否则会报错。
Apusic中也需要对应修改上下文**(默认二级域名为包名称,可以直接修改部署包名称)**
添加配置NacosConfig
import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.annotation.Configuration;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import javax.management.Query;
import java.lang.management.ManagementFactory;
import java.util.Set;
@Configuration
public class NacosConfig implements ApplicationRunner {
private static final Logger logger = LoggerFactory.getLogger(NacosConfig.class);
@Autowired(required = false)
private NacosAutoServiceRegistration registration;
@Value("${server.port}")
Integer port;
@Override
public void run(ApplicationArguments args) throws Exception {
if (registration != null && port != null) {
Integer tomcatPort = port;
try {
Integer tmp= getTomcatPort();
if(tmp!=-1) tomcatPort = tmp;
} catch (Exception e) {
e.printStackTrace();
}
registration.setPort(tomcatPort);
registration.start();
}
}
/**
* 获取外部tomcat端口
*/
public Integer getTomcatPort() throws Exception {
MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"),
Query.match(Query.attr("protocol"), Query.value("org.apache.coyote.http11.Http11AprProtocol")));
if (objectNames==null||objectNames.size()==0){
return -1;
}
String port = objectNames.iterator().next().getKeyProperty("port");
return Integer.parseInt(port);
}
}
@Configuration
public class MinioConfig {
@Bean(name = "multipartResolver")
public MultipartResolver multipartResolver(){
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
resolver.setResolveLazily(true);//resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
resolver.setMaxInMemorySize(40960);
resolver.setMaxUploadSize(200*1024*1024);//上传文件大小 200M
return resolver;
}
}
由于quartz部署在二级域名下,api接口需要添加前缀 /quartz-server
com.zbzk.safe.provider.QuartzProvider
com.zbzk.edu.provider.QuartzTaskProvider
由于socketio部署在二级域名下,api接口需要添加前缀 /server-socketio
com.zbzk.edu.provider.SocketIoProvider
com.zbzk.business.quartz.service.provider.SocketioProvider
com.zbzk.envpro.provider.SocketioProvider
com.zbzk.equ.provider.SocketioProvider
com.zbzk.flow.provider.SocketIoProvider
com.zbzk.safe.provider.SocketIoProvider
com.zbzk.sysadmin.organization.provider.SocketIoProvider
com.zbzk.sysadmin.service.provider.SocketioProvider
由于authentication部署在二级域名下,api接口需要添加前缀 /authentication-server
com.zbzk.auth.client.provider.AuthProvider
由于 authentication-client会被gateway-web引用,所以修改之后需要重新deploy,gateway-web才能获得最新jar包
由于某些项目部署在二级域名下,请求API接口会上前缀,所以白名单过滤方法改为contains包含关系
1、添加pom依赖
2、aams-spring-boot-starter-all-2.1.7.RELEASE.jar
加入本地:
mvn install:install-file -Dfile=aams-spring-boot-starter-all-2.1.7.RELEASE.jar -DgroupId=com.apusic -DartifactId=aams-spring-boot-starter-all -Dversion=2.1.7.RELEASE -Dpackaging=jar
cp -r /opt/AAS/domains/node1 /opt/AAS/domains/新域名XXX
vi /opt/AAS/domains.xml
cp /opt/AAS/bin/samples.xml /opt/AAS/bin/新域名XXX.xml
vi /opt/AAS/bin/新域名XXX.xml
vi /opt/AAS/domains/域/config/apusic.conf
添加 参数
base-context="/"
cd /opt/AAS/bin
./startas 新域名XXX
浏览器输入localhost:6888/admin进入AAS管控页面
输入用户名admin
输入密码 Admin1234
注意:
多域部署需要去掉 spring.jmx.default-domain=XXX 配置,否则会报错。
1、查看服务启动情况
ps -ef | grep apusic
ps -ef | grep organization (多域)
2、如果项目已启动
kill -9 进程号
3、启动Apusic
在目录 /opt/AAS/domains/mydomain/bin中执行
./startapusic
或者:在目录 /opt/AAS/bin中执行
./startas mydomain
4、后台启动
nohup ./startapusic >/dev/null &
或者:
nohup ./startas mydomain >/dev/null &
cd /opt/AAS/bin
nohup ./startas mydomain >/dev/null &
nohup ./startas organization >/dev/null &
nohup ./startas syservice >/dev/null &
nohup ./startas safe >/dev/null &
nohup ./startas equipment >/dev/null &
nohup ./startas education >/dev/null &
nohup ./startas envpro >/dev/null &
nohup ./startas xfile >/dev/null &
nohup ./startas report >/dev/null &
netstat -lnp | grep 9910
netstat -lnp | grep 9930
netstat -lnp | grep 9931
netstat -lnp | grep 9932
netstat -lnp | grep 9933
netstat -lnp | grep 9934
netstat -lnp | grep 9935
netstat -lnp | grep 9936
netstat -lnp | grep 9938
kill -9 XXX
解决办法:
删除jar包: /optAAS/AAS/lib/ext/jedis-2.8.0.jar
/usr/local/java/jdk1.8.0_91/jre/lib/amd64/libawt_xawt.so: libXtst.so错误
添加启动脚本-Djava.awt.headless=true
@Bean
public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {
return new ServletRegistrationBean(dispatcherServlet,"/*");
}
4.5.1、原因
用 CentOS 做 API 接口服务器供其他终端调用时,并发量高会报错:java.io.IOException: Too many open files。
其原因是在 Linux 下默认的Socket最大连接数为 1024(可以通过 ulimit -n 查看)。
4.5.2、解决
1.在/etc/rc.local 后增加一行
ulimit -SHn 65535
2.在/etc/profile 后增加一行
ulimit -SHn 65535
3.在/etc/security/limits.conf最后加入两行
* soft nofile 65535
* hard nofile 65535
解决办法:
替换 javax.persistence-2.0.5.jar 为 javax.persistence-api-2.2.jar
由于存在二级域名,需要修改数据库路由表,路由规则,保留前缀
[{"name":"StripPrefix","args":{"parts":"0"}}]