最近的一个项目中开发将上传的图片放置在tomcat下的webapps目录的项目中了,正式环境的发布以前都是开发去做的,测试环境也是我去部署更新的,我们习惯的是先停止tomcat,然后将war包ftp到项目目录中,使用jar -xvf test.war这种方式去解压war包,并且使用备份的配置文件去替换下WEB-INF/config目录下的配置文件(这个就是我使用jar命令的关键,备份的配置文件不会被清除,如果使用tomcat启动自解压的形式,我的配置文件备份将会一无所有)。但是悲催的是流程改了,正式环境的发布由运维童鞋去搞定了,他们二话不说,直接咔嚓一下将整个项目目录删的干干净净,然后启动tomcat,好快啊。可惜啊。。我们的图片都木有了。
还好,这个图片用处很小,怎么解决这个呢。想了想,只能采取目录映射的方法了。
什么叫目录映射呢?用我们的项目举例来说吧,假设上传的图片名称为test.png,那么项目访问该图片的URL为“http://127.0.0.1/test/uploads/img/test.png”,而我们图片实际存放在服务器中的路径为/home/uploads/img,我们所需要实现的就是当浏览器访问http://127.0.0.1/test/uploads/img/test.png时,却是查找服务器上/home/uploads/img目录下的test.png。
怎么做呢。我们首先进入到tomcat根目录下,然后vim conf/server.xml,在<Host></Host>标签中添加下面一行文字,保存后,重启apache即可。
<Context path="/test/uploads/img" docBase="/home/uploads/img" debug="0" reloadable="true" />
PS:路径最后面不要再添加/,否则报错。