1. 程式人生 > >linux下通過軟連接實現訪問項目路徑外面的資源

linux下通過軟連接實現訪問項目路徑外面的資源

技術 虛擬目錄 color 相關 上傳文件 eclipse 擔心 成功 tail

在javaweb項目開發中,圖片上傳是個比較常見的場景。一般都是在項目路徑下建個文件夾,然後上傳到該文件夾下;這樣這個圖片就可以和靜態資源一樣被直接訪問。這樣的好處就是訪問這圖片特別方便;缺點是重新部署時要手動把圖片備份,不然圖片就丟失了。

今天通過在網上查閱一些資料,找到了如下2個方案:
(1)配置tomcat虛擬目錄
      • 該方案的好處是虛擬目錄下的文件也可以類似於靜態資源一樣這樣訪問
      • 美中不足的是上傳圖片還需要上傳到虛擬目錄的絕對路徑,在網上沒看到怎麽獲取虛擬目錄的絕對路徑的方法;個人想到的解決方案就是配置一個properties文件,裏面放絕對路徑。
更多相關內容可以在網上查閱。。參考:http://blog.csdn.net/l1028386804/article/details/52389722

(2)通過linux的軟連接實現
      • 該方案的好處就是可以和類似靜態文件一樣訪問,上傳就直接上傳到項目根目錄下的文件夾即可。和文章開頭說的那種方案在代碼上來說是一樣的。
      • 缺點是需用通過linux命令對上面項目根目錄的上傳文件夾做軟連接,連接完之後上傳的文件其實是上傳到了軟連接的文件夾去了。
      • 還有個問題是需要配置tomcat支持軟連接
綜合上面2種情況,我選擇采用軟連接的方式,下面談談linux軟連接

一、軟連接介紹

軟連接命令:
  1. ln -s 源文件 目標文件
具體介紹可參考:http://www.cnblogs.com/crazylqy/p/5821105.html

二、實際案例

(1)代碼中,我們把文件上傳到項目路徑(webRoot或者webapp)的下的images/ 文件夾中;這個上傳怎麽實現,不介紹。 (2)linux中的處理
    • 在linux中建立一個名為images的文件夾。(這個文件夾名字要和你準備軟連接的文件夾名字一樣,這個文件夾的位置隨便在那都可以,但是不一般都在tomcat的外面。)
技術分享
    • 進入到tomcat下的部署好的項目路徑下,創建軟連接。源文件夾是上面創建的該文件夾,目標文件夾是後面我們上傳的文件夾。技術分享
建立成功後就可以看到images文件夾下有個箭頭,用圖形界面看其實就是個快捷方式。

技術分享
    • 建立軟連接後,可以測試上傳文件,會發現文件上傳後跑到tomcat外面的文件夾裏面去了。但是用訪問靜態文件的方式現在還是訪問不到,會報404。原因是tomcat默認不支持軟連接,需要在conf/context.xml中開啟。配置方法如下:

tomcat5、6、7版本:

<Context allowLinking="true" />

   tomcat8、9版本:

<Context> <Resources allowLinking="true" /> </Context>

   更多配置參考:http://www.cnblogs.com/wuxun1997/p/6769971.html

    • 配置完後,就大功告成了。

更多軟連接的案例可參考:http://blog.csdn.net/ggmmqq/article/details/8253570

http://www.cnblogs.com/wuxun1997/p/6769971.html


三、軟連接的註意事項

(1)軟連接的刪除需要特別註意,具體可參考

http://www.cnblogs.com/cartsp/p/6437046.html

http://blog.csdn.net/zhenwenxian/article/details/16369767

(2)筆者發現eclipse的重新部署還是會把軟連接的源目錄下的文件刪除,這個是個很奇怪的地方。不過運維人員重新部署肯定不是用eclipse的。所以不用擔心。

(3)重新部署項目後,軟連接需要重新建立



後續還有一篇介紹linux軟連接的文章,推薦閱讀。











linux下通過軟連接實現訪問項目路徑外面的資源