這個線上文件庫資料豐富,查找方式也很方便。
這個線上文件庫資料豐富,查找方式也很方便。
如果在linux下run Ruby on Rails的ap看到這個錯誤
那麼
請修改config/database.yml,針對所需要的資料庫,加入
socket: /var/lib/mysql/mysql.sock
當然,那個mysql.sock的路徑,要視實際環境而訂
shell下下 mysql指令,然後打 status就可看到。
遇到client denied by server configuration: proxy:balancer://mongrel_cluster/error/HTTP_FORBIDDEN.html.var的問題。
Google仍然是最佳的朋友 – 以下是相關有用的資源。
2. http://blog.wishlisting.com/?p=20
我的問題發生在 apache 關於mod_proxy 的設定,
因此必須在vhost設定的部份關於Proxy balancer的部分加上兩行,如下:
<Proxy balancer://mongrel_cluster>
BalancerMember http://127.0.0.1:8000
BalancerMember http://127.0.0.1:8001
Order allow,deny
Allow from all
</Proxy>
這樣就OK了。
1. 拷貝或建立設定檔連結到etc
as root,
mkdir /etc/mongrel_cluster
ln -s /你的rail應用程式路徑/config/mongrel_cluster.yml /etc/mongrel_cluster/自訂名字.yml
2. 拷貝啟動檔到 /etc/init.d
cp /mongrel_cluster gem的路徑/mongrel_cluster_gem/resources/mongrel_cluster /etc/init.d/
*如果不知道在哪裡,可$ find / -name mongrel_cluster -print
3. 修改屬性為可執行,並修改裡面關於USER的內容
chmod +x /etc/init.d/mongrel_cluster
vi /etc/init.d/mongrel_cluster
找到USER= mongrel這行
改成你要跑這個app的user id。
4. 把服務打開
chkconfig mongrel_cluster on
5. 測試
service mongrel_cluster start
curl -I http://localhost:8001
6. 如果像我一樣,ruby裝在 /usr/local/bin
那麼會需要以下動作,否則服務也起不來,會有/usr/bin/env: ruby: No such file or directory
的錯誤。
ln -s /usr/local/bin/mongrel_rails /usr/bin/mongrel_rails
ln -s /usr/local/bin/ruby /usr/bin/ruby
1. 安裝,as root
$ gem install –include-dependencies mongrel
$ gem install –include-dependencies mongrel_cluster
2. 設定
$ mongrel_rails cluster::configure -e production -p 8000 -a 127.0.0.1 -N 2 -c /source的路徑
-a 聽這個 ip
-N 啟動幾個mongrel instance
-c 啟動的rails程式路徑
3. 啟動 mogrel cluster
mongrel_rails cluster::start
4. 測試有沒有開起來
$ curl -I http://127.0.0.1:8000
HTTP/1.1 200 OK
Connection: close
Date: Fri, 17 Aug 2007 10:31:56 GMT
ETag: “46c0d832-1d80″
Last-Modified: Mon, 13 Aug 2007 22:16:18 GMT
Content-Type: text/html
Content-Length: 7552
5. 關閉mogrel cluster
mongrel_rails cluster::stop
OK了…
寫下主觀的意見,也正在實驗中,可討論指教。
我的設定前提是,一個有機會長大的web 2.0網站,但是初期投資與maintain的成本盡量壓低。設定網站的流量目標是Alexa排名約一萬名,伺服器回應速度與頻寬回應不讓使用者感覺陽春,整體設備環境有企業級架構,雖非企業級水準。
台灣的頻寬是貴的。租用shared hosting對於一個有成長企圖心的網站限制太多,給的流量太小。租用dedicate server也是不小的花費,而且通常得簽一年約。採用國外hosting方案,因主機在國外,回應速度並不甚佳。
因此,可採用書房創業法。用ADSL+便宜硬體+無比的耐心與技術來開始。
規劃與費用大概估算如下
1. 硬體
* 2台 Web Server:採用二線品牌準系統,我目前用技嘉的ST000,散熱效果看起來不錯,燒機程式讓loading飆到22,溫度也沒上升。
透過網路上拼湊,1G RAM,2顆160G ATA硬碟,加一張網路卡,一台一萬圓有找。這種機器有安靜,體積小的優勢,適合放在書房。
這兩台上面還應該跑 mail服務,DNS服務與一些Batch的工作,,並備份DB上的資料。
* 1台DB Server:同上規格,把ram加到2G,不須加網卡,一台一萬圓左右。
上面可用來作version control,備份web上的資料。
* 一個多WAN口的in-bound/out-bound 負載平衡路由器:大概一萬五左右。
用作ADSL撥接、防火牆、IDS、switch、頻寬分散器。
*選購:如果錢再多,買個UPS,風扇…等。
2. 軟體
* Linux,免費
* Apache/MySQL/Ruby On Rails/Bind/Postfix/…,免費
3. 頻寬
兩條Hinet 4M/1M企業ADSL固三IP方案,一個月約1,600~1,700,兩條約3,300/月。
或採用兩家不同的ADSL,試著做頻寬的備援。
4. 人力
看你要發多少薪水,這部分自行估算。
5. 電費
一個月1000元為上限(每台電腦假設200W左右)。
分兩階段進行
第一階段:一台電腦,一條ADSL,購買負載平衡器,頻寬1M。
開辦費用:兩萬五(電腦+負載平衡器)。
每月固定支出:兩千元(ADSL+電費)+薪資。
三個月後,第二階段:添購兩台電腦與新的ADSL,完整Web-Database架構,頻寬增為2M,並有效提升頻寬備援性。
費用:兩萬元。
每月固定支出:四千元,跟定期定額買基金一樣。
優點陳述
1. 開辦費用低,每月支出低。
2. 主控性高,具有高彈性。
3. 完整架構,未來移轉機房容易。
4. 適當的頻寬,可應付較大流量需求,並可視情況擴充至4M。
5. 冬天來了,書房的三台Server可當暖器使用。
需考慮
1. 技術維護管理能力,本部份需要多讀書,多操作。
2. ADSL是否能跑到1M,須先詢問,再行裝設。
透過4M/1M或8M/768k的ADSL,一般工程師都可輕易架出小型流量網站。
遇到要架設中型,到大型流量的網站,服務水準要ok,而又要能夠省cost的方案是我目前在探究的方向。
頻寬問題處理:
目前看到最大的ADSL頻寬是12M/1M。如尚不考慮有條件限制的光纖服務,若要1M以上的對外流量,勢必要架設兩條以上的ADSL來分散流量。
考慮是架站,而非架設網咖或宿網服務。因此需透過in-bound load balancer的概念來實質達到將進來網站的流量分散到不同的ADSL上。
最簡單的作法是在DNS Server上,設定超過一個以上的dns正解,並把TTL時間做調整。
假設網域名稱是 foo.bar,可在DNS Server上對這個名稱設定多個A Record,如
foo.bar. 60 IN A 123.45.67.8 # Hinet ADSL 固定IP
foo.bar. 60 IN A 123.45.67.9 # Giga ADSL 固定IP
TTL的時間調短,那麼有人想連上http://foo.bar時,就會來詢問他的IP位址,IP會隨機給予,就可將流量分散到不同條ADSL上面。
這種 DNS RoundRobin分散流量的作法,有眾多的缺點,無法做到實質的負載平衡。
購買多WAN口具in-bound load balancing功能的路由器
看了網路上幾個產品,例如TAMIO 1600 4 Wans 自動雙向負載平衡器 ,價格還可以接受,而且支援4 port,有機會用ADSL做到in-bound 4M的頻寬。透過內建DNS Server,加上一些演算法,在流量分散上面,可以做到比較好的結果。
有無針對ADSL連線作流量分散的solution?
因為我有拉Giga的ADSL,所以遇到這個額外的問題。沒用Giga ADSL的人或許不知道,Giga跟Hinet因為費用的關係,兩者機房沒有專線連通。如果站台架設在Giga,Hinet的User連上來有時會覺得超慢。
針對我的環境,如果我有一條Giga ADSL,與一條Hinet ADSL的線路,我想讓DNS Server遇到來自Giga DNS詢問時,回應我這邊Server的Giga IP。而遇到剩下的DNS詢問時,回應我這邊Server的Hinet IP。也就是讓來自使用Giga ADSL的使用者,總是走我的Giga ADSL進來我的網站。而使用其他連線的使用者,總是透過我的Hinet ADSL進來我的網站。
這應該可透過Bind的修改或設定來作,但目前尚未讀書,google了一陣子亦尚未看到有人這麼做。持續研究中…
用Aptana作為Ruby on Rails的開發IDE,用了幾個禮拜了,感覺不到比起先前的RaidRails有很大的進步。
現在想建立cvs環境,發現Aptana並無內建支援cvs plugin,google了一下,放棄。改使用他的Sync Manager,透過ftp或sftp的方式來同步資料,做備份或上傳用。
我先備份大約15G的資料,透過ftp傳到server上。結果aptana新開啟的同步預覽java視窗,吃掉了大部分的cpu 資源。
15G的資料透過11M的wireless要傳很久,但我的XP筆記型電腦被這個視窗拖著,不太能作業,滑鼠移動會延遲。因此 ctrl+alt+del,找到拖慢速度的程序(某個javaw),把他的優先權調整為"低",弄成背景在跑,電腦操作速度才恢復正常。
Aptana還有甚多要改進的地方。
安裝 capistrano時,遇到以下問題,google看不到什麼資料。
#gem install –include-dependencies capistrano
ERROR: While executing gem … (Gem::InstallError)
invalid gem format for /usr/local/lib/ruby/gems/1.8/cache/needle-1.3.0.gem
試了兩次後,決定rm /usr/local/lib/ruby/gems/1.8/cache/needle-1.3.0.gem
再重新執行gem install,結果就裝好了。
或許是下載的過程中,有什麼傳輸上的閃失吧。
一陣子沒碰linux administration ,為了裝mysql,這才注意到urpmi的好用。
與其自己不斷的確認安裝A rpm,其dependency是什麼B, C, D…rpms,不如就下這麼一個指令
#urpmi MySQL
To satisfy dependencies, the following packages are going to be installed:
MySQL-5.0.37-2mdv2007.1.i586
MySQL-client-5.0.37-2mdv2007.1.i586
MySQL-common-5.0.37-2mdv2007.1.i586
libmysql15-5.0.37-2mdv2007.1.i586
perl-DBD-mysql-4.003-1mdv2007.1.i586
perl-DBI-1.54-1mdv2007.1.i586
perl-HTML-Parser-3.56-1mdv2007.1.i586
perl-HTML-Tagset-3.10-2mdv2007.1.noarch
perl-URI-1.35-4mdv2007.1.noarch
perl-libwww-perl-5.805-3mdv2007.1.noarch
Proceed with the installation of the 10 packages? (46 MB) (Y/n)
安裝起來超順利。所謂,工欲善其事,必先利其器。