For Want Of A Better Word

【Ruby】RailsをCentOS6.5へ。苦労した…

      2015/04/18

先の記事で埋め込みRuby環境は用意したけれど、いまいちぱっと作りたいものがなかったので、しょうがないからRuby On Rails環境を作って、Cakeで作ったものをRubyで作ってみる。

【参考】
rails環境構築(CentOS + ruby on rails) – Qiita

【前提】
CentOS6.5
ruby 1.8.7 (yumでインストール) ⇒1.9.3へ

①gemのインストール

yum install rubygems

※perlのCPAN、phpのpearのようなライブラリがgem、その管理ツールもgem

②railsのインストール

gem install rails–no-ri –no-rdoc #ドキュメント省略

エラー gemが見つけたやつがruby 1.8.7 じゃアカンって

ERROR:Error installing rails:
i18n requires Ruby version >= 1.9.3.

ぐぬぬ

yumで1.9.3をインストール
CentOSでRuby 1.9.3やPython 2.7、Python 3.3などを使う簡単な方法 – DailyHckr

yum install centos-release-SCL
yum install ruby193

はー便利。

サイドgem

scl enable ruby193 bash
gem install rails–no-ri –no-rdoc

エラー

“mkmf.rb can’t find header files for ruby”

“mkmf.rb can't find header files for ruby”の対応 – Qiita

yum -y install ruby-devel

ふー。

rails インストール完了。

# rails -v
Rails 3.2.8

③起動

rails new first_app

でアプリが作成される。 出力先は実行箇所。

cd first_app
rails server

起動しない。

Could not find a JavaScript runtime.

似たようなことになっている人は多いけど、、
rails server 時に `autodetect': Could not find a JavaScript runtime が出たら。 – 人生ずっと勉強

同じように対応しても、起動しない。
ruby193が良くないのかなぁ。。

apacheで起動しよ!
Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用 — Redmine.JP

passengerのインストール(railsアプリとapacheを繋いでくれるもの)

gem install passenger

passenger-install-apache2-moduleの場所に移動して実行

passenger-install-apache2-module

対話式ですすんだけど、下記が足りないからインストールしろってさ。

* To install Curl development headers with SSL support:
Please install it with yum install libcurl-devel

* To install Ruby development headers:
Please (re)install Ruby by downloading it from http://www.ruby-lang.org/

Ruby development headerは下記でインストールできた。

yum install ruby193-ruby-devel

下記じゃだめ、

yum install ruby-devel

もう一回moduleを実行してつらつら進む。
最後に下記が出るので

Please edit your Apache configuration file, and add these lines:

LoadModule passenger_module /opt/rh/ruby193/root/usr/local/share/gems/gems/passenger-4.0.57/buildout/apache2/mod_passenger.so

PassengerRoot /opt/rh/ruby193/root/usr/local/share/gems/gems/passenger-4.0.57
PassengerDefaultRuby /opt/rh/ruby193/root/usr/bin/ruby

After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!

Deploying a web application: an example

Suppose you have a web application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:


ServerName www.yourhost.com
# !!! Be sure to point DocumentRoot to ‘public’!
DocumentRoot /somewhere/public

# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
# Uncomment this if you’re on Apache >= 2.4:
#Require all granted

And that’s it! You may also want to check the Users Guide for security and
optimization tips, troubleshooting and other useful information:

/opt/rh/ruby193/root/usr/local/share/gems/gems/passenger-4.0.57/doc/Users guide Apache.html
https://www.phusionpassenger.com/documentation/Users%20guide%20Apache.html

Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
https://www.phusionpassenger.com

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.

apacheに前半の設定追加。
後半はどういうことだ..?

Passengerを組み込んだApacheではDocumentRootを$RAILS_ROOT/publicに設定すれば、自動的にRailsアプリケーションが認識されます。

例えば、ネームベースバーチャルホスト”redmine.example.jp”で、/var/lib/rails/redmineにインストールされたRedmineを動かすには次のようにします。

ほほー
ではrails newで下記アプリを作ると。

cd
/var/www/rails
rails new first_app
cd /var/www/rails/first_app/public

で、バーチャルホストを設定すると

Listen 8000

ServerName *:8000
#PassengerEnabled on
# !!! Be sure to point DocumentRoot to ‘public’!
DocumentRoot /var/www/rails/first_app/public

# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
# Uncomment this if you’re on Apache >= 2.4:
#Require all grante


最初はうまく行かなかったけど、何回か再起動してたらつながった。。

まずはこれでrailsが使えると。

他にもアプリを追加したい場合は
別アプリを作って、別ポートで設定すればよいと。

しかし、これならCakePHPの方が楽よなぁ。。

 - rails, ruby

  関連記事

ruby-logo
【Ruby】【Rails】アプリすねちゃったのかな。起動しないエラー。

App 28197 stderr: /opt/rh/ruby193/root/u …

ruby-logo
【wkhtml】【ruby】rubyでキャプチャを取る

PHPで作った奴をRubyでもやってみようと。 こっちはGDではなく、Image …

ruby-logo
【ruby】rubyで文字列比較がうまくいかないときは文字エンコードに注意

mysqlからqueryで取得した値と、マルチバイトの文字列を比較したときにどう …

ruby-logo
【Ruby】CentOS6.5にrails環境構築-scaffolldでアプリ作成まで

CentOS6.5にRubyOnRails環境をyumでインストールする記事のま …

ruby-logo
rubyの基本 | ちょっときになったところメモ_1 

ストリングの文字列(“”,”どっちも)にソー …