freebsd + apache + rvm + rails + passenger
1. Install apache22
% cd /usr/ports/www/apache22 % make config % make install clean
% vim /etc/rc.conf apache22_enable=YES
/usr/local/etc/rc.d/apache22 start
2. Install rvm via multi user install from http://beginrescueend.com/rvm/install/
Login as root. % bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer) Downloading RVM from wayneeseguin branch stable % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 799k 100 799k 0 0 109k 0 0:00:07 0:00:07 --:--:-- 199k Installing RVM to /usr/local/rvm/ RVM system user group 'rvm' exists, proceeding with installation. # RVM: Shell scripts enabling management of multiple ruby environments. # RTFM: https://rvm.beginrescueend.com/ # HELP: http://webchat.freenode.net/?channels=rvm (#rvm on irc.freenode.net) # Screencast: http://screencasts.org/episodes/how-to-use-rvm # In case of any issues read output of 'rvm requirements' and/or 'rvm notes' Installation of RVM in /usr/local/rvm/ is almost complete: * First you need add all users that will be using rvm to 'rvm' group, anyone using rvm will be operating with `umask g+w`. * To start using RVM you need to run `source /etc/profile.d/rvm.sh` in all your open shell windows, in rare cases you need to reopen all shell windows. * Optionally you can run `rvm tools rvm-env ruby bash` which will generate shebang wrappers for easier selecting ruby in scripts. # root, # # Thank you for using RVM! # I sincerely hope that RVM helps to make your life easier and more enjoyable!!! # # ~Wayne
3. Add your users to rvm group
# vim /etc/group .... rvm:*:1003:root,rupert
Load rvm script to current shell by calling source /etc/profile.d/rvm.sh or add it to /etc/profile and re-login
#vim /etc/profile source /etc/profile.d/rvm.sh
After relogging in, simply type rvm and it should spit out something. If the command is not found, then you are doing something wrong.
4. Install 1.9.3
% rvm install 1.9.3
Installing Ruby from source to: /usr/local/rvm/rubies/ruby-1.9.3-p0, this may take a while depending on your cpu(s)...
ruby-1.9.3-p0 - #fetching
ruby-1.9.3-p0 - #downloading ruby-1.9.3-p0, this may take a while depending on your connection...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
3 8604k 3 340k 0 0 27173 0 0:05:24 0:00:12 0:05:12 64100Use ruby1.9.3
% rvm --default use 1.9.3-p0 % gem install bundler -V
5. Install passenger3
This will install system wide passenger gem which is installed on 1.9.3-p0 gemset.
% gem install passenger -V % cd /usr/local/rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11/bin % ./passenger-install-apache2-module
--------------------------------------------
The Apache 2 module was successfully installed.
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11
PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p0/ruby
After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!
Press ENTER to continue.
--------------------------------------------
Deploying a Ruby on Rails application: an example
Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:
<VirtualHost *:80>
ServerName www.yourhost.com
DocumentRoot /somewhere/public # <-- be sure to point to 'public'!
<Directory /somewhere/public>
AllowOverride all # <-- relax Apache security settings
Options -MultiViews # <-- MultiViews must be turned off
</Directory>
</VirtualHost>6. Edit httpd.conf to load the passenger module
To use a rvm gemset by passenger read “Rails app with custom .rvmrc and a system wide passenger install” https://rvm.beginrescueend.com/integration/passenger/
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11/ext/apache2/mod_passenger.so PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11 PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p0/ruby
<VirtualHost 192.168.69.3:80>
ServerAdmin rupert@2rmobile.com
ServerName myserver
ServerAlias myserver
DocumentRoot "/path/to/myapp/public"
<Directory "/path/to/myapp/public">
#DocumentRoot "/path/to/myapp/current/public"
#<Directory "/path/to/myapp/current/public">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
CustomLog /var/log/apache22/myapp-error.log combinedio
LogLevel warn
</VirtualHost>We need a railsapp/config/setup_load_paths.rb to use our custom .rvmrc
if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm') begin rvm_path = File.dirname(File.dirname(ENV['MY_RUBY_HOME'])) rvm_lib_path = File.join(rvm_path, 'lib') $LOAD_PATH.unshift rvm_lib_path require 'rvm' RVM.use_from_path! File.dirname(File.dirname(__FILE__)) rescue LoadError # RVM is unavailable at this point. raise "RVM ruby lib is currently unavailable." end end # Pick the lines for your version of Bundler # If you're not using Bundler at all, remove all of them # Require Bundler 1.0 ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__)) require 'bundler/setup' # Require Bundler 0/9 # if File.exist?(".bundle/environment.rb") # require '.bundle/environment' # else # require 'rubygems' # require 'bundler' # Bundler.setup # end
Visit this stackoverflow question http://stackoverflow.com/questions/5680341/how-to-load-passenger-from-apache-with-rvm-and-unique-gem-sets
% git clone rupert@server:/path/to/your/myapp.git % cd myapp
9. Run bundle
% bundle install -V Fetching source index for http://rubygems.org/ ....
Errors that you may encounter
Note: The rvmrc located in ‘../releases/20120208034235′ could not be loaded, likely due to trust mechanisms. Please run ‘rvm rvmrc {trust,untrust} “../releases/20120208034235″‘ to continue, or set rvm_trust_rvmrcs_flag to 1. (RVM::ErrorLoadingRVMRC)
% vim /etc/rvmrc umask g+w rvm_trust_rvmrcs_flag=1