Note This guide will help you install ruby on rails on centos 5.0 with apache2 using mod_fcgid. This guide may and probably does have errors. Please feel free to correct them!
At the time of this writing, the following software version where used:
-kernel-2.6.18-8.1.1.el5
-httpd-devel-2.2.3-6.el5.centos.1
-httpd-2.2.3-6.el5.centos.1
-ruby-irb-1.8.5-5.el5
-ruby-libs-1.8.5-5.el5
-ruby-mode-1.8.5-5.el5
-ruby-1.8.5-5.el5
-ruby-ri-1.8.5-5.el5
-ruby-rdoc-1.8.5-5.el5
-ruby-devel-1.8.5-5.el5
-mysql-devel-5.0.22-2.1
-mysql-5.0.22-2.1
-mysql-server-5.0.22-2.1
-fcgi-2.4.0
-mod_fcgid.2.1
-rubygems-0.9.2
Execute:
cd ~ yum update yum install httpd-devel httpd apr apr-devel apr-util-devel mysql-server mysql mysql-devel yum install ruby ruby-docs ruby-ri ruby-libs ruby-mode ruby-tcltk ruby-irb ruby-rdoc ruby-devel
Execute:
cd /usr/local/src/ wgethttp://www.fastcgi.com/dist/fcgi-2.4.0.tar.gztar zxvf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure
make
make install
cd /usr/local/src
wget http://superb-west.dl.sourceforge.net/sourceforge/mod-fcgid/mod_fcgid.2.1.tar.gz
tar zxvf mod_fcgid.2.1.tar.gz
cd mod_fcgid.2.1
nano Makefile
-Change top_dir to:
top_dir = /usr/lib/httpd
top_dir = /usr/lib64/httpd
-Add line to bottom of file:
INCLUDES=-I /usr/include/httpd -I /usr/include/apr-0
Execute:
make make install
Execute:
cd /usr/local/src wgethttp://files.rubyforge.vm.bytemark.co.uk/rubygems/rubygems-0.9.2.tgz
tar zxzf rubygems-0.9.2.tgz
cd rubygems-0.9.2
ruby setup.rbcd ~
gem install rails—include-dependencies
gem install fcgi
gem install mysql -- --with-mysql-config=/usr/bin/mysql_config
-Select option 3 – mysql 2.7 (ruby)
If the gem install mysql command fails, try the following instead:
gem install mysql -- --with-mysql-include=/usr/include/mysql --with-mysql-lib=/usr/lib/mysql
Execute:
nano /etc/ld.so.conf.d/mysql-i386.conf
-Add Line To Bottom:
/usr/local/lib
—and for 64bit CentOS5:
Execute:
nano /etc/ld.so.conf.d/mysql-x86_64.conf
-Add Line To Bottom:
/usr/local/lib64
Execute:
/sbin/ldconfig
Execute:
mkdir /var/www/rails cd /var/www/rails/ rails cookbook chown -R root.apache cookbook/ chmod -R g+r cookbook/ chmod -R g+w cookbook/log/ chmod -R g+w cookbook/tmp/ find /var/www/rails/cookbook/ -type d -exec chmod g+x {} \;
Execute:
nano /etc/httpd/conf/httpd.conf
-Find the line:
LoadModule cgi_module modules/mod_cgi.so
-After this line add:
LoadModule fcgid_module /usr/lib/httpd/modules/mod_fcgid.so
LoadModule fcgid_module /usr/lib64/httpd/modules/mod_fcgid.so
-Find the line:
### End of proxy directives.
-After this line add:
<IfModule mod_fcgid.c> SocketPath /tmp/fcgid_sock/ AddHandler fcgid-script .fcgi </IfModule>
-Find the line:
#NameVirtualHost *:80
-And change to:
NameVirtualHost *:80
-Add lines to bottom of file:
<VirtualHost *:80> SetEnv RAILS_ENV development ServerName dnsnameoripaddress DocumentRoot /var/www/rails/cookbook/public/ ErrorLog /var/www/rails/cookbook/log/apache.log <Directory /var/www/rails/cookbook/public/> Options ExecCGI FollowSymLinks AddHandler fcgid-script .fcgi AllowOverride all Order allow,deny Allow from all </Directory> </VirtualHost>
Execute:
nano /var/www/rails/cookbook/public/.htaccess
-Find the line:
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
-And change it to:
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
-Find the line:
AddHandler fastcgi-script .fcgi
-And change it to:
AddHandler fcgid-script .fcgi
Execute:
cd /var/www/rails/cookbook/ ruby script/generate controller mytest nano app/controllers/mytest_controller.rb
-Change entire file to read:
class MytestController < ApplicationController def index render:text => "Hello World!" end end
Execute:
cd ~ chkconfig --level 2345 mysqld on chkconfig --level 2345 httpd on service httpd restart service mysqld restart
Execute:
/usr/bin/mysql_install_db /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h HOSTNAME password 'new-password' -p
-Open in browser:
http://<IP_ADDRESS>/mytest
This is the best most accurate rails guide out there! Good job
I added a few updates for CentOS5 64bit. Whoever is monitoring this wiki page can clarify if any of the info I added is incorrect. It worked for me though. Thanks for a great guide. This was so much easier than anything else I’ve ever found out there.
Note This guide will help you install ruby on rails on centos 5.0 with apache2 using mod_fcgid. This guide may and probably does have errors. Please feel free to correct them!
At the time of this writing, the following software version where used:
-kernel-2.6.18-8.1.1.el5
-httpd-devel-2.2.3-6.el5.centos.1
-httpd-2.2.3-6.el5.centos.1
-ruby-irb-1.8.5-5.el5
-ruby-libs-1.8.5-5.el5
-ruby-mode-1.8.5-5.el5
-ruby-1.8.5-5.el5
-ruby-ri-1.8.5-5.el5
-ruby-rdoc-1.8.5-5.el5
-ruby-devel-1.8.5-5.el5
-mysql-devel-5.0.22-2.1
-mysql-5.0.22-2.1
-mysql-server-5.0.22-2.1
-fcgi-2.4.0
-mod_fcgid.2.1
-rubygems-0.9.2
Execute:
cd ~ yum update yum install httpd-devel httpd apr apr-devel apr-util-devel mysql-server mysql mysql-devel yum install ruby ruby-docs ruby-ri ruby-libs ruby-mode ruby-tcltk ruby-irb ruby-rdoc ruby-devel
Execute:
cd /usr/local/src/ wgethttp://www.fastcgi.com/dist/fcgi-2.4.0.tar.gztar zxvf fcgi-2.4.0.tar.gz
cd fcgi-2.4.0
./configure
make
make install
cd /usr/local/src
wget http://superb-west.dl.sourceforge.net/sourceforge/mod-fcgid/mod_fcgid.2.1.tar.gz
tar zxvf mod_fcgid.2.1.tar.gz
cd mod_fcgid.2.1
nano Makefile
-Change top_dir to:
top_dir = /usr/lib/httpd
top_dir = /usr/lib64/httpd
-Add line to bottom of file:
INCLUDES=-I /usr/include/httpd -I /usr/include/apr-0
Execute:
make make install
Execute:
cd /usr/local/src wgethttp://files.rubyforge.vm.bytemark.co.uk/rubygems/rubygems-0.9.2.tgz
tar zxzf rubygems-0.9.2.tgz
cd rubygems-0.9.2
ruby setup.rbcd ~
gem install rails—include-dependencies
gem install fcgi
gem install mysql -- --with-mysql-config=/usr/bin/mysql_config
-Select option 3 – mysql 2.7 (ruby)
If the gem install mysql command fails, try the following instead:
gem install mysql -- --with-mysql-include=/usr/include/mysql --with-mysql-lib=/usr/lib/mysql
Execute:
nano /etc/ld.so.conf.d/mysql-i386.conf
-Add Line To Bottom:
/usr/local/lib
—and for 64bit CentOS5:
Execute:
nano /etc/ld.so.conf.d/mysql-x86_64.conf
-Add Line To Bottom:
/usr/local/lib64
Execute:
/sbin/ldconfig
Execute:
mkdir /var/www/rails cd /var/www/rails/ rails cookbook chown -R root.apache cookbook/ chmod -R g+r cookbook/ chmod -R g+w cookbook/log/ chmod -R g+w cookbook/tmp/ find /var/www/rails/cookbook/ -type d -exec chmod g+x {} \;
Execute:
nano /etc/httpd/conf/httpd.conf
-Find the line:
LoadModule cgi_module modules/mod_cgi.so
-After this line add:
LoadModule fcgid_module /usr/lib/httpd/modules/mod_fcgid.so
LoadModule fcgid_module /usr/lib64/httpd/modules/mod_fcgid.so
-Find the line:
### End of proxy directives.
-After this line add:
<IfModule mod_fcgid.c> SocketPath /tmp/fcgid_sock/ AddHandler fcgid-script .fcgi </IfModule>
-Find the line:
#NameVirtualHost *:80
-And change to:
NameVirtualHost *:80
-Add lines to bottom of file:
<VirtualHost *:80> SetEnv RAILS_ENV development ServerName dnsnameoripaddress DocumentRoot /var/www/rails/cookbook/public/ ErrorLog /var/www/rails/cookbook/log/apache.log <Directory /var/www/rails/cookbook/public/> Options ExecCGI FollowSymLinks AddHandler fcgid-script .fcgi AllowOverride all Order allow,deny Allow from all </Directory> </VirtualHost>
Execute:
nano /var/www/rails/cookbook/public/.htaccess
-Find the line:
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
-And change it to:
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
-Find the line:
AddHandler fastcgi-script .fcgi
-And change it to:
AddHandler fcgid-script .fcgi
Execute:
cd /var/www/rails/cookbook/ ruby script/generate controller mytest nano app/controllers/mytest_controller.rb
-Change entire file to read:
class MytestController < ApplicationController def index render:text => "Hello World!" end end
Execute:
cd ~ chkconfig --level 2345 mysqld on chkconfig --level 2345 httpd on service httpd restart service mysqld restart
Execute:
/usr/bin/mysql_install_db /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h HOSTNAME password 'new-password' -p
-Open in browser:
http://<IP_ADDRESS>/mytest
This is the best most accurate rails guide out there! Good job
I added a few updates for CentOS5 64bit. Whoever is monitoring this wiki page can clarify if any of the info I added is incorrect. It worked for me though. Thanks for a great guide. This was so much easier than anything else I’ve ever found out there.