文章介紹
話說麥站搬家經(jīng)歷,之前網(wǎng)站一直在美橙放著,但是后實在受不了美橙的空間,太不穩(wěn)定了經(jīng)常打不開。一狠心就把網(wǎng)站搬到了BlueHost(以下簡稱BH),因為那個時候,剛搬到BH后感覺還是可以的,但好景不長,現(xiàn)在BH空間越來越不給力了,打開速度也變慢了,時而中斷無響應(yīng),相反在美橙沒有搬的其他網(wǎng)站還穩(wěn)定了。據(jù)說是美橙更換了一批老服務(wù)器。于是決定再次把網(wǎng)站從BH搬回美橙。因為網(wǎng)站是備了案的,所以可以直接搬回來。但是搬回來期間碰到了各種各樣的奇葩問題,下面接著看dedecms遠(yuǎn)程附件圖片整合阿里云存儲OSS插件教程
dedecms遠(yuǎn)程附件,解決空間大小限制問題
搬到BH后網(wǎng)站麥站(mengdiqiu.com.cn)經(jīng)過差不多一年的發(fā)展,所以累積了大量圖片,大概有15000張。因為國外的空間大多是不限制空間大小的。但是要搬回美橙那不一樣了。10000多張圖片差不多有500MB??臻g費太嚇人了。沒辦法誰叫中國的空間貴呢。所以開始折騰dedecms遠(yuǎn)程附件,因為之前大概看過dedecms自帶的遠(yuǎn)程附件功能,以為折騰這個比較簡單。誰曉的,誰曉的,誰曉的哪有這么簡單。仔細(xì)翻了dede遠(yuǎn)程附件是根據(jù)同步本地服務(wù)器和遠(yuǎn)程服務(wù)器的文件來做的,其中包括文章HTML啥的。不的不放棄了。所以準(zhǔn)備自己搞下
這里先說下大概思路,我的目的就是讓發(fā)布和修改文章時下載文章的遠(yuǎn)程圖片然后再上傳到BH遠(yuǎn)程服務(wù)器,這樣我國內(nèi)的美橙的空間只存放一些程序文件和生成的文章HTML
熟悉dedecms的朋友應(yīng)該都知道dedeincinc_archives_functions.php就是文檔的處理函數(shù)了,包括發(fā)布、修改文章都會引用到該文件。而我要修改的就是獲得文章body里的外部資源 GetCurContent 這個函數(shù)了,大概說下這個函數(shù)
1、首先獲取文章內(nèi)容中的所有圖片地址;
2、分析如果是站內(nèi)圖片并且設(shè)置了下載遠(yuǎn)程圖片的話,程序就下載這些圖片;
3、更新圖片信息包括:大小、路徑啥的到uploads數(shù)據(jù)庫方便刪除文章時刪除附件;
4、給下載的圖片加上水?。?/span>
5、替換文章中的圖片路徑$body = str_replace($value, $fileurl, $body);
我現(xiàn)在使用的百度編輯器,所以編輯器圖片上傳遠(yuǎn)程化稍后會在另外一篇文章 dedecms使用百度編輯器(UEditor )圖片上傳遠(yuǎn)程化 中寫到。
我的修改方法是新建一個上傳圖片到遠(yuǎn)程服務(wù)函數(shù),在上面第四步完成后(即打了水印后),就上傳圖片,然后替換文章圖片路徑為遠(yuǎn)程的圖片地址就行了,這里我只是說下思想,代碼我就不貼出來了。上傳函數(shù)可以dedecms自帶的FTP類,另外縮略圖的遠(yuǎn)程保存方法跟這個類似的。
移動文件和數(shù)據(jù)庫到新空間
解決了dedecms遠(yuǎn)程附件的問題,就考慮搬文件和數(shù)據(jù)庫了,首先是下載文件,這里說下一般不用下載DATA目錄,用dedecms程序包的就行,這個目錄下有很多緩存文件,少則幾千,多的過萬。然后上傳所有圖片到遠(yuǎn)程服務(wù)器。其他目錄包括默認(rèn)的dede,include,plus因為修改的文件比較多也就一并全部下載。
購買了200MB的美橙空間,上傳了全新的DEDECMS安裝程序,安裝好之后,然后上傳上面下載的dede,include,plus等幾個目錄覆蓋。然后通過dedecms后臺的數(shù)據(jù)庫備份工具備份好下載之后上傳到新的進(jìn)行還原。
替換老文章的縮略圖、內(nèi)容的圖片為新的遠(yuǎn)程圖片路徑
update dede_archives set litpic = concat('遠(yuǎn)程附件的域名', litpic) where arcrank > -1;
內(nèi)容的圖片路徑就通過dede后臺自帶的數(shù)據(jù)庫替換功能替換body就行了。更新完之后,在后臺隨便點了幾篇文章看下,圖片都正常顯示的。
DedeTag Engine Create File False問題
所有數(shù)據(jù)、文件都準(zhǔn)備好了,心想生成就完事了,結(jié)果....
生成到2000多的時候就報DedeTag Engine Create File False錯了,直接百度、GOOGLE了一下,這里列一下現(xiàn)在網(wǎng)上寫的一些出現(xiàn)這種問題的解決方法。
1、定位報錯文件,打開/include/dedetag.class.php文件直接搜索DedeTag Engine Create File False,把$fp = @fopen($filename,"w") or die("DedeTag Engine Create File False"); 改成$fp = @fopen($filename,"w") or die("DedeTag Engine Create File False:".$filename); //意思就是多輸出一個報錯的文件
2、上面只是找到報錯的文件,然后再更新報錯時就會出現(xiàn)DedeTag Engine Create File False:/a/201212/16524.html,形如這樣的錯誤
3、dedecms更新生成欄目時出現(xiàn)DedeTag Engine Create File False,解決辦法:根據(jù)出錯文件查找到對應(yīng)欄目,查看 編輯欄目->高級選項 里的 列表命名規(guī)則:{typedir}/后面有沒有出現(xiàn)多于的"/"
4、欄目以前是 最終列表欄目 形式,但是沒有刪除該欄目之前的文章就改成 外部鏈接 形式,解決辦法:先把欄目改成 最終列表欄目 形式,清空所有文章后再改成 外部鏈接 形式
5、文章模板文件不存在,就是文章調(diào)用的模板文件有可能被刪除了,或者說文章模板文件沒有讀取權(quán)限 [這個是dedecms官網(wǎng)上給出的解決辦法]
我累個去,上面的方法我試了一個遍,可問題還是沒解決,經(jīng)過幾番折騰,突然覺悟了,空間滿了。因為之前上傳了備份的數(shù)據(jù)庫文件大概有80MB,我可憐的空間只有200MB。哎!登錄空間管理一刷新果然是超了,蒼天,大海,刪除了數(shù)據(jù)庫備份文件之后更新終于沒有報錯了。@fopen($filename,"w") or die("DedeTag Engine Create File False")就是寫入文件出錯,從這點來解釋就好理解了,沒有權(quán)限寫入不了肯定報錯、空間超限肯定不能寫入了,路徑出錯也一樣。至于官方說的那個模板讀取權(quán)限為什么會引起這個問題,我就不知道了,希望知道的朋友告訴一下,謝謝!,
更新數(shù)據(jù)庫archives表時出錯,請檢查!悲劇
當(dāng)晚折騰DedeTag Engine Create File False問題到很晚,第二天還是早早的起來更新網(wǎng)站,莫辦法做網(wǎng)站就是這樣。然后修改保存文章又報錯了 DedeTag Engine Create File False 蒼天啊,這日子還雜個過。又百度搜索嘛,但是網(wǎng)上多數(shù)是說由于升級字段缺失造成的。比如說dedecms5.6主表沒有voteid投票這個字段,升級到dedecms 5.7的時候沒有更新數(shù)據(jù)庫也會出現(xiàn)這個問題,解決辦法如下:
進(jìn)入dedecms后臺 -> 系統(tǒng) -> SQL命令行工具執(zhí)行 ALTER TABLE `dede_archives` ADD COLUMN `voteid` int(10) NOT NULL DEFAULT 0 AFTER `mtype`;
但我這是搬家也不是升級,對不上啊,而且我檢查了字段都是有的
.....10多分鐘過去了
由昨天的問題引發(fā)的答案:數(shù)據(jù)庫滿了,所以說更新數(shù)據(jù)庫archives表時出錯,請檢查!不一定是程序本身的問題,反正出現(xiàn)這個就是往數(shù)據(jù)庫寫數(shù)據(jù)失敗引起的,從這點出發(fā)找答案。
草草的收尾
這次搬家是使用dede這么久來最痛苦的一次,但是dede常見搬家還是比較簡單的,大概步驟列一下:
1、上傳與老空間上的dede版本相同的安裝程序到新空間安裝好;
2、備份老空間上的數(shù)據(jù)庫,一般通過dede自帶的備份工具,也可以通過mysql數(shù)據(jù)庫管理軟件phpmyadmin導(dǎo)出;
3、下載老空間的文件,包括網(wǎng)站模板、圖片、修改過的dede程序文件等上傳到新空間;注:data目錄有數(shù)據(jù)庫連接信息,如果數(shù)據(jù)庫也搬家了記的要修改再上傳;
4、使用空間自帶的三級域名訪問新空間網(wǎng)站、導(dǎo)入第2步中備份的的數(shù)據(jù),更新緩存,一鍵更新;
5、測試無問題后,解析域名到新的空間;