ruby on rails推薦的生產(chǎn)運行環(huán)境是Linux/FreeBSD/Unix,即Unix系列的操作系統(tǒng),采用lighttpd+FCGI的解決方案。以下我將以Linux操作系統(tǒng),lighttpd+FCGI,MySQL數(shù)據(jù)庫為例,從源代碼編譯安裝開始講解。 在安裝之前,應該確認Linux操作系統(tǒng)已經(jīng)安裝好gcc編譯器,否則請用Linux安裝光盤先行安裝gcc編譯器: gcc –v 如能返回gcc版本號,則gcc正確安裝。 一、安裝Ruby解析器 一些Linux發(fā)行版本,MacOSX操作系統(tǒng)都自帶Ruby解析器,但是我仍然建議自行下載ruby源代碼編譯安裝。因為一方面可以自己定制ruby安裝的路徑,另一方面可以在編譯過程中自行添加更多的特性。 ruby的源代碼可以從Ruby官方網(wǎng)站下載: 下載源代碼包到本地Linux主機,然后解壓縮,進入該目錄,進行配置,編譯和安裝: tar xzvf ruby-1.8.5.tar.gz cd ruby-1.8.5 ./configure –prefix=/usr/local/ruby make && make install 如果想瀏覽所有的configure參數(shù),可以: ./configure –help |more 如果不定制安裝的目錄,默認將安裝到/usr/local目錄下面。然而我建議自行定制一個ruby的安裝目錄,例如/usr/local/ruby,這樣便于以后的升級,不會和操作系統(tǒng)其他軟件混在一起。 安裝好以后,修改操作系統(tǒng)PATH路徑,加入/usr/local/ruby/bin: export PATH=/usr/local/ruby/bin:$PATH 將我們自己安裝的ruby放在系統(tǒng)PATH前面,避免操作系統(tǒng)自帶的ruby造成的干擾。在Linux上,一般將設(shè)置放在/etc/profile中,便于對全局生效。 二、安裝ruby on rails 在安裝rails之前,要先安裝rubygems。rubygems是ruby的在線包管理工具,可以從rubyforge下載rubygems: 下載好源代碼包,解壓縮,安裝: tar xzvf rubygems-0.9.0.tgz cd rubygems-0.9.0/ ruby setup.rb 然后就可以安裝rails了,在確認服務(wù)器已經(jīng)連接互聯(lián)網(wǎng)的情況下執(zhí)行: gem install rails –y 即通過gem從rubyforge網(wǎng)站下載rails所有依賴包安裝。 安裝好rails以后,可以執(zhí)行: rails –v 確認一下rails的版本。 三、安裝ruby的數(shù)據(jù)庫適配器 rails發(fā)行包中已經(jīng)自帶純ruby的MySQL數(shù)據(jù)庫適配器,然而對于生產(chǎn)環(huán)境來說,我們?nèi)匀粦撓螺d安裝C版本的數(shù)據(jù)庫適配器,以達到更好的性能。下載mysql-ruby-2.7.3.tar.gz: tar xzvf mysql-ruby-2.7.3.tar.gz cd mysql-ruby-2.7.3 ruby extconf.rb --with-mysql-dir=/opt/mysql5 make && make install 注意--with-mysql-dir應該指向MySQL數(shù)據(jù)庫的安裝路徑,如果數(shù)據(jù)庫服務(wù)器和Web服務(wù)器不在同一臺機器上,那么Web服務(wù)器上也必須安裝MySQL軟件,因為ruby的C版本MySQL適配器需要在編譯的時候聯(lián)接MySQL的系統(tǒng)庫。 四、安裝Ruby的FCGI支持 由于ruby的fcgi支持庫需要在編譯的時候聯(lián)接FCGI的系統(tǒng)庫,因此我們需要先安裝FCGI庫,下載FCGI源代碼發(fā)行包: tar xzvf fcgi-2.4.0.tar.gz cd fcgi-2.4.0 ./configure --prefix=/usr/local/fcgi make && make install 同樣,將fcgi安裝在自己指定的目錄下,而不是默認的/usr/local,避免多個軟件混在一起。 然后就可以安裝ruby的fcgi支持庫了,下載ruby-fcgi-0.8.7.tar.gz: tar xzvf ruby-fcgi-0.8.7.tar.gz cd ruby-fcgi-0.8.7 ruby install.rb config -- --with-fcgi-include=/usr/local/fcgi/include --with-fcgi-lib=/usr/local/fcgi/lib ruby install.rb setup ruby install.rb install 五、安裝lighttpd Web Server 安裝Lighttpd 在安裝lighttpd之前,應該確認操作系統(tǒng)已經(jīng)安裝pcre,即Perl兼容的規(guī)則表達式庫: rpm –qa |grep pcre 如果沒有,請從Linux安裝光盤里面安裝。 然后下載lighttpd: tar xzvf lighttpd-1.4.13.tar.gz cd lighttpd-1.4.13 ./configure --prefix=/usr/local/lighttpd configure完畢以后,會給出一個激活的模塊和沒有激活模塊的清單,可以檢查一下,是否自己需要的模塊都已經(jīng)激活,在enable的模塊中一定要有“mod_rewrite”這一項,否則重新檢查pcre是否安裝。然后編譯安裝: make && make install 編譯后配置: cp doc/sysconfig.lighttpd /etc/sysconfig/lighttpd mkdir /etc/lighttpd cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf 如果你的Linux是RedHat/CentOS,那么: cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd 如果你的Linux是SuSE,那么: cp doc/rc.lighttpd /etc/init.d/lighttpd 其他Linux發(fā)行版本可以自行參考該文件內(nèi)容進行修改。然后修改/etc/init.d/lighttpd,把 LIGHTTPD_BIN=/usr/sbin/lighttpd 改為 LIGHTTPD_BIN=/usr/local/lighttpd/sbin/lighttpd 此腳本用來控制lighttpd的啟動關(guān)閉和重起: /etc/init.d/lighttpd start /etc/init.d/lighttpd stop /etc/init.d/lighttpd restart 如果你希望服務(wù)器啟動的時候就啟動lighttpd,那么: chkconfig lighttpd on 這樣lighttpd就安裝好了,接下來需要配置lighttpd。 配置Lighttpd 修改/etc/lighttpd/lighttpd.conf 1)server.modules 取消需要用到模塊的注釋,mod_rewrite,mod_access,mod_fastcgi,mod_simple_vhost,mod_cgi,mod_compress,mod_accesslog是一般需要用到的。 2)server.document-root, server.error-log,accesslog.filename需要指定相應的目錄 3)用什么權(quán)限來運行l(wèi)ighttpd server.username = "nobody" server.groupname = "nobody" 從安全角度來說,不建議用root權(quán)限運行web server,可以自行指定普通用戶權(quán)限。 4)靜態(tài)文件壓縮 compress.cache-dir = "/tmp/lighttpd/cache/compress" compress.filetype = ("text/plain", "text/html","text/javascript","text/css") 可以指定某些靜態(tài)資源類型使用壓縮方式傳輸,節(jié)省帶寬,對于大量AJAX應用來說,可以極大提高頁面加載速度。 5)配置ruby on rails 最簡單的配置如下: $HTTP["host"] == "www.xxx.com" { server.document-root = "/yourrails/public" server.error-handler-404 = "/dispatch.fcgi" fastcgi.server = (".fcgi" => ("localhost" => ("min-procs" => 10, "max-procs" => 10, "socket" => "/tmp/lighttpd/socket/rails.socket", "bin-path" => "/yourrails/public/dispatch.fcgi", "bin-environment" => ("RAILS_ENV" => "production") ) ) ) } 即由lighttpd啟動10個FCGI進程,lighttpd和FCGI之間使用本機Unix Socket通信。 六、安裝ImageMagick和RMagic RMagic是ruby處理圖片需要用到的庫,很多ruby應用由于都涉及圖片處理的功能,往往需要依賴RMagic,但安裝ImageMagick和RMagic相當煩瑣,需要特別的說明。 安裝ImageMagick ImageMagick是用C語言實現(xiàn)的圖形處理庫,有Unix版本和Windows版本。對于Unix版本來說,安裝比較麻煩些,另外不建議安裝ImageMagick二進制版本,往往會導致缺少某些圖片處理功能,導致RMagic安裝失敗。下載ImageMagick源代碼,解壓縮,配置: tar xzvf ImageMagick-6.2.9-0.tar.gz cd tar xzvf ImageMagick-6.2.9 ./configure --prefix=/usr/local/ImageMagick 觀察配置后給出來的支持圖形格式,看看該圖形格式支持是否是yes,如果不是,那么必須先安裝該圖形格式的本地庫。例如,你應該檢查是否已經(jīng)安裝如下rpm包: rpm –qa |grep libpng rpm –qa |grep libpng-devel rpm –qa |grep libjpeg rpm –qa |grep gd-devel 如果你希望支持tiff格式,還應該檢查 rpm –qa |grep libtiff 如果沒有安裝,那么在Linux安裝光盤找到相應rpm包安裝上,再次configure直到確認需要的圖形格式全部支持為止,然后編譯安裝: make && make install 由于ImageMagic被安裝在我們自行指定的/usr/local/ImageMagick,后面安裝RMagic會找不到需要用到的ImageMagic的命令和庫,因此需要配置一下操作系統(tǒng): 編輯/etc/profile里面的PATH環(huán)境變量,在最后面加入: export PATH=/usr/local/ruby/bin:/usr/local/ImageMagick/bin:$PATH 編輯/etc/ld.so.conf,加入: /usr/local/ImageMagick/lib 執(zhí)行命令: ldconfig 將ImageMagick的庫加入系統(tǒng)聯(lián)接庫 然后注銷當前用戶重新登錄,便于環(huán)境變量修改生效,執(zhí)行: convert logo: logo.gif 看是否正確生成一個logo.gif的圖片文件。 安裝RMagic 在rubyfoge上面下載RMagic的源代碼發(fā)行包,不要下載gem包,然后解壓縮編譯: ./configure make && make install 如果配置和編譯過程沒有報錯,即大功告成。 對于MacOSX來說,安裝RMagic以上步驟會出錯,請參考: 總體來說,ImageMagick和RMagic的安裝很容易出錯,安裝起來比較困難,如果碰到無法解決的問題,可以通過Google尋求解決辦法。 |