How can I get RVM/Passenger/Apache2 to play nicely together

Hello all,

Can anyone point me to any solid documentation on how to set up a
production server using RVM, Passenger, and Apache2? I have been at
this for a week with absolutely no luck at all so I thought I would
post here to see if anyone has managed to get this to work and written
down the steps they used.

Right now with my current implementation, I am getting a 404 error
when I attempt to locally point my browser to a basic rails
application.

I am attempting to set this up on an Ubuntu 11.10 system.

Any help would be greatly appreciated.

Thanks in advance.

Try the documentation from here:
http://www.mirceagoia.com/2011/11/ruby-on-rails-installation-ubuntu-linux-mint/

Mircea

Have you told Apache where to find your application?

-----Oprindelig meddelelse-----
Fra: [email protected]
[mailto:[email protected]] P vegne af Vell
Sendt: 14. december 2011 04:53
Til: Ruby on Rails: Talk
Emne: [Rails] How can I get RVM/Passenger/Apache2 to play nicely
together

Hello all,

Can anyone point me to any solid documentation on how to set up a
production server using RVM, Passenger, and Apache2? I have been at
this for a week with absolutely no luck at all so I thought I would post
here to see if anyone has managed to get this to work and written down
the steps they used.

Right now with my current implementation, I am getting a 404 error when
I attempt to locally point my browser to a basic rails application.

I am attempting to set this up on an Ubuntu 11.10 system.

Any help would be greatly appreciated.

Thanks in advance.


You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.

Thanks mg1313 I will take a look at this.

Hi Brynjolfur,

Yes I believe I have. Here is what I have as my configs:

/etc/apache2/apache2.conf:

LoadModule passenger_module /home/vmcilwain/.rvm/gems/ruby-1.9.2-p290/
gems/passenger 3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /home/vmcilwain/.rvm/gems/ruby-1.9.2-p290/gems/
passenger-3.0.11
PassengerRuby /home/vmcilwain/.rvm/wrappers/ruby-1.9.2-p290/ruby

/etc/apache2/sites-available/vell:

<VirtualHost *:80>`
ServerName vell
DocumentRoot “/home/lmcilwain/vell/current/public”
ErrorLog “/var/log/apache2/vell-error_log”
CustomLog “/var/log/apache2/vell-access_log” common
<Directory “/var/www/sites/vell/current/public”>
Options All
AllowOverride All
Order allow,deny
Allow from all

RewriteEngine On

Remove the www

RewriteCond %{HTTP_HOST} ^vell$ [NC]
RewriteRule ^(.*)$ http://vell/$1 [R=301,L]

On Dec 14, 2011, at 10:15 AM, Vell wrote:

PassengerRuby /home/vmcilwain/.rvm/wrappers/ruby-1.9.2-p290/ruby
Options All
AllowOverride All
Order allow,deny
Allow from all

RewriteEngine On

Remove the www

RewriteCond %{HTTP_HOST} ^vell$ [NC]
RewriteRule ^(.*)$ http://vell/$1 [R=301,L]

Does Apache have permission to read that folder? Do you see anything in
your Apache error log, or the system error log, related to access
permissions on that particular Ruby binary?

I’ve only ever installed this combination on a server, and I use the
“install as root” path through the RVM instructions in that case. It
works perfectly for me when I do that, but since this is your dev box
(I’m assuming) you might not want to do the same.

Walter

On Dec 14, 3:15pm, Vell [email protected] wrote:

DocumentRoot “/home/lmcilwain/vell/current/public”
<Directory “/var/www/sites/vell/current/public”>

The fact that these two paths don’t match is suspicious to me. You’d
want both pointing at wherever it is on this that your app is.

Fred

Hi Vell, I’m rather new to all this myself and have been going through
all the usual installation woes.

I don’t know if you have tried this but you could fire up Webbrick to
see if the problem is with Apache or Rails. Go to the root of your Rails
application (/home/lmcilwain/vell/current) and type:
$sudo rails server --port=88

Now you should see your Rails site running on port 88. If you don’t, the
problem is with Rails. Otherwise it is with Apache. The next thing to do
would be to check Apache log files, they should give much better info on
what went wrong.

Regards

Binni

-----Oprindelig meddelelse-----
Fra: [email protected]
[mailto:[email protected]] P vegne af Vell
Sendt: 14. december 2011 16:16
Til: Ruby on Rails: Talk
Emne: [Rails] Re: How can I get RVM/Passenger/Apache2 to play nicely
together

Hi Brynjolfur,

Yes I believe I have. Here is what I have as my configs:

/etc/apache2/apache2.conf:

LoadModule passenger_module /home/vmcilwain/.rvm/gems/ruby-1.9.2-p290/
gems/passenger 3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /home/vmcilwain/.rvm/gems/ruby-1.9.2-p290/gems/
passenger-3.0.11
PassengerRuby /home/vmcilwain/.rvm/wrappers/ruby-1.9.2-p290/ruby

/etc/apache2/sites-available/vell:

<VirtualHost *:80>`
ServerName vell
DocumentRoot “/home/lmcilwain/vell/current/public”
ErrorLog “/var/log/apache2/vell-error_log”
CustomLog “/var/log/apache2/vell-access_log” common <Directory
“/var/www/sites/vell/current/public”>
Options All
AllowOverride All
Order allow,deny
Allow from all

