在網路上看了很多有關於 Ruby on Rails 的文章,決定寫一篇比較完整的手動安裝文,將 ROR 安裝在 Windows 上並採用效能較高的 Mongrel 伺服器。對於新手而言,還可參考另一個選擇 Instant Rails (整合 ROR - Apache - MySQL - Windows),並不一定要看這篇文章。

本文架構
ROR - Mongrel - MySQL - Windows

準備工具
MySQL 請準備 zip 壓縮版本 ...

示範平台/WindowsXP

一、安裝 Ruby
用戶插入圖片

RubyGems 是安裝工具,當然要勾選 Enable 囉,安裝都靠它了;SciTE 則是附帶的 Ruby 編緝器,沒理由不要吧。

測試 Ruby
開始 > 執行 > 輸入 cmd > 確定(←此 DOS 視窗一直開著吧,整篇文章都會用到)
在 DOS 視窗輸入 > ruby -v
安裝成功會顯示 > ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

二、升級 gem
在 DOS 視窗輸入 > gem update --system
在 DOS 視窗輸入 > gem update -y
在 DOS 視窗輸入 > gem -v
升級成功會顯示 1.3.1

三、安裝 Rails
在 DOS 視窗輸入 > gem install rails --include-dependencies
會自動幫你下載並安裝好 Rails

測試 Rails
在 DOS 視窗輸入 > rails -v
安裝成功會顯示 > Rails 2.2.2

四、安裝 Mongrel 和 Mongrel Service
ROR 雖已內建 Webrick 標準伺服器,但是它在開啟速度、執行速度及便利性都輸給 Mongrel,所以我們要用 Mongrel 取代 Webrick 作為 ROR Web Server
在 DOS 視窗輸入 > gem install mongrel --include-dependencies
在 DOS 視窗輸入 > gem install mongrel_service --include-dependencies

五、建立網站資料夾(建立專案)
請先前往你要安裝的位置(例:要安裝在 C:\ 之下,在 DOS 視窗輸入 > cd c:\ )
在 DOS 視窗輸入 > rails -d mysql www(它會在該目錄下建立網站資料夾 www 並搭配 MySQL 資料庫,若直接在 DOS 視窗輸入 > rails www 代表搭配預設資料庫 SQLite3)

六、將 Mongrel Service 安裝為 Windows 服務
在 DOS 視窗輸入 >
mongrel_rails service::install -N www -c c:\www -e development
(P.S. c:\www 需改為你的位置,-e 代表開發環境,有 test, development, production 三種,代表專案開發的三個階段 - 測試、開發、產品,這裡先以 development 為示範)

設定 Mongrel Service 為自動啟動
我的電腦按右鍵 > 管理
服務及應用程式 > 服務 > www 點兩下
啟用類型: 自動.. 服務狀態: 已啟動 才是正常,如果不是請設定成這樣。經此設定後,Mongrel Service 服務將會在你每次開機後自行啟動。

如果要移除 Mongrel Service,請作以下動作
電腦管理 > 服務及應用程式 > 服務 > www 點兩下
啟用類型: 自動.. 服務狀態: 已停止,設定成這樣。
在 DOS 視窗輸入 > mongrel_rails service::remove -N www

七、測試頁面
接著你就可以在瀏覽器網址列輸入 http://localhost:3000/ 看到 ROR 的預設頁面。

用戶插入圖片

八、安裝 MySQL
將 MySQL 檔案解壓縮到 C:\mysql (解壓縮後此目錄下應是數個檔案夾)
依下列程序安裝 MySQL 服務
開始 > 執行 > 輸入 C:\mysql\bin\mysqld -install

九、繼續之前,先進入不可不知的 MySQL 講座
一般在 WindowsNT/2000/XP,MySQL需要安裝成為一個系統服務。
你可以在以下程序看到 MySQL 服務。
我的電腦上按右鍵選管理
服務及應用程式 > 服務
在 MySQL 上點兩下(如果沒有找到代表你安裝不成功)
啟用類型: 自動.. 服務狀態: 已啟動 才是正常,如果不是請設定成這樣。經過此設定後,MySQL 服務將會在你每次開機後自行啟動。

如果要移除 MySQL 服務,請作以下動作
先停止 MySQL 服務,我的電腦上按右鍵選管理
服務及應用程式 > 服務
在 MySQL 上點兩下
啟用類型: 自動.. 服務狀態: 已停止,設定成這樣。
開始 > 執行
輸入 C:\mysql\bin\mysqld -remove 按確定
需注意,若沒有這個動作自行刪除 MySQL 檔案,這裡的 MySQL 服務就會變成無法移除了!

十、MySQL,新增資料庫
在 MySQL 新增一個供 ROR 使用的資料庫,進入 MySQL 指令模式

