Installing Tracks on Ubuntu

From Smith family
Jump to: navigation, search

I've installed the Rails task tracker Tracks in my Rails server, running Apache2, Passenger, and MySQL on Ubuntu 8.04. There were a couple of changes that I needed to do to make it all work.

Most of these notes are shamelessly cribbed from the TJN blog post.

Install Rails on the server

This process is described on a separate Ruby on Rails installation page.

Create the database and user

root@server:~# mysql -u root -p
mysql> create database tracks;
mysql> grant all on tracks.* to 'tracksuser'@'localhost' identified by 'SecretPassword';
mysql> quit;
  • We can also create a user that Tracks runs as
root@server:~# adduser tracks

Install the files

  • Download Tracks from the Tracks homepage and copy the file into /var/www/tracks.domain.tld.
  • Unzip the files
root@server:~# cd /var/www/tracks.domain.tld
root@server:/var/www/tracks.domain.tld# unzip tracks-1.7.zip
root@server:/var/www/tracks.domain.tld# cd tracks-1.7
  • Now, fix the ownership and permissions of the files
root@server:/var/www/tracks.domain.tld/tracks-1.7# chown -R tracks:tracks *
root@server:/var/www/tracks.domain.tld/tracks-1.7# chmod -R 664 *
root@server:/var/www/tracks.domain.tld/tracks-1.7# find -type d -exec chmod a+x '{}' \;
root@server:/var/www/tracks.domain.tld/tracks-1.7# chmod -R a+x script/*

Update the Tracks configuration

  • Edit config/database.yml to use the MySQL database:
production:
  adapter: mysql
  database: tracks
  host: localhost
  username: tracksuser
  password: SecretPassword
  • Edit config/site.yml to change the password salt:
# This is the 'salt' to add to the password before it is encrypted
# You need to change this to something unique for yourself
# salt: "change-me"
salt: "SecretSalt"
(substitute your own salt, of course)

Populate the database

root@server:/var/www/tracks.domain.tld/tracks-1.7# rake db:migrate RAILS_ENV=production

Allow recurrent todos

Modify line 76 of app/views/recurring_todos/_recurring_todo_form.erb to be this:

text_field(:recurring_todo, :start_from, "value" => format_date(Time.now), "size" => 12, "class" => "Date", "onfocus" => "Calendar.setup", "tabindex" => 6, "autocomplete" => "off") %>
(instead of a reference to format_date(Time.today) )

Create the Apache virtual host

  • Create the virtual host file, /etc/apache2/sites-available/tracks.domain.tld
<VirtualHost *:80>
       ServerAdmin webmaster@localhost

       DocumentRoot /var/www/tracks.domain.tld/tracks-1.7/public
       ServerName tracks.domain.tld

       RewriteEngine On
       RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
       RewriteCond %{SCRIPT_FILENAME} !maintenance.html
       RewriteRule ^.*$ /system/maintenance.html [L]

       ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"

       <DirectoryMatch "^/.*/\.svn/">
           ErrorDocument 403 /404.html
           Order allow,deny
           Deny from all
           Satisfy All
       </DirectoryMatch>

       ErrorLog /var/log/apache2/error.log

       # Possible values include: debug, info, notice, warn, error, crit,
       # alert, emerg.
       LogLevel warn

       CustomLog /var/log/apache2/access.log combined
       ServerSignature On
</VirtualHost>
  • Remove Tracks's .htaccess file:
root@server:var/www/tracks.domain.tld/tracks-1.7# mv public/.htaccess public/dontneedhtaccess
  • Enable the site:
root@server:~# a2ensite tracks.domain.tld
root@server:~# /etc/init.d/apache2 reload

Allow restarts of Passenger

  • Create the tmp directory:
root@server:~# mkdir -p /var/www/tracks.domain.tld/tracks-1.7/tmp
  • To restart Passenger, issue this command:
root@server:~# touch /var/www/tracks.domain.tld/tracks-1.7/tmp/restart.txt