RewriteEngine On

Remove the www

RewriteCond %{HTTP_HOST} ^vell$ [NC]
RewriteRule ^(.*)$ http://vell/$1 [R=301,L]

On Dec 14, 3:25 am, Brynjolfur T. [email protected] wrote:

Hello all,


You received this message because you are subscribed to the Google G. “Ruby
on Rails: Talk” group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group
athttp://groups.google.com/group/rubyonrails-talk?hl=en.


You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.

Hi Walter,

I will confirm that Apache can read that directory when I get home.
When I looked at the process apache was running as root:www-data which
is what I set the permissions of the directory to. The Apache error
log and the access long didn’t have any additional detail. As a matter
of fact the error log had the same statement as the browser window. I
did not think to check the system log to see if there were access
permissions to the ruby binary in my home directory. I will definitely
check that again once I get home.

This box would be used for production not development so installing it
as root I wouldn’t have a problem with. I just remembered seeing
something on RVMs site about it not being the recommended approach for
one reason or another which is why I did not try it.

Thanks Binni, I will definitely give that a try as well to see if my
app is functioning properly.

That is a very good catch. I will certainly make that change as well.
I am at the point that I am also going to re-install ubuntu and start
from scratch just to eliminate any other possibilities that might be
happening behind the scenes. I will post my success of failure once I
am done.

On Dec 14, 11:21am, Frederick C. [email protected]

Hi Vell,

Once you figure out that apache vhost path / read issue on your new
setup, …

If you’re using passenger and you’re running rvm, then you’re likely
using (or will use) different rubies and/or gemsets for projects on a
given machine. If so, then you might want to consider using passenger-
standalone instead of passenger-apache-module:

http://www.modrails.com/documentation/Users%20guide%20Standalone.html

The main benefit of running passenger-standalone is that you can run
multiple projects that use diff rubies/gemsets from the same apache (/
nginx/…). Here’s an example setup from the phusion folks:

http://blog.phusion.nl/2010/09/21/phusion-passenger-running-multiple-ruby-versions/

I’ve been using passenger-standalone in production for over a year now
on a number of projects, and it works well. Those clients that use
passenger no longer use passenger-module and instead just use proxy’d
passenger-standalone for both their dev and prod envs.

Here’s an example of the setup on a local dev instance for a given rvm
passenger-standalone project where I typically maintain an rvm gemset
per project:

####### localhost subdomain for the proj:
$ cat /etc/hosts

127.0.0.1 foo.localhost

vhost conf for the proj:

$ cat /etc/apache2/sites-available/foo.conf

http://foo.localhost/

<VirtualHost *:80>
ServerName foo.localhost
DocumentRoot /path/to/foo/public
<Directory /path/to/foo/public>
AllowOverride all
Options -MultiViews

