記一次物件儲存服務遷移過程
物件儲存服務是現在很多團隊都在使用的技術,當然還有很多寫部落格的人拿物件儲存來當圖床,這樣一來把圖片上傳到物件儲存服務上,自己的網站插入圖片的時候直接外鏈過去,不用耗費自己伺服器的流量,節省了資源也加快了網站圖片的訪問速度,簡直是一舉兩得。
我從2016年發現七牛雲的物件儲存服務可以用作圖床使用,所以之後在MikeTech創作的所有的文章配圖都是傳到七牛雲上再連結到網站上的,兩年下來效能很好,再加上每月七牛雲10G的免費流量,也沒花錢,唯一的不好就是七牛的免費版物件儲存不支援SSL,所以 MikeTech 兩年來都沒有變成全站https,不過 who cares,大家來我的網站只是看文章,又沒有什麼使用者資料之類的,不存在安全問題,所以我也沒有去管這邊的問題,就這樣兩年過去了。
起因
前幾天突然收到這樣一封郵件,顯示我的七牛物件儲存測試域名要在七天之內被回收了,七牛的這個測試域名是我從2016年開始使用他們服務的時候就開始使用,MikeTech在2016年之後所有文章的配圖URL都是這個地址。
突然告知我測試域名要被回收了,的確是一個很嚴重的問題,這個域名被回收之後,MikeTech在2016年之後的文章配圖就都無法訪問了。
那麼看這樣子七牛雲肯定是用不了了,那也不能就讓我兩年文章的配圖打水漂啊。還有以後的配圖往什麼地方存的問題,最後決定以後開始使用阿里雲的物件儲存服務。
那麼首先要處理的就是先把舊的資料遷移上去了。我的大概思路是先把七牛的所有圖片按照以前的結構下載下來,然後再按照原封不動的結構傳到阿里OSS上,之後在網站的資料庫中執行一個指令替換舊的測試域名為阿里給的域名就大功告成了。
下載七牛雲的檔案
物件儲存一般都是伺服器自動化操作的,像我這種人工想手動下載所有檔案的人不多,當然我也沒有那麼傻一張一張的下載。看了一下七牛的開發文件: ofollow,noindex">https://developer.qiniu.com/kodo/sdk/1242/python
照著他們的示例程式碼稍微改了一下寫了一個Python指令碼:
執行指令碼之後就可以把所有的圖片下載下來啦:
看了一下的確所有的圖片都被下載到了本地,那麼到此整個遷移已經完成了一半了
上傳所有檔案到阿里雲OSS
阿里雲OSS和七牛的操作方法差不多,我創立了一個華東2區的Bucket。他們家服務給的開發文件也很詳細,直接把文件上的程式碼複製下來隨便改改就能把所有檔案傳上去了:
資料庫替換URL
那麼接下來就沒什麼工作了,連上網站的資料庫,找到存放部落格的表,執行替換語句
update wp_posts set post_content = replace(post_content,"http://o9oxwxci5.bkt.clouddn.com/","https://miketech-pic.oss-cn-shanghai.aliyuncs.com/")
顯示操作成功:
經過上面一系列操作,MikeTech的圖床已經從七牛雲切換到了阿里雲並且舊的資料也一併遷移了過去。
為了簡化以後的寫作流程,我還寫了一個Python指令碼來幫我自動壓縮上傳圖片,以後寫文章的時候把圖片拽到黑框裡面點下回車,會到編輯器裡面直接貼上圖片就過來了,不要太爽
七牛雲在過去的兩年真的給我帶來了很多的便利,也省了很多的錢,不過突然回收測試域名的這個行為的確很過分,要是我是個什麼都不懂得小白豈不是得500多張圖片一張一張下載然後再傳到新的地方,希望大家以後謹慎選擇七牛雲的服務,指不定要出什麼新的么蛾子呢。