Project

General

Profile

Installing the Tapestry application » History » Revision 29

Revision 28 (Tom Clegg, 09/25/2012 10:12 AM) → Revision 29/47 (Tom Clegg, 09/25/2012 10:35 AM)

h1. Installing the Tapestry application 

 The recommended ruby stack for Tapestry is Ruby Enterprise Edition (1.8.7), installed via rvm. 

 Install rvm and REE: 

 <pre> 
 sudo -i 
 # rvm: 

   curl -L https://get.rvm.io | sudo bash -s stable 
 # exit 
 

 Install ree 1.8.7 

   sudo -i 
 # rvm install ree 
 # exit 
 </pre> 

 Start a new login shell.    Make sure RVM is working and @ruby -v@ identifies itself as REE 1.8.7. 

  rvm use ree 
 ruby -v 

 &rarr; *@ruby 1.8.7 (2012-02-08 MBARI 8/0x6770 on patchlevel 358) [x86_64-linux], MBARI 0x6770, Ruby Enterprise Edition 2012.02@* 

 Install rails. 

 <pre> 
 

  sudo -i 
 # rvm use ree 
 # gem install rails 
 # sudo gem install passenger 
 # passenger-install-apache2-module 
 </pre> sudo /usr/local/bin/passenger-install-apache2-module 

 Add three lines (provided stuff (as provided by passenger-install-apache2-module) and two more lines (see below) passenger-install) to @/etc/apache2/conf.d/passenger.conf@. your conf.d/passenger.conf 

 <pre> 
 LoadModule passenger_module /usr/local/rvm/gems/ree-1.8.7-2012.02/gems/passenger-3.0.17/ext/apache2/mod_passenger.so /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.9/ext/apache2/mod_passenger.so 
 PassengerRoot /usr/local/rvm/gems/ree-1.8.7-2012.02/gems/passenger-3.0.17 /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.9 
 PassengerRuby /usr/local/rvm/wrappers/ree-1.8.7-2012.02/ruby 

 PassengerUser YOUR_USERNAME_HERE /usr/local/bin/ruby 
 RackEnv "development" 
 </pre> 

 Install some prerequisites for gems. 

  sudo apt-get install libxslt-dev libxml2-dev 

 Get a copy of the source tree -- e.g., in /var/www/tapestry 

 <pre> 
 cd /var/www 
 sudo chmod a+w,+t . 
 git clone git://git.clinicalfuture.com/tapestry.git 
 sudo chmod go-w,-t . 
 cd tapestry && git submodule init && git submodule update 
 </pre> 

 Then execute: 

  sudo bundle install 

 Point a virtualhost to the @public@ dir in your git repo 

 <pre> 
 <VirtualHost *:80> 
    ServerName tapestry.example.org 
    DocumentRoot /var/www/tapestry/public 
    <Directory /var/www/tapestry/public> 
          AllowOverride all 
          Options -MultiViews 
    </Directory> 
    Alias /warehouse /warehouse 
    <Directory /warehouse> 
          Options None 
          AllowOverride None 
          Order allow,deny 
          allow from all 
    </Directory> 
 </VirtualHost> 
 </pre> 

 Copy @config/database.example@ to @config/database.yml@ and edit to suit. Make sure to select mysql as the database server.    Generate a password using @pwgen 12 1@ or @head -c12345 /dev/urandom|md5sum|head -c12;echo@.    For example: 

  development: 
   adapter: mysql 
   server: localhost 
   database: mypg 
   username: mypg 
   password: c16fbe415d29 
   timeout: 5000 

 Copy @config/environments/development.rb.sample@ to @config/environments/development.rb@ and edit to suit.    In particular the ROOT_URL (you may skip the "http://" prefix): 

  ROOT_URL = 'your.vhost.name' 

 Set up the database: 

  rake db:setup 
 rake db:schema:load 

 Set up data directory (replace USERNAME with the user who owns the GIT directory this code is in, and ROOT_URL matching the one above): 

  sudo mkdir -p /data/ROOT_URL 
 sudo chown -R USERNAME:USERNAME /data/ROOT_URL 

 After you do a git pull, you'll probably want to do 

   rake db:migrate 

 to bring your database up to the latest release. 

 If the Gemfile has changed, you will also have to run 

   sudo bundle install 

 Set up cron jobs -- for example, @/etc/cron.d/tapestry-get-blog-feed@ 

  PATH=/usr/local/bin:/usr/bin:/bin 
 0 * * * * www-data cd /var/www/tapestry/current/script && ./get-blog-feed.rb development http://blog.personalgenomes.org/feed/ 

 To enable large uploads with warehouse storage: 

 * @sudo apt-get install runit fuse-utils@ 
 * @sudo mkdir -p /etc/service/whmount/log/main@ 
 * Set up supervised whmount service: 

 <pre> 
 sudo tee /etc/service/whmount/run <<EOF >/dev/null 
 #!/bin/sh 
 modprobe fuse 
 mkdir -p /warehouse 
 chown www-data:www-data /warehouse 
 sudo -u www-data fusermount -u /warehouse 
 exec sudo -u www-data whmount --no-detach / /warehouse 
 EOF 
 sudo tee /etc/service/whmount/log/run <<EOF >/dev/null 
 #!/bin/sh 
 exec svlogd -tt main 
 EOF 
 </pre> 

 * Make sure config/environments/development.rb matches your Apache and filesystem mount points: 

 <pre> 
   WAREHOUSE_WEB_ROOT = "/warehouse" # Apache alias pointing to whmount target 
   WAREHOUSE_FS_ROOT = "/warehouse" # whmount target 
 </pre>