ProxyRequests Off
<Proxy *>
Order deny,allow
Deny from all
Allow from 127.0.0.1

ProxyPass / http://127.0.0.1:3044/
ProxyPassReverse / http://127.0.0.1:3044/
RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1]
RequestHeader add X-Forwarded-User %{RU}e
ProxyPreserveHost on

CustomLog /var/log/apache2/foo_access_log combined
ErrorLog /var/log/apache2/foo_error_log

ErrorDocument 503 “Foo
Service Is Temporarily Unavailable (503)

Foo
Service Is Temporarily Unavailable (503)

The Foo service is
temporarily unable to process your request due to maintenance
downtime.

Thanks for your patience. Please try again later.

</
body>”
I usually have a custom script to
manage rails env server for proj:

$ pwd
/path/to/foo

$ cat ./script/foo_env_server.rb

foo_env_server.rb is used to start/stop/restart/status the foo

env.

Usage: $ ruby ./script/foo_env_server.rb ENV ACTION

ENV : development or production

ACTION : start, stop, restart or status

Note: currently serving foo rails app using passenger-standalone

proxy’d via apache.

APP_NAME = “foo”
DEV_PORT = 3044
PROD_PORT = 8044

PROJ_ROOT = File.expand_path("#{File.dirname(FILE)}/…")
DEV_ENV = “development”
PROD_ENV = “production”
ENVS = [ DEV_ENV, PROD_ENV ]
LOG_FNAMES = { DEV_ENV=>"#{PROJ_ROOT}/log/#{DEV_ENV}.log",
PROD_ENV=>"#{PROJ_ROOT}/log/#{PROD_ENV}.log" }
PID_FNAMES = { DEV_ENV=>"#{PROJ_ROOT}/tmp/pid/#{DEV_ENV}-passenger-
#{DEV_PORT}.pid", PROD_ENV=>"#{PROJ_ROOT}/tmp/pid/#{PROD_ENV}-
passenger-#{PROD_PORT}.pid" }
PORTS = { DEV_ENV=>DEV_PORT, PROD_ENV=>PROD_PORT }
ACTIONS = [ ‘status’, ‘start’, ‘stop’, ‘restart’ ]

def start(env)
port = PORTS[env]
pid_fname = PID_FNAMES[env]
log_fname = LOG_FNAMES[env]

# start env server.
res = passenger start --port #{port} --environment #{env} --log- file #{log_fname} --pid-file #{pid_fname} --daemonize 2>&1.strip

end

$ rvm [email protected] && ruby ./script/foo_env_server.rb development restart

foo development env on port 3044: started: pid = 26797 (saved to /
path/to/foo/tmp/pid/development-passenger-3044.pid)

test serving static content?:

$ echo “hi from static foo” > ./public/foo.txt && curl -si
http://foo.localhost/foo.txt && rm ./public/foo.txt
HTTP/1.1 200 OK

hi from static foo

test serving dynamic content?:

$ cat ./config/routes.rb

match ‘/ping’ => ‘misc#ping’, :via => [:get]

$ cat ./app/controllers/misc_controller.rb

def ping
render(:text=>“1\n”)
end

$ curl -si http://foo.localhost/ping
HTTP/1.1 200 OK

1

Another general benefit of this type of proxy’d setup is that if you
or your client decides they want to test / use a diff rails app server
for the proj, like unicorn or thin or …, it’s a lot easier to make
that switch (basically, stop curr env, install new gems as required,
mod ./script/foo_env_server.rb start call, start env, test, …).

Jeff

Thanks for the insight. I think that setup makes a lot more sense.

On Dec 14, 2:35pm, Jeff L. [email protected] wrote:

Ok so I tried using the scenario that the phusion blog wrote out but I
am still getting a permission denied. I have a freshly installed
ubuntu 11.10 system so now I am sure that whats going on is related to
one install and not several different install attempts. SOOOO here is
what I have.

Reference Tutorial:
http://www.google.com/url?sa=D&q=http://blog.phusion.nl/2010/09/21/phusion-passenger-running-multiple-ruby-versions/&usg=AFQjCNGMN5oWTn9Sf7yHwK33id7p7PJ-KQ

The difference I did from this tutorial is that I wanted rails 1.9.2
to be the default since I won’t be running any 1.8.7 apps.

Install goes as follows:

  1. Installed rvm (single user)
    – For whatever reason when installed multi-user I was not able to
    load rvm into my terminal after logging in/out

  2. Installed ruby 1.9.2
    – rvm install 1.9.2

  3. Made 1.9.2 the default
    – rvm --default use 1.9.2

  4. Added the following to /etc/apache2/apache2.conf:

LoadModule passenger_module /home/vmcilwain/.rvm/gems/ruby-1.9.2-p290/
gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /home/vmcilwain/.rvm/gems/ruby-1.9.2-p290/gems/
passenger-3.0.11
PassengerRuby /home/vmcilwain/.rvm/wrappers/ruby-1.9.2-p290/ruby

<VirtualHost *:80>
ServerName vmcilwain-dell
DocumentRoot /home/vmcilwain/sites/vell

Unfortunately for some reason I am not able get to rubygems.org or
github.com so I am not able to run bundle to get all of the necessary
gems installed. I get the following error:
Fetching source index for http://rubygems.org/
Fetching source index for http://github.com/
Could not reach rubygems repository http://rubygems.org/,
http://github.com/

The weird thing is that I am able to ping both domains. Also when I
create a brand new rails app bundle runs fine so I am curious about
what it does not like about my Gemfile this time around that it had no
problem with the last 5 times I have run it for that particular app.

With the fresh rails app that I have just created I am not able to
create the database using rake db create it is also giving me an
error:

[email protected]–D610:~/vell_new$ bundle exec rake db:create
rake aborted!
Could not find a JavaScript runtime. See
https://github.com/sstephenson/execjs
for a list of available runtimes.

(See full trace by running task with --trace)

I do have gem ‘execjs’ in my Gemfile so I am not sure exactly what I
am doing wrong in this case either.

Mircea,

I tried this installation guide just now and I am still in the same
place. Though the instructions are clear, I am still not able to get
to my rails application that is located in my home directory. This is
on a fresh installed Ubuntu 11.10 system as well. So here is what has
been done, based on that guide:

RVM Steup
sudo aptitude install build-essential git-core curl

bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

echo ‘[[ -s “$HOME/.rvm/scripts/rvm” ]] && source “$HOME/.rvm/scripts/
rvm”’ >> ~/.bashrc

rvm notes

sudo aptitude install build-essential openssl libreadline6
libreadline6-dev zlib1g zlib1g-dev zlib
libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-
dev libxslt-dev autoconf libc6-dev
ncurses-dev automake libtool bison

rvm install 1.9.2

rvm use 1.9.2

rvm --default use 1.9.2

RAILS SETUP 1
gem install rails

Added the following to my Gemfile
gem ‘execjs’
gem ‘therubyracer’

bundle install

rails s (saw my application locally on port 3000)

APACHE2 Setup

sudo aptitude install apache2

Passenger Setup

gem install passenger

passenger-install-apache2-module

Added the following to /etc/apache2/apache2.conf
LoadModule passenger_module /home/user/.rvm/gems/ruby-1.9.2- p290/gems/
passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /home/user/.rvm/gems/ruby-1.9.2-p290/gems/
passenger-3.0.11
PassengerRuby /home/user/.rvm/wrappers/ruby-1.9.2-p290/

restarted apache2

Creating My Site

Created directory www in my home directory

rails new site -d mysql

Added the following to /etc/apache2/sites-available/site
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot /home/vmcilwain/www/site/public

sudo a2ensite site

sudo a2enmod rewrite

sudo service apache2 reload

Attempted to hit the application with the browser (http://localhost)
and I get: It Works! (Apache standard page)
Attempt to hit the application with the location http://localhost/site
and I get: Not Found The requested URL /site was not found on this
server

According to the guide, I should have seen the welcome aboard page of
the site application in my www directory.

I can’t be this hopeless, what else can I be doing wrong :-/ Any help
again is greatly appreciated.

Brynjolfu,

Thanks, I will also give this a shot. I have to think there is just
something fundamentally wrong that every installing attempt has
failed. All of the steps look pretty straight forward yet I am not
having any kind of success.

Hi Vell

Doing a reinstall might well save you a lot of hassle. In my last
install I used sudo all the way through (the server is a test server for
an eventual production server) and no RVM since I was only going to use
Ruby 1.9.2 (like you). I wrote down all the steps during the install and
this “recipe” works well enough for me. Note that all apt-get installs
use sudo, no doubt there are some places where that was unnecessary -
but I couldn’t be bothered to find out. The server also has Asterisk
installed, you probably don’t need that so I’ve commented out those
lines that are Asterisk specific (with ##) but left them in the recipe
anyway:

During install, Ubuntu 11.10, following packages selected:
OpenSSH server
LAMP server

$sudo visudo
##added last line:
ALL=(ALL) NOPASSWD: ALL

$sudo apt-get update
$sudo apt-get upgrade

##$sudo apt-get install asterisk sox asterisk-mysql asterisk-mp3

$sudo apt-get install build-essential openssl libreadline6
libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev
libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf
libc6-dev ncurses-dev automake libtool bison subversion

$sudo apt-get install ruby1.9.2
$ruby -v

ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
$gem -v
1.3.7

$sudo gem update

$sudo env REALLY_GEM_UPDATE_SYSTEM=1 gem update --system
$gem -v

1.8.12
$sudo apt-get install ruby1.9.1-dev
##see:
http://rbjl.net/20-rubybuntu-2-troubleshooting-common-ruby-ubuntu-problems

$sudo gem install rails -v=3.1.0
$rails -v

Rails 3.1.0
$rake --version
rake, version 0.9.2

$sudo gem install passenger
$sudo passenger-install-apache2-module
$sudo apt-get install libcurl4-openssl-dev
$sudo apt-get install apache2-prefork-dev
$sudo apt-get install libapr1-dev
$sudo passenger-install-apache2-module

$sudo vim /etc/apache2/apache2.conf
##Added these lines at bottom of file:

LoadModule passenger_module
/usr/lib/ruby/gems/1.9.1/gems/passenger3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.9.1/gems/passenger-3.0.11
PassengerRuby /usr/bin/ruby1.9.1

$sudo service apache2 restart

##$sudo gem install adhearsion
##$ahn -v

>Adhearsion v1.2.3

$sudo apt-get install phpmyadmin

##Install java runtime:

$sudo apt-get install python-software-properties
$sudo add-apt-repository ppa:chris-lea/node.js
$sudo apt-get update
$sudo apt-get install nodejs

END install - and everything works fine

-----Oprindelig meddelelse-----
Fra: [email protected]
[mailto:[email protected]] P vegne af Vell
Sendt: 15. december 2011 06:06
Til: Ruby on Rails: Talk
Emne: [Rails] Re: How can I get RVM/Passenger/Apache2 to play nicely
together

Ok so I tried using the scenario that the phusion blog wrote out but I
am still getting a permission denied. I have a freshly installed
ubuntu 11.10 system so now I am sure that whats going on is related to
one install and not several different install attempts. SOOOO here is
what I have.

Reference Tutorial:
http://www.google.com/url?sa=D&q=http://blog.phusion.nl/2010/09/21/phusion-passenger-running-multiple-ruby-versions/&usg=AFQjCNGMN5oWTn9Sf7yHwK33id7p7PJ-KQ

The difference I did from this tutorial is that I wanted rails 1.9.2
to be the default since I won’t be running any 1.8.7 apps.

Install goes as follows:

  1. Installed rvm (single user)
    – For whatever reason when installed multi-user I was not able to
    load rvm into my terminal after logging in/out

  2. Installed ruby 1.9.2
    – rvm install 1.9.2

  3. Made 1.9.2 the default
    – rvm --default use 1.9.2

  4. Added the following to /etc/apache2/apache2.conf:

LoadModule passenger_module /home/vmcilwain/.rvm/gems/ruby-1.9.2-p290/
gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /home/vmcilwain/.rvm/gems/ruby-1.9.2-p290/gems/
passenger-3.0.11
PassengerRuby /home/vmcilwain/.rvm/wrappers/ruby-1.9.2-p290/ruby

<VirtualHost *:80>
ServerName vmcilwain-dell
DocumentRoot /home/vmcilwain/sites/vell

Unfortunately for some reason I am not able get to rubygems.org or
github.com so I am not able to run bundle to get all of the necessary
gems installed. I get the following error:
Fetching source index for http://rubygems.org/
Fetching source index for http://github.com/
Could not reach rubygems repository http://rubygems.org/,
http://github.com/

The weird thing is that I am able to ping both domains. Also when I
create a brand new rails app bundle runs fine so I am curious about
what it does not like about my Gemfile this time around that it had no
problem with the last 5 times I have run it for that particular app.

With the fresh rails app that I have just created I am not able to
create the database using rake db create it is also giving me an
error:

[email protected]–D610:~/vell_new$ bundle exec rake db:create
rake aborted!
Could not find a JavaScript runtime. See
https://github.com/sstephenson/execjs
for a list of available runtimes.

(See full trace by running task with --trace)

I do have gem ‘execjs’ in my Gemfile so I am not sure exactly what I
am doing wrong in this case either.

On Dec 14, 2:35 pm, Jeff L. [email protected] wrote:

http://www.modrails.com/documentation/Users%20guide%20Standalone.html
passenger-standalone for both their dev and prod envs.

RewriteCond %{LA-U:REMOTE_USER} (.+) Service Is Temporarily Unavailable (503)

The Foo service is /path/to/foo ### Note: currently serving foo rails app using passenger-standalone ENVS = [ DEV_ENV, PROD_ENV ] port = PORTS[env] $ rvm [email protected] && ruby ./script/foo_env_server.rb development restart

render(:text=>"1\n")

for the proj, like unicorn or thin or …, it’s a lot easier to make

On Dec 14, 3:15 pm, Vell [email protected] wrote:

DocumentRoot "/home/lmcilwain/vell/current/public"

<Directory “/var/www/sites/vell/current/public”>

The fact that these two paths don’t match is suspicious to me. You’d
want both pointing at wherever it is on this that your app is.

Fred


You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.

On 15 Dec 2011, at 17:54, Vell [email protected] wrote:

server

According to the guide, I should have seen the welcome aboard page of
the site application in my www directory.

Actually, with the setup you’ve got the rails app should be available at
http://localhost (you have to add extra stuff to mount a rails app in a
subdirectories)

Do you already have other sites hosted on this machine? Sounds like a
different virtual host file (which is just serving up the stock apache
page) is taking precedence.
With your setup you’ll also need to ensure that both the app is readable
by apache as well as all the rvm installed files

Fred

There aren’t any other sites defined on this box. It is a fresh
install with nothing done to it aside from this latest attempt. I
would think that RVM has access to my files in my home directory since
it is installed under my account. As far as apache goes, it is running
as www-data. Is it that I just need to add www-data to the vmcilwain
group? or should I just make the app itself world readable to make it
simple?

On Dec 15, 1:41pm, Frederick C. [email protected]

On 15 Dec 2011, at 18:59, Vell [email protected] wrote:

There aren’t any other sites defined on this box. It is a fresh
install with nothing done to it aside from this latest attempt. I
would think that RVM has access to my files in my home directory since
it is installed under my account. As far as apache goes, it is running
as www-data. Is it that I just need to add www-data to the vmcilwain
group? or should I just make the app itself world readable to make it
simple?

Clearly there is another virtual host file somewhere, since that welcome
to apache file must be coming from somewhere. Probably also worth
checking that the symlinks from sites-enabled are ok (I assume that’s
what a2ensite does - I’m not familiar with that particular way of
managing apache.)

Apache will need to be able to read the rvm files and the app files. The
simplest thing to do in the short term would be to make them both world
readable

Fred