今までは web server(mongrel)を立ち上げるのにターミナルを使い、そこで rails アプリケーションのルートに移ってから $ ruby script/server で走らせていたけど、サーバーの立ち上げ時に走っていて欲しいので、/etc/rc.d/rc.local の最後に
/usr/local/bin/mongrel_rails start -d -e development -c /Rails/report -p 3000 を記入する。
-d はdeamonとして走らせる。
-e はdevelopment、productionなどの指定
-c は rails application のルート
-p はポート番号
これで再起動し、アプリケーションをテストすると、redirectする所で、You are being redirected. と表示され、実際のページにredirectされない。但しredirectの部分がlinkになっており、そこをクリックするとリダイレクトされるべきページが表示される。
ググッて見ると http://gist.github.com/471663 に解決があった。
ここのダウンロードをクリックし、gist471663-***.tar.gz(あまりに長いので途中を省略)をダウンロードし、解凍すると、mongrel.rbというファイルが出来るのでこの2行目(1行目は空行)を
if Rails.version == '2.3.8' && Gem.available?('mongrel', '~>1.1.5') && self.class.const_defined?(:Mongrel)
に変更して、rails application のルートの config/initializer にmongrel.rbとして保存し再起動すると直った。
注意:mongrelは1ポート1プロセスなので、誰かがアクセスしていると他の人は使えない。このためには mongrel_clusterをインストールすればいい。今は開発中なのでいいが、production移行時にはインストールせねば!!
以前に作ったrailsのアプリケーションをコピーして使えるようにする。
このアプリケーションは will_paginete と paginating_find を使っていたのでインストールする。注:will_paginate は mislav-will_paginate に名前が変わっている
mislav-will_pagineteのインストール
# gem sources -a http://gems.github.com/
# gem install mislav-will_paginate
次にpaginating_findをインストールするが、その前にアプリケーションのルートDIRに移っておく
# cd /Rails/report
# ruby script/plugin install http://svn.cardboardrocket.com/paginating_find
# cd
rails2.2位からmysqlのドライバーが入らなくなったので入れる
# yum -y install mysql-devel
# gem install mysql -- --with-mysql-config
Successfully installed mysql-2.7
1 gem installed
の後に、大量の No definition for xxxxxxxx が出たが、大丈夫見たい
mysql dataの復元
古いrails applicationが入っているサーバーの方でmysqldが走っているのを確認して
$mysqldump -A -u root -pパスワード > SqlAllData.sql
-pとパスワードの間にはスペースを入れてはいけない。
として、全databaseのバックアップをして置き、このサーバーで
# service mysqld start
# mysql -u root -pパスワード < SqlAllData.sql
としてdatabaseを復元する。
個人的な好みでrailsの標準のWEBrickよりmongrelの方がいいので
# gem insatll mongrel
でインストールする。大量の no definition が表示されたが問題ないみたい。
でもって、アプリケーションのルートから(私の場合は /Rails/report)
# ruby script/server
でWEBサーバ(mongrel)を走らせ、webブラウザからlocalhost:3000/reports (reportsは以前作ったアプリケーション)とすると、uninitialized constant ApplicationController とエラーが出る。そう言えばapplicaton.rbの名前が変更になっていたっけ。なので /Rails/report/app/controllers/application.rb を application_controller.rb に変更するとOKになった.
アプリケーションを走らせたら2つのDEPRECATION WARNINGが出た
最初は :session_key が :keyに変更になった。
rails applicationの configフォルダーにある environment.rb の
:session_key を :key に変更する。
もうひとつは、protect_from_forgery の :secret オプションがなくなったので、
app/controllers にある application_controller の protect_from_forgery の行を消去すると WARNINGは無くなった。
http://centossrv.com/mysql.shtmlを参考にmysql関連の設定をする。あくまで設定のみ、これを参考にインストールしてはいけない。インストールは前節を参照。
個人の趣味の範囲ですが、データーベースのdirを変更しておく。まずdirを作る
# service mysqld stop
# mkdir /Rails/mysql
# chown mysql:mysql /Rails/mysql
/etc/my.cnf の datadir の所のみを
datadir=/Rails/mysql
とし、保存し、mysqlのデータを移しておき,
(私の場合は
# cd /var/lib/mysql
# cp -pr ./ /Rails/mysql/
で出来た。)
# cd /var/lib/mysql
# cp -pr ./ /Rails/mysql
# service mysqld start
mysqlにアクセスできることを確認しておく
ruby-1.8.6 rubygems-1.3.6 rails-2.3.5 をインストールする。
まずはrubyからしますが、カレントDIRにインストールされますので、保存しておくDIRにしておきます。
$ cd /Rails/download
$ wget http://rubyforge.org/frs/download.php/18421/ruby-1.8.6.tar.gz
$ tar -xvzf ruby-1.8.6.tar.gz
$ cd ruby-1.8.6
$ ./configure --enable-pthread
$ make
$ su -
パスワードを入力
# make install
関連でruby-devel、rdoc、irbも入れなければいけないようですが、私の環境ではrdocだけありませんでした(rdocを入れるとirbも入るみたい)
# yum install rdoc
# exit
$ cd ..
rubygemsをインストールします。
$ wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz
$ tar -xvzf rubygems-1.3.6.tgz
$ cd rubygems-1.3.6
$ su -
パスワードを入れる
# ruby setup.rb
railsのインストール
# gem install rails <時間がかかる
# exit
yum で rubyはインストールしない。
rubygems-1.3.6をインストールする時にruby-1.8.6が必要、ruby-1.8.6はrubyforgeから持ってくる必要あり、yumでは1.8.5になる。
rails 3 の場合はruby-1.8.7か1.9.2が必要らしい。centosのyumは今でも1.8.5 2011-2-24追記