problem with apache + passenger

Hi guys,

I need to install Redmine on my company's server and set it to run on
Apache + Passenger.

I'm able to run Redmine using Webrick, but when I try to run it on
Apache+Passenger it doesn't work. I access the Redmine's url in the
browser and I see a list of files instead of the Redmine's main page. It
seems Passenger is not working.

My files are like this:

cat /etc/apache2/mods-enabled/passenger.load
LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so

cat /etc/apache2/mods-enabled/passenger.conf
PassengerDefaultUser www-data
<IfModule mod_passenger.c>
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.13
PassengerRuby /usr/bin/ruby1.9.1
</IfModule>

cat /etc/apache2/sites-available/default
<VirtualHost *:80>
PassengerSpawnMethod smart
PassengerPoolIdleTime 300
RailsFrameworkSpawnerIdleTime 0
PassengerMaxRequests 5000
PassengerStatThrottleRate 5
PassengerMinInstances 3

DocumentRoot /var/www/redmine-2.0.3/public
ServerName cpro5331.publiccloud.com.br/redmine

       <Directory />
               Options FollowSymLinks
               AllowOverride None
       </Directory>
       <Directory /var/www/redmine-2.0.3/>
               RailsBaseURI /redmine-2.0.3
               PassengerResolveSymlinksInDocumentRoot on
               Options -Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
       </Directory>

</VirtualHost>

After configuring these files like that I restarted Apache:
/etc/init.d/apache2 restart

I'm new with Linux and I'm not sure how to check if the module Passenger
is installed in Apache. I found the file
/usr/lib/apache2/modules/mod_passenger.so in the server, so does it
means that the module is installed?

I'll appreciate any help.

Thanks

Hi guys,

I need to install Redmine on my company’s server and set it to run on

Apache + Passenger.

I’m able to run Redmine using Webrick, but when I try to run it on

Apache+Passenger it doesn’t work. I access the Redmine’s url in the

browser and I see a list of files instead of the Redmine’s main page. It

seems Passenger is not working.

My files are like this:

cat /etc/apache2/mods-enabled/passenger.load

LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so

cat /etc/apache2/mods-enabled/passenger.conf

PassengerDefaultUser www-data

PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.13

PassengerRuby /usr/bin/ruby1.9.1

cat /etc/apache2/sites-available/default

<VirtualHost *:80>

PassengerSpawnMethod smart

PassengerPoolIdleTime 300

RailsFrameworkSpawnerIdleTime 0

PassengerMaxRequests 5000

PassengerStatThrottleRate 5

PassengerMinInstances 3

DocumentRoot /var/www/redmine-2.0.3/public

ServerName cpro5331.publiccloud.com.br/redmine

The “/redmine” bit here may be confusing the issue. It’s definitely not correct, but Apache may ignore the error.

           Options FollowSymLinks

           AllowOverride None

   </Directory>

   <Directory /var/www/redmine-2.0.3/>

This should point to the same place as DocumentRoot - it’s currently missing /public.

–Matt Jones

Good morning Matt,

Thank you for your reply. I'm not sure if I understood very well what
you meant. You said the issue may be caused by the tag Directory that
hasn't the same place as DocumentRoot, right? For example, here it would
be wrong:

       <Directory />
               Options FollowSymLinks
               AllowOverride None
       </Directory>
       <Directory /var/www/redmine-2.0.3/>

So, I changed the configuration and now it's like this:

<VirtualHost *:80>
DocumentRoot /var/www/redmine-2.0.3/public
ServerName cpro5331.publiccloud.com.br/redmine
RailsEnv production
       <Directory /var/www/redmine-2.0.3/public >
# RailsBaseURI /redmine-2.0.3/public
# PassengerResolveSymlinksInDocumentRoot on
               Options -Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
       </Directory>

</VirtualHost>

Even this way it isn't working. I restarted Apache and it still showing
the list of files instead of Redmine's main page. Any other suggestion?

Thanks again.

<VirtualHost *:80>
DocumentRoot /var/www/redmine-2.0.3/public
ServerName cpro5331.publiccloud.com.br/redmine <= WRONG

That should be hostname and (optionally) port. Have you looked at the
Apache httpd documentation?

RailsEnv production
       <Directory /var/www/redmine-2.0.3/public >
# RailsBaseURI /redmine-2.0.3/public
# PassengerResolveSymlinksInDocumentRoot on

Are those lines really commented out?

Even this way it isn't working. I restarted Apache and it still showing
the list of files instead of Redmine's main page. Any other suggestion?

Are there any errors in your logs at startup? Can you run apachectl -S
without errors?

Hi,

I put redmine.cpro5331.publiccloud.com.br instead of ServerName
cpro5331.publiccloud.com.br/redmine but now I'm not able to access
redmine.cpro5331.publiccloud.com.br in the browser. The message says
that the server was not found.

