由于公司要推进国产化部署,所以很多服务要进行迁移重新部署。今天要说的这个服务是一个老的MVC项目,部署到金蝶apusic后出现的问题。
测试同事反馈是在同时打开10个菜单后,点击关闭全部再点击一个菜单,就会出现404。
实施同事反馈,在apusic后台,部署时填的应用上下文是“/”,但是服务404之后,会自动变空。
以下是我的排查解决流程:
关于菜单:我在测试的时候发现,并不是所有菜单都会出现这个问题,最终是锁定到了一个叫“图标管理”的菜单。只要点击这个菜单,过几秒,服务就会404。
关于上下文变空:上下文变空是因为服务自动重启了,只要自动重启,上下文就会重置成空。上下文变为空之后,访问路径就由原来的http://xxx.xxx.x.xxx:xxxx/变成了http://xxx.xxx.x.xxx:xxxx/服务名,导致页面404。
解决方案有3个:
1、锁死上下文,让apusic重新部署时不改变设置的上下文;
2、修改服务访问路径为http://xxx.xxx.x.xxx:xxxx/服务名;
3、禁止服务自动重启。
1和2虽然可行,但是明显的治标不治本,总不能一点“图标管理”就要等服务重启吧。所以最终决定采用方案3。
要禁止服务自动重启,就要找到它自动重启的原因。经过跟金蝶技术的沟通确认,只要服务放在apusic的applications目录下,就会自动部署。
推测应该是点击图标管理时,对某个文件进行了改动,导致apusic识别到文件变动从而自动重新部署。
那么下面就可以一步步解决这个问题了:
1、在apusic下,跟applications同级,新建apps目录;
2、将项目移动到apps目录下。比如项目名叫abc,本来在applications/abc,那么执行移动命令即可:
mv -r applications/abc/ apps/
3、移动后,刷新apusic后台,会发现“应用管理”中的服务不见了。别急,点击上面的添加应用,然后选择“服务器部署”,选择新的路径即可。应用基础上下文还是写“/”。
4、保存后等待服务启动。
启动后再次点“图标管理”,然后胡乱点一通其他菜单,发现服务没有自动重新部署,大功告成。