作者 主題: [整理] 安裝 Ruby on Rails on CentOS 4  (閱讀 2981 次)

0 會員 與 1 訪客 正在閱讀本文。

apage

  • 活潑的大學生
  • ***
  • 文章數: 337
    • 檢視個人資料
[整理] 安裝 Ruby on Rails on CentOS 4
« 於: 2007-08-22 19:56 »
安裝 Ruby on Rails on CentOS 4

目前方法雖然都找的到,但是本人做起來覺得稍欠詳細,
好不容易拼拼湊湊終於湊到了應該是ok的步驟,
因此重新整理了一下,給大家參考。

參考網頁:
http://rubyworks.rubyforge.org/installation/centos.html

http://wiki.rubyonrails.org/rails

安裝之前,有想使用 fcgi 者,請先參考以下安裝 fcgi 軟體,才可順利安裝
gem fcgi 與 mod_fcgi
代碼: [選擇]


wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
(根據版本可能檔名會變)
gunzip fcgi-2.4.0.tar.gz
tar -xvf fcgi-2.4.0.tar
cd fcgi-2.4.0
./configure
make
make install


安裝 mod_fastcgi
代碼: [選擇]

wget http://fastcgi.coremail.cn/mod_fcgid.tar.gz
(根據版本可能檔名會變)
tar -zxvf  mod_fcgid.tar.gz

切換至目錄下,編輯 Makefile 檔案

vi Makefile 確認以下內容 (不正確就將原來註解,並加上以下)

代碼: [選擇]

top_dir = /usr/lib/httpd
INCLUDES=-I /usr/include/httpd -I /usr/include/apr-0

然後直接 make; make install.
就會產生 mod_fcgid.so 在 /usr/lib/httpd/modules 裡面了。

之後請於 httpd.conf 內加入
代碼: [選擇]

LoadModule fcgid_module /usr/lib/httpd/modules/mod_fcgid.so
<IfModule mod_fcgid.c>
    SocketPath /tmp/fcgid_sock/
# 請注意這邊 fcgid_sock 目錄owner 必須是 apache
    AddHandler fcgid-script .fcgi
</IfModule>

重新啟動 apache 即可運作。

1.安裝 Ruby
代碼: [選擇]

cd /etc/yum.repos.d/
wget http://dev.centos.org/centos/4/CentOS-Testing.repo
yum --enablerepo=c4-testing install ruby ruby-docs ri ruby-libs ruby-mode ruby-tcltk irb rdoc ruby-devel

PS:若出現 Error: Missing Dependency: ruby = 1.8.1-7.EL4.8 is needed by package irb
請先執行 yum install irb 即可。
2.安裝 Ruby Gems
代碼: [選擇]

wget http://rubyforge.org/frs/download.php/11289/rubygems-0.9.0.tgz
tar -xzf rubygems-0.9.0.tgz
cd rubygems-0.9.0
ruby setup.rb


3.使用 Gems 安裝 Ruby 模組
代碼: [選擇]

gem install rails --include-dependencies
gem install fcgi
(fcgi 不使用者可跳過此步驟)
gem install mysql -- --with-mysql-config=/usr/bin/mysql_config

4.修改 lib 尋找路徑 #不使用 fastcgi 者可跳過
vi /etc/ld.so.conf 加入 /usr/local/lib 並存檔
之後 shell 底下輸入 ldconfig 即可。

5.確認 apache 等套件是否安裝
yum install httpd-devel httpd apr apr-devel apr-util-devel emacs-common mysql-devel

6.確認 apache 以下模組有載入
代碼: [選擇]

LoadModule cgi_module modules/mod_cgi.so
LoadModule rewrite_module modules/mod_rewrite.so


7.開 virtual host
CentOS 的 httpd confing 已經有經過整理了,
因此只需要在 /etc/conf.d/ 底下增加需要的 conf 即可。

vi /etc/conf.d/hosts.conf