Those lines are commented out because I don't know if I should put them?
Should I take them out or uncomment them?
# RailsBaseURI /redmine-2.0.3/public
# PassengerResolveSymlinksInDocumentRoot on

Here is the result of the command before I change the file
/etc/apache2/sites-available/default:
# apache2ctl -S
[Tue Jul 17 10:59:44 2012] [warn] module dav_svn_module is already
loaded, skipping
[Tue Jul 17 10:59:44 2012] [warn] module authz_svn_module is already
loaded, skipping
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
         default server cpro5331.publiccloud.com.br
(/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost cpro5331.publiccloud.com.br
(/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost cpro5331.publiccloud.com.br/svn
(/etc/apache2/sites-enabled/000-default:39)
         port 80 namevhost cpro5331.publiccloud.com.br/redmine
(/etc/apache2/sites-enabled/000-default:49)
Syntax OK

Here is the result after changing it:
# apache2ctl -S
[Tue Jul 17 11:10:44 2012] [warn] module dav_svn_module is already
loaded, skipping
[Tue Jul 17 11:10:44 2012] [warn] module authz_svn_module is already
loaded, skipping
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
         default server cpro5331.publiccloud.com.br
(/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost cpro5331.publiccloud.com.br
(/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost cpro5331.publiccloud.com.br/svn
(/etc/apache2/sites-enabled/000-default:39)
         port 80 namevhost redmine.cpro5331.publiccloud.com.br
(/etc/apache2/sites-enabled/000-default:49)
Syntax OK

Thanks again.

In the Apache's log:

[Tue Jul 17 11:26:56 2012] [notice] caught SIGTERM, shutting down
[Tue Jul 17 11:26:57 2012] [error] *** Passenger could not be
initialized because of this error: Unable to start the Phusion Passenger
watchdog because its executable
(/usr/lib/ruby/gems/1.8/gems/passenger-3.0.13/agents/PassengerWatchdog)
does not exist. This probably means that your Phusion Passenger
installation is broken or incomplete, or that your 'PassengerRoot'
directive is set to the wrong value. Please reinstall Phusion Passenger
or fix your 'PassengerRoot' directive, whichever is applicable.

It seems Passenger was not installed correctly. I tried to install
Passenger using this command:

sudo passenger-install-apache2-module

It didn't work and appeard this message:

WARNING: Apache doesn't seem to be compiled with the 'prefork', 'worker'
or 'event' MPM
Phusion Passenger has only been tested on Apache with the 'prefork', the
'worker' and the 'event' MPM. Your Apache installation is compiled with
the 'itk' MPM. We recommend you to abort this installer and to recompile
Apache with either the 'prefork', the 'worker' or the 'event' MPM.

How to compile Apache with prefork ? Is it hard to do ? May it cause any
problem? I'm afraid of doing this because I have some app running on
Apache.

Thanks.

In the Apache's log:

[Tue Jul 17 11:26:57 2012] [error] *** Passenger could not be
initialized because of this error: Unable to start the Phusion Passenger
watchdog because its executable
(/usr/lib/ruby/gems/1.8/gems/passenger-3.0.13/agents/PassengerWatchdog)
does not exist. This probably means that your Phusion Passenger
installation is broken or incomplete, or that your 'PassengerRoot'
directive is set to the wrong value. Please reinstall Phusion Passenger
or fix your 'PassengerRoot' directive, whichever is applicable.

It seems Passenger was not installed correctly.

You confirmed that the file referenced above doesn't exist? And that
your PassengerRoot is correct? Because "not installed correctly" is
one of three possibilities there :slight_smile:

How to compile Apache with prefork ? Is it hard to do ? May it cause any
problem? I'm afraid of doing this because I have some app running on
Apache.

And you have an app that's *not* running. So download the source
and take a shot at it; test your applications on your dev/staging server
until you're satisfied.

Or forget using Passenger and take the less intrusive (IMO) approach
of proxying to a cluster of unicorns or whatever. I prefer that because
of the flexibility to test or run with different backend servers, anyway.

HTH,

I got it working following this steps in order to fix the problems was
happening:

1 - Install Apache with prefork and passenger again:
apt-get -f install
apt-get install apache2-mpm-prefork
sudo gem install passenger
sudo passenger-install-apache2-module

2 - Change the VirtualHost configuration to that:
<VirtualHost *:80>
ServerName cpro5331.publiccloud.com.br
DocumentRoot /var/www/redmine-2.0.3/public
RackBaseURI /
RailsEnv production
        <Directory /var/www/redmine-2.0.3/public >
                Options FollowSymLinks
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Now it's ok and running =)

Thank you very much guys. Your tips were essencial for me to got it
working. I hope someone may benefit from my solution here.