在笔者的上一篇文章介绍过怎么通过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. JavaScript数字转字符串,字符串转数字

    //--------------------字符串转数字--------------------------- var s = "234"; //1.纯数字转换 //1 字符串在运 ...

  2. PHP的数据加密解密

    本文出至:新太潮流网络博客 /** * [对数据进行加密] * @E-mial wuliqiang_aa@163.com * @TIME 2017-04-07 * @WEB http://blog.i ...

  3. Sql server中的 nvarchar(max) 到底有多大?(转载)

    问题: SQL server中的nvarchar(max)最大的长度是4000个字吗? 如果字段的内容超过4000个字时用什么类型呢?text 还是binary?他们的最大长度是多少?比如字段放的是长 ...

  4. python基础学习24----使用pymysql连接mysql

    使用pymysql连接mysql 安装pymysql pymysql安装可以通过两种方式 使用pip安装 首先简单说一下pip的使用方法 获取帮助 pip --help 升级 pip pip inst ...

  5. 【C语言】 使用Beep() 函数 演奏歌曲

    #include <windows.h> int main(){ ){ Beep(, ); Beep(, ); Beep(, ); Beep(, ); Beep(, ); Beep(, ) ...

  6. Beta阶段第三次冲刺

    Beta阶段第三次冲刺 严格按照Git标准来,组员有上传Git的才有贡献分没有的为0 代码签入图 1.part1 -站立式会议照片 2.part2 -项目燃尽图 3.part3 -项目进展 1.正在进 ...

  7. swift的关联类型

    一.术语:指定类型 typealias:用于给关联类型指定类型: 通过类型推断给关联类型指定类型太过烧脑: 二.类型指定 1.具体类型实现协议后,直接指定:作为普通的泛型类型使用,指定类型即可: 2. ...

  8. 关于 X509Certificate2 找到文件路径的问题

    由于微信退款功能需要用到证书,当调用 X509Certificate2 的时候,会提示找不到文件而报错. X509Certificate2 cert = new X509Certificate2(文件 ...

  9. apache配置文件:http.conf配置详解

    Apache的配置文件http.conf参数含义详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改.主站点的配置(基本配置) (1) 基本配 ...

  10. k8s mongodb 集群配置

    service.yaml apiVersion: v1 kind: Service metadata: name: mongo labels: name: mongo spec: ports: - p ...