由於本站之前在windows上執行,有時候會造成Apache莫名奇妙地失靈,所以才想將server移至Linux Ubuntu上執行。這樣子所吃的資源可能也會比較少一點。
以下紀錄了移機的過程,主要遇到的問題有...編碼以及轉簡潔網址的問題。
[事前準備工作]
- 將Windows的資料備份出來
- 將apache底下的lifetype整個資料夾壓縮備份起來(用zip壓縮,傳至Linux上再用unzip解壓縮)
- 進入phpMyAdmin後,將lifetype資料庫輸出至檔案中lifetype.sql(請選擇「使用完整新增指令」)
- 在Ubunte上安裝Apache、Mysql、PHP(在這邊不多加著墨)
- sudo apt-get install apache2
- sudo apt-get install mysql
- sudo apt-get install php
- sudo apt-get install php-mysql
- 將原本Windows的lifetype程式碼,傳至apache2預設資料夾/var/www/
- unzip lifetype.zip
- 上網下載phpMyAdmin,用來管理mysql資料庫
- wget http://xxxxx.tar.gz/
- tar -xvzf xxxx.tar.gz
[重建Database]
- 利用phpMyAdmin建立一個lifetype資料庫,校對要調成utf8_unicode_ci
- 在Windows匯出的lifetype.sql檔前面加上
- SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;
- SET NAMES utf8;
- 在cmd line下指令,匯入lifetype.sql檔
- mysql [lifetype DB name] -u[Name] -p[Password] < lifetype.sql \
--default-character-set=utf8 - # 因為mysql的預設編碼為latin1,因為需設定正確的character-set才能匯入
- # 或是直接更改mysql預設的編碼方式為utf8就更乾脆了,可修改mysql的設定檔my.cnf
- # [client]
# default-character-set=utf8
# [mysqld]
# default-character-set=utf8
# default-collation=utf8_general_ci
- mysql [lifetype DB name] -u[Name] -p[Password] < lifetype.sql \
- ---- Error Message ----
都按照上面的步驟做的話,應該就不會有所謂的亂碼出現才對。一開始我沒就直接匯入,也不疑有他,結果就犯了全天下男人都會犯的錯…ERROR 1064 (42000) at line 330: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'xxxxxx' 主要的原因就是因為編碼問題,因為lifetype.sql中挾雜著鼎鼎大名的「許功蓋…」含有跳脫字元「」,所以就視為字串已結束,就出現錯了。
不過我後來都照上面的做了,卻還是不斷出現同樣的錯誤訊息纏著我,讓我陷入人生中的低潮,後來才發現,原來是因為在Windows匯出lifetype.sql檔案,沒有選擇「使用完整新增指令」,所以才會不斷地出錯,當我又重新試了一次之後,終於成功了!!!讓我流下了感動的眼淚,並且大喝了一聲X,響徹雲霄!!!
[建置Lifetype網站]
- 把原本在Windows上的lifetype資料夾複製到/var/www後,建議是把wizard.php抓回來,重新建置一遍,這樣子會比較簡單一點,否則要自己動手修改一些東西。
- 修改/lifetype/config/config.properties.php內的db_host為
$config['db_host'] = localhost - 將tmp及gallery這兩個資料夾權限改為777
% cd /var/www/lifetype
% chmod 777 tmp
% chmod 777 gallery - 為了安全性起見,不將gallery底下的資料夾權限全開,因此必須將它的Owner改為apache的名字,我的主機上apache的名稱為www-data
% chown -R www-data gallery - 看gallery底下有幾個資料夾就改幾個資料夾的權限,因為這些都是blog user上傳檔案的資料夾,因為本站只有一個user,blog_user_id為1,所以就只有一個資料夾「1」
% cd gallery
% chmod 755 1
再將1資料夾底下的previews&previews-med的權限改成755
% cd 1
% chmod 755 previews
% chmod 755 previews-med
- 修改/lifetype/config/config.properties.php內的db_host為
- 輸入網站的網址,試試看是否正常運作。照理來說,到目前為止應該都是正常的。
% /etc/init.d/apache2 start
如果出現Error Message: apache2: Could not determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
在/etc/apache2/apache2.conf中,加入ServerName localhost即可 - 但是,要進入admin.php的後台管理系統卻會失敗,因為原本網站的IP跟新網站的IP不一樣,而原本的DB中紀錄的base_url導致網頁中的連結都不正常了。
@解決方法:利用phpMyAdmin進入lifetype的DB,進入lt_config這個Table。修改其中的兩項參數:
base_url
blog_does_not_exist_url
將這兩個url參數中的網址改成新的IP就行了! - 網站中有使用authImage外掛,可能會發現在產生驗證圖檔時,出現錯誤訊息「You don't have GD support compiled in, we cannot create an authimage. Please activate GD Support.」。這是因為你的php5沒有使用GD module,因為只要將GD module安裝起來即可,以下為Ubuntu的做法
% apt-get install php5-gd
% /etc/init.d/apache2 restart
[使用簡潔網址]
- 有使用簡潔網址的人,因為Ubuntu預設沒有掛載mod_rewrite,所以要先將module rewrite掛進來,因為apache在安裝時,其實已經裝載好,只是尚未load而已。而load的語法已寫好放在/etc/apache2/mods-available中,只要做個link放至mods-enabled,apache就會自動去load了
% sudo ln -s /etc/apache2/mods-available/rewrite.load \
/etc/apache2/mods-enabled/rewrite.load
或是
%sudo a2enmod rewrite
- 修改/etc/apache2/sites-enabled/000-default
先找到
<Directory /var/www>
...
</Directory>
將其中的AllowOverride後的None改為All
Options後面要有FollowSymLinks
然後重新啟動Apache
/etc/init.d/apache2 restart - 順利的話,應該就一切正常了:)
可惜的是,我一點也不順利....Orz,我開網頁時,一直遇到error 500,打開apache的error.log檔來看時,顯示的錯誤是:「/var/www/lifetype/.htaccess: </Files> without matching <Files> section 」我一直不知道是哪裡的問題,千萬百試之後,才發現,我的.htaccess檔的編碼是utf8,後來把它改成ansi編碼就OK了~我猜可能是從windows複製過來linux後的才變這樣。
沒有留言:
張貼留言