安裝在共用環境的一些經驗與紀錄。
1. 共用 gem/ruby 環境會產生版本不同的議題,這裡採用 typo@Dreamhost 作法,將 ruby/gem 安裝到個人目錄 $HOME 下。
2. 新的安裝雖然提供 typo install,但是一來文件不多,不知要改哪些設定檔,索性直接裝上去。預設裝的 sqlite 的版本,裝完會自行啟動,需要手動關掉。
$gem install typo --include-dependencies
$gem list | grep typo
typo (4.0.2)
$ typo install /path/blog.extremepattern.com
3. 安裝後沒看到 .htaccess SVN 來源複製該檔案,沒有這個檔,共用環境的 Apache 會直接秀出檔案列表,而不是交給 dispatch.fcgi 處理。另外注意
另一個常見導致 500 error 狀態的問題需要修改 dispatch.fcgi 檔。
#!/usr/bin/env ruby
#
require File.dirname(__FILE__) + "/../config/environment"
require 'fcgi_handler'
class RailsFCGIHandler
private
def frao_handler(signal)
dispatcher_log :info, "asked to terminate immediately"
dispatcher_log :info, "frao handler working its magic!"
restart_handler(signal)
end
alias_method :exit_now_handler, :frao_handler
end
RailsFCGIHandler.process!
Update 0817
刪除該段 500 error 碼,觀察看看。
4. 登入 mysql 設定預設編碼。
ALTER DATABASE DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
5. 修改 database.yml 加入 encoding
login: &login
adapter: mysql
host: mysql.xxxx.com
username: foo
password: 1234
encoding: utf8
......
6. 修改 environment.rb 啟動產品狀態。
ENV['RAILS_ENV'] = 'production'
7. 設定資料庫表格結構。
rake migrate RAILS_ENV=production
8. 確認 UTF8 是用另一種軟體確認,用 phpMyAdmin 來確認編碼正確。
[UPDATE] 用一天之後發生奇怪的亂碼行為,用 phpMyAdmin 檢視沒有問題,代表非 MySQL 端問題,似乎是變成共用 ruby 環境導致,登入檢視 ps aux 發現只有 /usr/bin/ruby1.8 dispatch.fcgi
運行,而非 ruby dispatch.fcgi,最後將所有程序刪除後才恢復正常的 ruby dispatch.fcgi 出現。
出現亂碼時可以新增一筆資料進資料庫,秀出來居然也是正常,只是進 phpMyAdmin (UTF8) 看該筆資料卻是亂碼,可見 Coon. 的 encoding 當時應該是 latin1 如下情形。
Server characterset: latin1
Db characterset: utf8
Client characterset: latin1
Conn. characterset: latin1
TCP port: 3306