在 DOS 視窗輸入 > MySQL路徑\bin\mysql -u 帳號 -p 密碼 (例 mysql -u root -p)
mysql> create database www_development;
mysql>exit

(www_development 是 ROR development 預設資料庫名,如果要更改的話,database.yml 也要一起改)

十一、讓 ROR 連上 MySQL
在 DOS 視窗輸入 > gem install mysql
選擇最高的 mysql <mswin32> 版本

設定 MySQL 連線資料
開啟資料庫連線檔案 database.yml:你的路徑\www\config\database.yml
設定連線資料,只需設定 development 的部份即可

database.yml
development:
  adapter: mysql
  encoding: utf8
  database: www_development (可改成你的資料庫名稱)
  username: root (改成你的資料庫使用者名稱)
  password: (改成你的資料庫密碼)
  host: localhost

十二、測試 MySQL
打開剛看過的測試頁 http://localhost:3000/ ,並且按中間 About your application's enviroment 如果設定有誤這裡會看到紅色的方框,看到黃色方框表示沒問題。

用戶插入圖片

關於 MySQL 管理工具
第一件事你會發現沒有 phpMyAdmin 可用,推薦 MySQL GUI Tools 5.0 ,它是功能、安全性皆優於 phpMyAdmin 的 MySQL 管理工具。(付費的企業版還另提供監視及分析等功能)

十三、修改路徑檔 routes.rb
開啟路徑檔 routes.rb:你的路徑\www\config\routes.rb
在最後一行 end 的上方新增一行語法如下
map.root :controller => ''
這樣可解決升級 Rails 2.0.2 之後瀏覽頁面出現 Routing Error 的 Bug

十四、簡單的 Helloworld

進入 Ruby on Rails 的世界
為了避免看不懂,首先你必須瞭解 Ruby on Rails 的 MVC 架構 (Model-View-Controller),解釋如下:Model (資料模型)、View(程式顯示)、Controller(程式邏輯,俗稱控制器)
ROR 以這些基本元素架構網站,沒有連結資料庫(Model),至少也要建立 Controller 和 View。

建立 Controller
接下來要開始 Helloworld 的範例了,請先前往你的網站位置,我的例子要先到 C:\www
在 DOS 視窗輸入 > ruby script/generate controller helloworld index
(P.S. helloworld 是 Controller 名稱,index 是指定的動作[Action],送出指令後 Ruby on rails 會幫你把相關檔案自動準備好,並存入 app 裡的相閞資料夾)

以上語法會自動創建下列檔案:
exists  app/controllers/
exists  app/helpers/
create  app/views/helloworld
exists  test/functional/
create  app/controllers/helloworld_controller.rb
create  test/functional/helloworld_controller_test.rb
create  app/helpers/helloworld_helper.rb
create  app/views/helloworld/index.rhtml
以下會在 Controller 建立變數 greeting,並透過 View 顯示出來。

修改 Controller
www\app\controllers\helloworld_controller.rb
class HelloworldController < ApplicationController
def index
@greeting = "Hello World"
end
end

修改 View
www\app\views\helloworld\index.html.erb

<%= @greeting %>

顯示結果
http://localhost:3000/helloworld
Hello World

以上你學會了在 Windows 平台手動安裝 Ruby on Rails、Mongrel 伺服器、連結 MySQL,並透過 Ruby 語言執行第一支程式,還活著的話,我恭喜你了。

相關連結:Ruby on Rails
書簽搜集  HEMiDEMi  Technorati  Del.icio.us
 Digg     funP      Yahoo!     Furl
2007/12/06 16:50 2007/12/06 16:50
2007/12/06 16:50 

