Part 4: Redmine on Apache


This is Amsterdam Airport Schiphol, closest international airport to Phusion’s office.

I’ll be using How to configure Apache to run Redmine as a source.

Install Apache

yum -y install httpd openssl mod_ssl
chkconfig --level 345 httpd on
service httpd status

Install Passenger Apache module

yum -y install gcc-c++ curl-devel zlib-devel httpd-devel apr-devel apr-util-devel
gem install passenger #ignore "no definition... errors"
passenger-install-apache2-module
#enter to continue
#can safely ignore a variety of errors, as long as you see "The Apache 2 module was successfully installed."

Edit Apache config to include passenger
Find the passenger version directory to use in the httpd.conf below:

find /usr/local/lib/ruby/gems/1.8/gems/ -name mod_passenger.so

Change httpd.conf:

vim /etc/httpd/conf/httpd.conf

Append the following lines to /etc/httpd/conf/httpd.conf

LoadModule passenger_module [PATH TO mod_passenger.so]
PassengerRoot [BEGINNING OF PATH TO passenger root like '/usr/local/lib/ruby/gems/1.8/gems/passenger-[VERSION]' no quotes]
PassengerRuby /usr/local/bin/ruby
PassengerTempDir /tmp/passenger

Configure the ServerName for redmine

vim /etc/httpd/conf/httpd.conf

Append the following to /etc/httpd/conf/httpd.conf:

ServerName SERVERNAME.domain.com #obviously replace the name with IRL name of server

Configure the VHost for redmine

vim /etc/httpd/conf/httpd.conf

According to the Passenger documentation, add the following VHost config to the main Apache config:

<VirtualHost *:80>
	ServerName SERVERNAME.domain.com
	DocumentRoot /var/www/redmine/public
	ErrorLog logs/redmine_error.log

	<Directory /var/www/redmine/public>
		Allow from all
		Options -MultiViews
		Order allow,deny
		AllowOverride all
	</Directory>
</VirtualHost>

Change permissions on redmine files to apache:apache
According to the Passenger documentation, permissions need to be adjusted:

chown -R apache:apache /var/www/redmine

Adjust the SELinux policies

Note it might make some sense to just allow SELinux to just tag the files as it would, but I haven’t tested that yet.

Some assistance from Sascha Sanchez

Configure access to a temp directory for passenger

mkdir /tmp/passenger
chown -R apache:apache /tmp/passenger
chcon -R -h -t httpd_tmpfs_t /tmp/passenger  #we'll do it live! >:O
setsebool -P httpd_setrlimit 1 #this should take way too long.  So be patient.
chcon -R -h -t bin_t /usr/local/lib/ruby/gems/1.8/gems/passenger-*/agents/
chcon -h -t httpd_modules_t /usr/local/lib/ruby/gems/1.8/gems/passenger-*/ext/apache2/mod_passenger.so
chcon -Rv --type=httpd_sys_content_t /var/www/redmine/

Even if UnionStationSupport is set to off (which is also the default), Passenger tries to create /var/log/passenger-analytics. Not sure why. Passenger won’t work without that directory being present.

mkdir /var/log/passenger-analytics
chown apache:apache /var/log/passenger-analytics

Start Apache, test access and the config

service httpd restart

Hit http://server:80 in a browser.

Looks familiar as it’s the same instance of redmine as you accessed, except you can smell that it’s being served much more efficiently, can’t you?

  1. No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 29 other followers

%d bloggers like this: