Project

General

Profile

Installing the Tapestry application » History » Version 27

Ward Vandewege, 09/24/2012 10:45 AM

1 20 Tom Clegg
h1. Installing the Tapestry application
2 1 Tom Clegg
3 27 Ward Vandewege
The recommended ruby stack for Tapestry is Ruby Enterprise Edition (1.8.7), installed via rvm.
4
5
Install rvm:
6
7
  curl -L https://get.rvm.io | sudo bash -s stable
8
9
Install ree 1.8.7
10
11
  sudo rvm install ree
12 1 Tom Clegg
13 22 Tom Clegg
Install rails.
14 1 Tom Clegg
15 22 Tom Clegg
 sudo gem install rails
16 1 Tom Clegg
sudo gem install passenger
17
sudo /usr/local/bin/passenger-install-apache2-module
18
19
Add stuff (as provided by passenger-install) to your conf.d/passenger.conf
20
21
<pre>
22 23 Tom Clegg
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.9/ext/apache2/mod_passenger.so
23
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.9
24 1 Tom Clegg
PassengerRuby /usr/local/bin/ruby
25
RackEnv "development"
26
</pre>
27 22 Tom Clegg
28
Install some prerequisites for gems.
29
30
 sudo apt-get install libxslt-dev libxml2-dev
31 1 Tom Clegg
32 21 Tom Clegg
Check out git repo from git@git.clinicalfuture.com:tapestry.git to somewhere -- say, /var/www/tapestry.example.org
33 1 Tom Clegg
34 12 Ward Vandewege
Then execute:
35 1 Tom Clegg
36 12 Ward Vandewege
 sudo bundle install
37
38 3 Tom Clegg
Point a virtualhost to the @public@ dir in your git repo
39 2 Tom Clegg
40 1 Tom Clegg
<pre>
41
<VirtualHost *:80>
42 21 Tom Clegg
   ServerName tapestry.example.org
43
   DocumentRoot /var/www/tapestry.example.org/public
44
   <Directory /var/www/tapestry.example.org/public>
45 1 Tom Clegg
         AllowOverride all
46
         Options -MultiViews
47
   </Directory>
48 26 Tom Clegg
   Alias /warehouse /warehouse
49
   <Directory /warehouse>
50
         Options None
51
         AllowOverride None
52
         Order allow,deny
53
         allow from all
54
   </Directory>
55 1 Tom Clegg
</VirtualHost>
56
</pre>
57 4 Tom Clegg
58 14 Tom Clegg
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:
59 1 Tom Clegg
60 14 Tom Clegg
 development:
61
  adapter: mysql
62
  server: localhost
63 15 Tom Clegg
  database: mypg
64
  username: mypg
65 14 Tom Clegg
  password: c16fbe415d29
66
  timeout: 5000
67
68 18 Madeleine Ball
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):
69 16 Tom Clegg
70 18 Madeleine Ball
 ROOT_URL = 'your.vhost.name'
71 14 Tom Clegg
72
Set up the database:
73 1 Tom Clegg
74
 rake db:setup
75 19 Madeleine Ball
rake db:schema:load
76 18 Madeleine Ball
77 1 Tom Clegg
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):
78 19 Madeleine Ball
79 18 Madeleine Ball
 sudo mkdir -p /data/ROOT_URL
80 19 Madeleine Ball
sudo chown -R USERNAME:USERNAME /data/ROOT_URL
81 1 Tom Clegg
82
After you do a git pull, you'll probably want to do
83 8 Tom Clegg
84 10 Ward Vandewege
  rake db:migrate
85
86
to bring your database up to the latest release.
87 12 Ward Vandewege
88
If the Gemfile has changed, you will also have to run
89
90
  sudo bundle install
91 25 Tom Clegg
92
Set up cron jobs -- for example, @/etc/cron.d/tapestry-get-blog-feed@
93
94
 PATH=/usr/local/bin:/usr/bin:/bin
95
0 * * * * www-data cd /var/www/my-dev.personalgenomes.org/current/script && ./get-blog-feed.rb development http://blog.personalgenomes.org/feed/
96 26 Tom Clegg
97
To enable large uploads with warehouse storage:
98
99
* @sudo apt-get install runit fuse-utils@
100
* @sudo mkdir -p /etc/service/whmount/log/main@
101
* Set up supervised whmount service:
102
103
<pre>
104
sudo tee /etc/service/whmount/run <<EOF >/dev/null
105
#!/bin/sh
106
modprobe fuse
107
mkdir -p /warehouse
108
chown www-data:www-data /warehouse
109
sudo -u www-data fusermount -u /warehouse
110
exec sudo -u www-data whmount --no-detach / /warehouse
111
EOF
112
sudo tee /etc/service/whmount/log/run <<EOF >/dev/null
113
#!/bin/sh
114
exec svlogd -tt main
115
EOF
116
</pre>
117
118
* Make sure config/environments/development.rb matches your Apache and filesystem mount points:
119
120
<pre>
121
  WAREHOUSE_WEB_ROOT = "/warehouse" # Apache alias pointing to whmount target
122
  WAREHOUSE_FS_ROOT = "/warehouse" # whmount target
123
</pre>