項目需求
將服務器物理磁盤上的某個目錄,映射到apache能夠訪問到的url地址上。以此來達到圖片和代碼的分開部署,同時也方便項目後期的文件遷移,當圖片資源變的越來越大,大到需要幾個小時,甚至一整天的時間,來遷移圖片資源時,這種分開部署的優勢,將會更加明顯。
解決方案
方案一
搭建獨立的圖片服務器,用來處理所有的圖片資源,該方案有可能會涉及到資源的跨域訪問問題。
方案二
利用apache的Alias指令,將文件系統的任何部分映射到網絡空間中。
此處只討論方案二的實現方式,具體步驟如下:
1. 新增alias配置文件
在apache的conf/extra目錄下,新建一個文件,文件名隨意,假設爲:httpd-alias.conf,內容如下:
Alias /spider/uploads "D:/spider/uploads"
<Directory "D:/spider/uploads">
Options FollowSymLinks
AllowOverride all
Require all granted
</Directory>
/spider/uploads是圖片資源的web訪問地址。
D:/spider/uploads是一個實實在在的物理文件目錄,用來存儲項目的所有圖片資源。
假設D:/spider/uploads目錄下有一個圖片資源,名字爲test.png,那麼,通過http://域名//spider/uploads/test.png這個url地址,將會訪問到test.png這個圖片。
2. 引入httpd-alias.conf文件
在apache的httpd.conf配置文件中,加入一行,如下:
# Alias
Include conf/extra/httpd-alias.conf
3. 圖片上傳
應用程序中,將圖片資源的上傳根目錄設置爲D:/spider/uploads,同時,將圖片的相對地址,保存在數據庫中。假設我們上傳了一張圖片,物理地址爲D:/spider/uploads/users/avatar/615672566466.png,那麼,只需要將/users/avatar/615672566466.png這一部分保存在數據庫中,然後通過http://域名//spider/uploads/users/avatar/615672566466.png這個url地址,即可訪問到該圖片資源了。