Phusion Passenger with Apache on RHEL 6 / CentOS 6 / SL 6 with SELinux

A brief guide:

  1. Install ruby and passenger dependencies

    1
    yum -y install ruby zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel
  2. Install gem

    1
    2
    3
    4
    wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.17.tgz
    tar zxvf rubygems-1.8.17.tgz
    cd rubygems-1.8.17
    ruby setup.rb
  3. Install and build a Passenger for Apache

    1
    2
    gem install passenger
    passenger-install-apache2-module
  4. Create passenger.conf file in /etc/httpd/conf.d

    1
    2
    3
    LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
    PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11
    PassengerRuby /usr/bin/ruby
  5. Create conf file for your Rails application

  6. Temporarily go into SELinux permissive mode

    1
    setenforce 0
  7. Restart Apache

    1
    /sbin/service httpd restart
  8. Start using your Rails application

  9. Walk through SELinux log and generate new SELinux policy module

    1
    grep httpd /var/log/audit/audit.log | audit2allow -M passenger
  10. Install newly created SELinux module

    1
    semodule -i passenger.pp
  11. Switch SELinux back into enforcing mode

    1
    setenforce 1