Trackback Address :: http://blog.raienet.com/trackback/376

  1. morrison 2007/12/08 10:51 回覆文章 | 回覆此篇 | 編輯 / 刪除

    找了好幾篇就這篇最詳盡.
    (以目前ruby186-26_rc2的版本為準.)
    Thx~

    而且很慶幸我還活著...

  2. Eldora 2007/12/10 11:50 回覆文章 | 回覆此篇 | 編輯 / 刪除

    好棒 謝謝雷大大 (smile)

    等我cgi互動式網頁學完習完畢

    再來拜讀 (love) 感謝雷大 m(_ _)m

  3. johnny5 2007/12/29 10:25 回覆文章 | 回覆此篇 | 編輯 / 刪除

    這篇真的解說的很詳細(love),有個小問題想請問一下

    1.閱讀到這段就不懂了(turn)
    ----------------
    設定 MySQL 連線資料
    開啟連線檔案:你的路徑\www\config\database.yml
    設定連線資料,只需設定 development 的部份即可
    ----------------
    是要打甚麼指令才能連線呢

    2.學到最後HELLOWORLD範例,結果出現
    MissingSourceFile in HelloworldController#index

    RAILS_ROOT: c:/ruby/www

    Application Trace | Framework Trace | Full Trace

    This error occurred while loading the following files:
    sqlite3
    不知哪裡出錯了
    以上 先感謝了(love)

    • Raie 2007/12/29 15:39 編輯 | 刪除

      我剛試裝發現 rails 改版 2.0.2 之後
      預設資料庫變成 SQLite3
      還有一些問題
      等我重新試過以後再回答你吧

    • Raie 2007/12/29 21:13 編輯 | 刪除

      rails 改版
      竟然變成文章要重寫 (scare)
      ROR 的改版也太劇烈了吧
      這樣很難學習 Orz

      文章已經改好了
      看一下有問題再討論吧
      MySQL 的問題請倒回到上方粉紅色文字那裡

    • rorbeginner 2008/05/01 06:11 編輯 | 刪除

      非常詳細的解說,謝謝.
      只是 '設定 MySQL 連線資料' 的部份
      我還是看不懂

      回去看了粉紅色部分 (rails -d mysql www), 仍然不知道怎麼做

      例如網站資料夾在c:\www
      那設定連線資料,是要在database.yml這個檔,修改哪個部份呢

      可以麻煩你再說明一下嗎
      謝謝.

    • Raie 2008/05/01 13:09 編輯 | 刪除

      Hello rorbeginner, 你說的粉紅字那裡我重新寫過了, 你看一下是否能看得懂, 還有問題的話歡迎討論

      至於設定連線資料, 我有特別說明分成 test, development, production 三個部份但只需改 development 應該是你開啟了 database.yml 之後就能瞭解要改哪裡才對

    • rorbeginner 2008/05/02 00:04 編輯 | 刪除

      Hi Raie,

      謝謝回覆

      我到 '設定 MySQL 連線資料' 之前的步驟都 OK.
      現在的情況是:
      1)不知道'MySQL 連線資料'要怎麼設定.
      2)輸入 http://localhost:3000/
      只出現 '六、測試頁面' 的結果, 沒出現 '十、測試 MySQL' 的結果.
      (沒有中間 'About your application's enviroment' 那部分).

      會提到粉紅色文字是因為, johnny5 問了相同問題.
      你回答: 'MySQL 的問題請倒回到上方粉紅色文字那裡'.
      所以我以為 '設定 MySQL 連線資料'是要看'粉紅色文字那裡'. (抱歉讓你把'粉紅色文字那裡'重新寫過)

      我沒學過 MySQL 和 RoR
      想利用 RoR 架站卻不知道從哪裡入手
      還好找到這篇詳盡的解說文,一步一步照著做
      所以會有'不知道要改什麼'的疑問

      你的意思是說,database.yml檔的
      development: adapter: mysql encoding: utf8 database: www_development username: root password: host: localhost 這部份
      要把 database: www_development
      改成 database: c:\www 嗎?

      謝謝你這麼用心經營你的BLOG

    • Raie 2008/05/02 09:36 編輯 | 刪除

      1. 連線資料那裡我也改寫過了
      2. 如果有連上 MySQL , 就可以看到 MySQL 的測試資料

      你學過其他資料庫嗎? 其實這篇文章不適合不懂資料庫的新手, 因為我省略了建立資料庫的步驟, 寫了怕偏離主題太多, 所以你至少要懂得在 MySQL 建立資料庫, 看這篇文章會比較沒障礙..

      建立資料庫後, 要把資料填寫在 database.yml 的 database: 這裡
      你也可以把新建資料庫命名為 www_development 那麼這一項就不用改了

    • rorbeginner 2008/05/02 12:18 編輯 | 刪除

      謝謝你的耐心回答
      我學過 MS SQL, 但是沒用過MySQL.

      '建立資料庫'指的是, 在安裝完 MySQL 後, 測試 MySQL 前
      到 MySQL Command Line Client 視窗下這樣的指令:
      mysql> CREATE DATABASE DATABASE_NAME;
      然後把 database.yml 的 development部份 改成 database: DATABASE_NAME 嗎?

      請問除此之外,還有需要做其他的設定嗎?

      謝謝

    • Raie 2008/05/02 16:13 編輯 | 刪除

      沒錯, 因為你說要填寫 database: c:\www 我覺得蠻離譜的
      看英文翻譯也應該知道是資料庫名稱吧 = ="

      進行前最好先確認你的 MySQL 有正常運作
      其他遇到問題再問囉 (smile)

    • rorbeginner 2008/05/03 09:50 編輯 | 刪除

      因為'粉紅色文字那裡', 提到安裝的'位置'

      所以我一直以為 '設定 MySQL 連線資料', 指的是要修改'路徑'之類的
      可是看來看去,又找不到 'development' 部分有長得像路徑的東西
      唯一比較有可能的, 也只有 'database:這裡' (資料庫路徑???)
      (雖然 database: c:\www 是真的很詭異啦...)

      因為在過程中, 沒有做到 'create database' 的動作
      所以完全沒有想到, '設定 MySQL 連線資料'是要改 '資料庫名稱/使用者名稱/密碼'

      很抱歉問了一個很白痴的問題...

      謝謝你的回答

    • Raie 2008/05/04 12:49 編輯 | 刪除

      為了讓更多人能看懂,已經把新建資料庫列入步驟裡了

      謝謝指教
      還有其他問題再討論喔 ^ ^

  4. stew 2008/06/12 22:51 回覆文章 | 回覆此篇 | 編輯 / 刪除

    電腦已安裝了Apache, 還需要裝Mongrel嗎? 另啟動Rails時,如何讓Rails啟動Apache,而不是Webrick?

  5. 东东 2009/02/20 11:12 回覆文章 | 回覆此篇 | 編輯 / 刪除

    感谢楼主如此精细的讲解,但是我在执行的时候出来了这种问题:

    Mysql::Error in Rails/infoController#properties
    Access denied for user 'root'@'localhost' (using password: YES)RAILS_ROOT: D:/www

    我真的不明白是为什么了,能帮帮我吗?

  6. 东东 2009/02/20 11:16 回覆文章 | 回覆此篇 | 編輯 / 刪除

    在执行第十一、測試 MySQL时出现了红框
    对了,这是我的database.yml文件:
    development:
    adapter: mysql
    encoding: utf8
    database: www_development
    pool: 5
    username: root
    password: 0000
    host: localhost
    还有我的rails是2.2.2
    mysql是5.0.22
    操作系统是windows XP

    • 东东 2009/02/20 14:32 編輯 | 刪除

      我在重新新建了一个用户,重新分配了一下权限,修改了一下database.yml文件后,就可以了,但是我不明白为什么用root用户就不可以呢?

    • Raie 2009/02/20 16:59 編輯 | 刪除

      新版 MySQL 的 root 密碼設定語法可參考這篇(smile)
      http://blog.raienet.com/189
      在 MySQL 指令模式輸入就可以了

    • 东东 2009/02/23 09:41 編輯 | 刪除

      首先谢谢您的回复,但我用的MySQL前台管理工具是Navicat,你说的phpMyAdmin我也不熟悉,不好意思呀,我刚开始学习,对一些知识,工具还不是很了解,谢谢您的指教~~

    • 东东 2009/02/23 11:29 編輯 | 刪除

      我把root用户的密码手动的更改一下,这回OK了,谢谢了

  7. B先生 2009/02/25 06:09 回覆文章 | 回覆此篇 | 編輯 / 刪除

    您好,您寫的內容對我這個ROR新手有很大的幫助,
    但是我遇到了一個問題,
    我將 Mongrel Service 安裝為 Windows 服務這步驟是這樣做的:
    mongrel_rails service::install -N Mongrel -c c:\www -p 81 -e production
    這個過程沒什麼問題,
    我也在服務設定那裡改成自動啟動了,
    但是就在我打開瀏覽器輸入http://localhost:81/的時候卻跑不出該有的內容,只有顯示Internet Explorer 無法顯示網頁而已,
    前面的安裝過程都很順利,所以我實在不知道問題出在哪裡‧‧
    苦惱中

    • Raie 2009/02/25 22:07 編輯 | 刪除

      HI (come)
      本來這篇文章我不打算再更新了,因為 ROR 的基本架構更新太快,本文隨時會變成一篇廢文,因此 ROR 的第二篇文章也就沒下文了 = = 這篇文章確實幫助了許多人,所以又將 ROR 改版後的部份修正過了

      在安裝 ruby 和安裝 rails 之間需先將 gem 升級,gem 的升級只能在 rails 之前,不然會引起一些莫名的問題,已安裝到一半的話我建議你就重新安裝吧

  8. constance 2009/04/21 00:30 回覆文章 | 回覆此篇 | 編輯 / 刪除

    前面11个步骤都做好了,可是在第12步检查的时候,却不是黄色的窗口,是一个红色的窗口,说“We're sorry, but something went wrong”"We've been notified about this issue and we will take a look at it shortly"这是怎么回事呢?是不是rails的版本不对?现在是2.3.2

(設密碼允許你在送出後能進行編輯)

(come) (boring) (smile) (angry) (cold) (cry) (doubt) (high) (love) (scare) (zzz) (turn) 


[◀ PREV][1]... [47][48][49][50][51][52][53][54][55]... [394][NEXT ▶]