1. 常见问题
1.1. 打包发布服务器依赖包里面的js文件404
采用nginx代理静态资源的时候通常会映射到具体的某个目录,需要手动将依赖包的js文件复制到静态目录文件夹下。或者单独的增加一条js映射例如:自定义包里面的 index.js 文件
location ~ /(static/mdiy) {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Credentials true;
}
如果没有采用nginx代理,可能是打包问题,必须要在父工程ms-parent进行打包
1.2. 内网环境如何搭建多站点的站群环境
需要配合ng代理实现,利用ng监听不同端口,代理到服务的真实端口,例如:(详细配置参考发布部署-nginx代理配置)
···
server {
listen 8081;
···
location / {
# 根据实际系统启动等地址配置
proxy_pass http://127.0.0.1:5108;
# 注意:如果使用了堡垒机端口映射,例如:映射端口8989 -> nginx端口80 -> mcms端口8080,需要将mcms端口8080修改成8989,如果遇到访问地址不正确,可以将$host:$server_port直接填写外网ip或域名与端端口(必须与实际端口一致)
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Credentials true;
}
···
}
server {
listen 8082;
···
location / {
# 根据实际系统启动等地址配置
proxy_pass http://127.0.0.1:5108;
# 注意:如果使用了堡垒机端口映射,例如:映射端口8989 -> nginx端口80 -> mcms端口8080,需要将mcms端口8080修改成8989,如果遇到访问地址不正确,可以将$host:$server_port直接填写外网ip或域名与端端口(必须与实际端口一致)
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Credentials true;
}
···
}
···
[!tip]注意:原则上我们是不推荐内网环境单服务器使用站群,在内网情况下,首页访问不要用ip+port直接访问,模板的首页都要使用{ms:global.html/}/index.html 不要使用host标签
1.3. 部署后,验证码始终提示错误
部署没有将头信息进行代理导致
如果是分布式部署,需要自行二次开发增加会话共享机制,参考博文;(政务版本参考文档修改即可)
1.4. 部署后,部分验证码不显示
将相对应的请求验证码路径添加.do,如/code?t=改成/code.do?t=
1.5. centos部署后,登录页面验证码不显示
装fontconfig更新字体缓存 参考博文:https://www.cnblogs.com/zk2020/p/15716730.html
1.6. 静态资源更新问题
修改css、js静态资源等静态资源后,访问发现静态资源没更新
清空访问的静态资源,重新访问,确定访问的资源路径正确
请求资源后,按住shift刷新
请求静态资源后拼接参数,让浏览器重新请求资源
如果使用了国产中间件,需要在中间件中修改配置,具体修改需要中间件厂商配合
[!tip]示例 如在金蝶中,需要修改domains/mydoamin/config下的apusic.conf,修改
,value修改为需要生效的时间;生产上线后需要关闭,会占用服务器资源;
1.7. nginx部署,上传图片时提示Request Entity Too Large 状态码413
按需配置 client_max_body_size
1.8. 通过nginx 配置后 css和js文件 403 无法访问
一般是文件权限与nginx的启动用户权限不一致导致,最简单的方法是直接将nginx 启动用户修改为 root 启动
1.9. 多服务共享模板和静态文件
使用rsync或者做共享,文件服务能达到共享就行 如nfs、fastdfs
1.10. jar包部署好模板无法上传、百度编辑器显示配置错误
- 执行指令需要在jar的当前目录执行
- 确保yml中ms.upload.enable-web的配置为true
- 确保部署的资源(static、upload、template)与jar在同一级,可参考部署文档的资源结构
- nginx 配置
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ .*\.(do|jsp|index)$ {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#静态资源、生成的页面、上传的文件、模板目录
location ~ /(static|html|upload|templets){
#缓存时间 7天
expires 7d;
#项目部署位置,当前项目部署在/home/mcms
root /home/mcms;
}
1.11. 打包懒人jar包运行时百度编辑器错误
1.12. 缓慢http拒绝服务攻击
https://www.cnblogs.com/wsx2019/p/17611226.html
1.13. CORS跨域问题
https://zhuanlan.zhihu.com/p/661237362
1.14. html/1伪静态处理
1、配置nginx ,将所有的.html 映射到 项目/html/1文件夹
2、将模版里面所有链接去掉{ms:global.url/}标签
1.15. https访问问题
使用springboot加证书的方式访问没有问题,如果用nginx代理访问时,{ms:global.host/}标签解析后还是http的形式,可以将模版资源采用//的方式,例如:
<script src="//mingsoft.net/xxx.js"/>
1.16. ${field.hit}失效
需要将field.hit的请求进行代理,/cms/content/文章id/hit.do
1.17. 登录验证码输入错误,报文件找不到
资源文件读取报错,Linux默认读取en的资源文件,导致未找到该文件,可以在java启动的指令配置服务cn 的资源文件
#docker run --name mcms -d -v /home/mcms:/home -p 8080:8080 -w /home --restart=always --privileged=true store/oracle/serverjre:8 java -Duser.timezone=GMT+08 -Duser.language=zh -Duser.region=CN -Dspring.config.location=/home/application.yml,/home/application-dev.yml -jar mcms.jar
1.18. 数据库的时间对不上,少了8个小时
java 启动配置时区-Duser.timezone=GMT+08
#docker run --name mcms -d -v /home/mcms:/home -p 8080:8080 -w /home --restart=always --privileged=true store/oracle/serverjre:8 java -Duser.timezone=GMT+08 -Duser.language=zh -Duser.region=CN -Dspring.config.location=/home/application.yml,/home/application-dev.yml -jar mcms.jar
1.19. 管理页面WEB-INF/manger单独配置在jar外面,修改部分ftl避免重新jar打包
修改: application.yml template-loader-path
template-loader-path: file:WEB-INF/,file:WEB-INF/manager,classpath:/,classpath:/WEB-INF/manager,classpath:/WEB-INF
1.20. Tomcat部署路径问题
tomcat部署会多一层路径,默认多的路径为war包名称
tomcat可以放到root下,避免多一层路径
1.21. Tomcat部署驱动加载问题
如果遇到tomcat启动不加载驱动问题,可以手动把驱动放到lib包下
1.22. Tomcat启动war包没有看到日志信息
默认在Tomcat启动脚本目录,application.yml中logging.file.name参数可按需配置
1.23. 宝兰德部署启动解不开war包
检查war包中是否包含web.xml文件,如果有需要手动解压到部署目录并且删除web.xml文件,在打包时需排除tomcat依赖。
[!tip]部署后出现部分页面404,若tomcat下运行没有问题本质上也是大概率这些原因
1.24. log 打印文件未找到
1.war包使用Tomcat启动,默认log文件在(当前执行指令目录)bin目录
可修改log文件路径
2.jar包log文件在当前执行java指令目录,避免全部在jar同级目录可自行配置目录
1.25. 东方通部署
1.25.1. 编码问题
需要在 HTTP通道管理 中设置URL编码格式为UTF-8
1.25.2. 页面访问404
需要把项目中的WEB-INF/web.xml删除掉
1.26. 金蝶部署
- 打包方式修改为war
- 排除spring-boot-start-web自带的tomcat依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!--移除内嵌tomcat--> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
- 添加Servlet依赖
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
修改入口方法
@SpringBootApplication public class MSApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MSApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MSApplication.class); } }