项目重新部署后图片和静态文件加载不出来解决方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目重新部署后图片和静态文件加载不出来解决方法相关的知识,希望对你有一定的参考价值。

参考技术A 在服务器部署过项目后,访问项目发现有的图片加载不出来,浏览器控制台报出Failed to load resource: net::ERR_CONTENT_LENGTH_MISMATCH错误。

这个问题是nginx 反向代理访问不到资源缓存,可能原因:

一、查看nginx的log,发现错误如下:

2015/05/27 02:19:10 [crit] 29263#0: *72 open() "/usr/local/nginx/proxy_temp/3/00/0000000003" failed (13: Permission denied) while reading upstream, client: IP, server: localhost, request: "GET /项目名/frame/js/jquery-1.10.1.min.js HTTP/1.1", upstream: "IP地址:8080/项目名/frame/js/jquery-1.10.1.min.js", host: "IP地址", referrer: "IP地址/项目名/"

原来是 nginx 的工作进程对大文件做了缓存,这个缓存在 %nginx%/proxy_temp 目录下,主进程在读取缓存的时候由于权限问题而无法访问。ps nginx 可以看出主进程用户是 webapp(启动 nginx 的用户),工作者进程是 nobody 用户(nginx 默认的工作者用户就是 nobody,如果你没有配 user 指令的话),proxy_temp 目录所有者就是工作者进程的用户(可以 ll proxy_temp 对此进行验证)。

查看Nginx运行进程,确认运行用户为“tomcat”;

ps –ef|grep nginx

2、检查proxy_temp目录所属用户,nginx 默认的工作者用户就是nobody;

ll proxy_temp

3、停止nginx并将nginx目录权限设置为“tomcat”用户;

./nginx -s stop

chown -R tomcat:tomcat nginx

4、修改%nginx%/conf/nginx.conf配置,在worker_processes 前添加: user tomcat ;

5、重启nginx即可。

二、nginx服务器内存耗尽。

查看nginx服务器内存使用情况,

先 ps -ef | grep nginx ,会出现5个关于nginx的进程,如果5个进程的id分别为 100、101、102、103、104

杀掉所有nginx进程 kill -9 101 102 103 104

进入目录 cd /usr/sbin

重启 nginx -c /etc/nginx/nginx.conf

至于 nginx -s reload 不建议使用,本人亲试,有时候无效

启动tomcat后,每次修改java文件都会重新加载整个应用(像重新部署),怎么修改让它不重新加载!

楼上不懂就不要乱说。 这个需要更改tomcat的开发模式的
要设置server.xml中的Context reloadable="true", true自动重载(不是重启!), false手动重载。(如果项目在Tomcat中,应该去Tomcat目录设置。)
参考技术A 使用ant自动编译,具体你可以了解一下。
修改平常的代码只需要点击一下编译就ok了,不过加方法,修改配置文件什么的,还是需要重启tomcat的。
参考技术B 你说的是在eclipse开发当改动了java文件并保存之后tomcat都会重新加载的问题吧?这个好像没有什么方法哦,因为你保存了java文件,修改的java会重新更新部署到tomcat里面,tomcat需要重启后才能使修改生效,因此需要重新加载。我现在一般都是修改N多个java文件,改完后ctrl+shift+s一次性保存。本回答被提问者采纳

以上是关于项目重新部署后图片和静态文件加载不出来解决方法的主要内容,如果未能解决你的问题,请参考以下文章

刚部署的程序加载不出来css,js以及图片

手机浏览器加载不出来图片怎么办?

SpringBoot集成百度UEditor图片上传后直接访问404解决办法

vue项目部署CSS失效VUE部署后css样式加载无效和失效多种情况解决方案

SpringBoot vue图片上传不能立即回显问题解决

spring boot web项目在IDEA下热部署解决办法(四步搞定)