在笔者的上一篇文章介绍过怎么通过linux的软连接在不修改上传代码的情况下,将上传到项目路径下的图片改为上传到项目外面,防止重新部署后图片被删除了。同时还可以直接通过类似访问静态资源的方式访问图片。但是,笔者发现一个问题;如果运维人员在重新部署后忘记做软连接,那么图片就上传到项目路径下了。如果再重新部署,这部分图片就丢失,这就是一个bug。
    为了解决这个文件丢失问题,我们将图片上传到一个项目外面的绝对路径,这样就不会在忘记做软连接的时候丢失了。对于怎么访问这个文件呢,还是和上一篇文章一样,做个软连接就可以。
    下面通过一个案例来解释下

一、实战案例

(1)上传代码
        这个上传没啥说的,只不过是要上传到一个绝对路径下面。比如我们原来是上传到项目的/images/packing/下;
    现在我们在tomcat外面建一个文件夹,如:/home/tomtop1927/test/  这样这个test就相当于我们的原来项目根目录了。在我们上传完之后,图片的真实地址类似于:/home/tomtop1927/test/images/packing/100_abc.jpg 。    
        
        其实这个绝对地址是不应该写死的,最好是通过properties去读取最好。对于上传的代码就不介绍了。
(2)建立软连接
        注意:现在test文件夹下面没有imges这个文件夹,可以先自己手动建立一个,然后再进入我们项目路径建立软连接。

        其实这个建立软连接和上一篇文章是一样的,没什么区别,之所以介绍就是这步比较重要。
(3)tomcat配置开启软连接
           怎么开启不介绍,见上一篇文章。笔者用的tomcat8,所以con/context.xml配置<Resources allowLinking="true"/>
(4)完成
        通过上面的3步就完成了,我们把图片上传到了项目外面的一个绝对路径上,这样假设运维人员忘记配置软连接,上传也不受影响。就是访问这文件的时候受影响,当访问不了的时候,运维人员配置个软连接就ok了。总之保证了文件不丢失。

二、对比

        这里的对比是和我上一篇博客介绍的软连接的对比
    (1)上一篇博客中上传代码是完全就和上传到项目根目录下的代码一样。而本次上传的代码需要把图片存的位置的真实的绝对路径给写到代码中。
    (2)除了上面说的代码不一样外,其他操作均一样。
    (3)本篇博客介绍的这方案的优点是:上传永远不会出问题,即使忘记软连接,也还是上传到放文件的地方。
         缺点是:这个绝对路径得写到代码里,虽然可以通过配置properties的方式来解耦,但是变更路径时需要运维人员去修改。
 

 

 



linux下使用软连接之案例二的更多相关文章

  1. linux下Oracle11g RAC搭建(二)

    linux下Oracle11g RAC搭建(二) 一.安装前配置 网络的配置 IP占用測试 进入windows下.运行cmd,使用ping命令验证网段是否被占用. 注:用哪个网段都行,一定保证不要被其 ...

  2. linux下oracle11G DG搭建(二):环绕主库搭建操作

    linux下oracle11G DG搭建(二):环绕主库搭建操作 环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本号 RedHat Enterprise5.5.Oracle 11g 1 ...

  3. linux下通过软连接实现访问项目路径外面的资源

            在javaweb项目开发中,图片上传是个比较常见的场景.一般都是在项目路径下建个文件夹,然后上传到该文件夹下:这样这个图片就可以和静态资源一样被直接访问.这样的好处就是访问这图片特别方 ...

  4. Linux下的软连接和硬链接

    由于教学上的原因,需要下载Android源码,后来使用repo时,系统提示需要python2,我的系统中是两个都有的,但是默认是python3,无法下载,通过创建了个链接搞定,下面就来说说linux下 ...

  5. LInux下桥接模式详解二

    上篇文章导入博客园的比较早,而这篇自己在写的时候才发现内部复杂的很,以至于没能按时完成,造成两篇文章的间隔时间有点长! 话不多说,言归正传! 前面的文章介绍了桥接模式下的基础理论知识,其实本节想结合L ...

  6. Linux SendMail发送邮件失败诊断案例(二)

    Linux上Sendmail经常由于一些配置问题,导致邮件发送失败,下面整理.收集了一些邮件发送失败.异常的案例. 案例1:在新服务器上测试sendmail发送邮件时,发现邮件发送不成功,检查/var ...

  7. Linux下的Backlight子系统(二)【转】

    转自:http://blog.csdn.net/weiqing1981127/article/details/8515847 版权所有,转载必须说明转自 http://my.csdn.net/weiq ...

  8. Linux下文件误删除恢复案例

    说明:将/etc/profile文件删除,然后恢复 在linux中为什么讲文件删除还能恢复呢? 详见:文件删除原理 http://blog.csdn.net/grantlee1988/article/ ...

  9. Linux下Nginx的安装(二)

    一.安装Nginx ## 安装前准备 ## #GNU编译器集合 #Nginx编译需要PCRE #在Nginx的各种模块中需要使用gzip压缩 #在Nginx中,如果服务器提供安全网页时则会用到Open ...

随机推荐

  1. VS2008 试图运行未注册64位调试器组件

    安装即可

  2. 开源免费的文档协作系统 onlyoffice平台轻松部署

    请移步至此,更详细:http://blog.csdn.net/hotqin888/article/details/79337881 ONLYOFFICE是一个免费的.开源的企业办公套件,用于在线组织团 ...

  3. 【Python】pydot安装失败解决方法

    使用keras时输出网络结构需要用到pydot,总是安装失败,最后按照下面这样的步骤成功了. 1.安装graphviz:pip install graphviz 2.安装graphviz软件,地址在: ...

  4. LeetCode题解之 Letter Case Permutation

    1.题目描述 2.问题分析 可以使用递归的方法解决,参考了别人的答案才写出来的. 3.代码 vector<string> letterCasePermutation(string S) { ...

  5. PHP检查当前数组为几维数组

    本文出至:新太潮流网络博客 /** * [TestArray 检测数组是一维还是二维] * @E-mial wuliqiang_aa@163.com * @TIME 2017-04-07 * @WEB ...

  6. w3school 基础学习

    http://www.w3school.com.cn/ http://www.w3school.com.cn/sql/sql_quickref.asp

  7. Chrome 无法加载Shockwave Flash

    遇到的问题 Chrome经常出现上图的提示,把Adobe Flash重装了N多次也是无法解决此问题,经多次尝试终于解决此问题. 解决方法 1.在Chrome地址栏输入:chrome://plugins ...

  8. MySQL主从复制半同步复制原理及搭建

    在MySQL5.5之前的版本中,MySQL的复制是异步复制,主库和从库的数据之间存在一定的延迟,比如网络故障等各种原因,这样子容易存在隐患就是:当在主库写入一个事务成功后并提交了,但是由于从库延迟没有 ...

  9. windows Server 2012/2016 路由和远程访问,PPPOE,ADSL,连接接口时出现一个错误,连接被远程计算机终止

    经过查询资料,是由mprddm.dll的bug引起的. 修改位置: 将je修改为jmp. 查找修改位置,可参考 前面的RasGetPortUserData的调用,或者 后面的 字符串 64位dll可使 ...

  10. django复习-1-环境搭建和创建项目

    一.虚拟环境搭建 1. 创建虚拟环境,需要联网 mkvirtualenv django_py3_1.11 -p python3 2. 安装Django 使用django 1.11.11版本,注意需要联 ...