代碼: [選擇]
<VirtualHost *:80>
SetEnv RAILS_ENV development
ServerName ruby.yourdomain.com
DocumentRoot /data/RuByDev/public
ErrorLog "|/usr/local/cronolog/sbin/cronolog /etc/httpd/logs/ruby-error_%Y%m%d.log"
CustomLog "|/usr/local/cronolog/sbin/cronolog /etc/httpd/logs/ruby-access_%Y%m%d.log" combined
<Directory /data/RuByDev/public>
Options +ExecCGI +FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>
</VirtualHost>


8.使用 rails 開啟專案
先隨便選一個地方,shell 內隨便輸入
rails /data/RuByDev #使用上述 virtual host 的設定
即可產生專案。

然後確定此目錄一定要有 apache 可以存取的權限,
我直接輸入:
chown apache.apache RubyDev

接著切換至 /data/RuByDev/public 下:
vi .htaccess
檢查內容,確認 Rewrite 引擎 on
並打開此行
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
欲使用 fastcgi 者可修正為 (不使用者可跳過)
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

.htaccess 的設定是立刻生效的,因此不用重新啟動 apache.

9.啟動 Rails on Apache

此時應該可以使用 Rails 了,
寫一個 ruby 程式吧!
請先切換目錄到 /data/RuByDev 下
專案已經產生過了,現在要再產生控制器:
a. 產生控制器
ruby script/generate controller mytest
b. 定義 action
代碼: [選擇]

vi app/controllers/my_test_controller.rb
class MytestController < ApplicationController
def index
end
end

c. 編輯程式
vi app/views/mytest/index.rhtml
內容可參考 Ruby 語言,在此我隨便打一個:<%= 2+3 %>

d.瀏覽http://ruby.mydomain.com/mytest/index
看到寫著 5 的網頁即成功!
我的筆記
啊,就我的筆記阿...
-----以下兩個是屍體-----
AegisHK
Aegis
eAthena屍體
eathena

gabril

  • 可愛的小學生
  • *
  • 文章數: 21
    • 檢視個人資料
[整理] 安裝 Ruby on Rails on CentOS 4
« 回覆 #1 於: 2007-08-29 18:22 »
INCLUDES=-I /usr/include/httpd -I /usr/include/apr-0
这句什么意思,我找不到apr-0这个参数,我是源代码编译安装是不是就指向,安装目录的include呢

我安装到的目录是/opt/apache2
是不是就写成
INCLUDES = -I /opt/apache2/include/httpd -I /usr/include/apr
但是我没有找到apr-0这个目录
/ld.so.conf
写成
/opt/apache2/lib
我fastcgi不能成功解析,cgi能成功解析,所以来问问

apage

  • 活潑的大學生
  • ***
  • 文章數: 337
    • 檢視個人資料
[整理] 安裝 Ruby on Rails on CentOS 4
« 回覆 #2 於: 2007-08-30 00:45 »
引述: "gabril"
INCLUDES=-I /usr/include/httpd -I /usr/include/apr-0
这句什么意思,我找不到apr-0这个参数,我是源代码编译安装是不是就指向,安装目录的include呢

我安装到的目录是/opt/apache2
是不是就写成
INCLUDES = -I /opt/apache2/include/httpd -I /usr/include/apr
但是我没有找到apr-0这个目录
/ld.so.conf
写成
/opt/apache2/lib
我fastcgi不能成功解析,cgi能成功解析,所以来问问


請問你OS是使用 CentOS4 嗎?
如果不是,最好別照我的步驟來,
因為在編譯出 mod_fcgid.so 這個檔案時,
應該是需要參照 httpd 的原始碼目錄,
而我上面的作法就是 CentOS 相關的httpd 原始碼目錄,
參考我提供的連結即可查詢到...
我的筆記
啊,就我的筆記阿...
-----以下兩個是屍體-----
AegisHK
Aegis
eAthena屍體
eathena