Y.A.B.

Mike Mondagon

Maintaining Your Own Typo 4.0.3

This is the combined experience from my previous entry Typo 4.0 + Apache2 + MySQL + Gentoo and Chapter 27 Deployment and Production / Agile Web Development with Rails and Capistrano: Automating Application Deployment

What I am illustrating here is how to maintain a Typo blog. What I mean by maintain is that you are creating your own source repository for your instance of Typo. This will allow you to patch the application with fixes and your own modifications. You will also integrate Capistrano into your repository so that you deploy your updates with ease. Also, I show you my implementation of a Mongrel init.d script on Gentoo that will ensure Mongrel starts back up on server reboot.

Machine layouts

Try to remember this as I step through these instructions. The initial source setup for Typo is on your local host. You create a Subversion repository where ever you keep yours. My Subversion repository is on a remote machine that I can access with svn+ssh:// URL. Assumed is that you are the administrator of the deployment machine. You are going to check the Typo instance you set up locally into your source repository. Your setup will also contain a Capistrano configuration. Your deployment server must have access to your Subversion repository. Once you do an initial Capistrano deployment you will finalize your Typo source checked into Subversion. Once you have this initial check in and deployment completed I’ll show you how to patch the broken Google sitemap.xml in Typo 4.0.3, and redeploy your version of Typo. Your finished Typo blog will be deployed to http://www.mysite.com/

Software Versions

Software installed at the time of this writing:

$ uname -a
Linux toki 2.6.19-gentoo-r5 #2 SMP Fri Feb 23 14:57:32 PST 2007 i686 Celeron (Mendocino) GenuineIntel GNU/Linux
  • dev-lang/ruby-1.8.5_p2
  • dev-ruby/rubygems-0.8.11-r6 * dev-db/sqlite-3.3.5-r1
  • dev-db/mysql-5.0.26-r2
  • net-www/apache-2.2.4

Tools Preparation

The basic gems needed for Typo are:

gem install --remote rails --version 1.2.2 --include-dependencies --rdoc
gem install --remote rails --version 1.1.6 --include-dependencies --rdoc
gem install --remote typo --version 4.0.3 --include-dependencies --rdoc
gem install --remote termios --include-dependencies termios --rdoc
gem install --remote capistrano --include-dependencies --rdoc
gem install --remote mongrel --include-dependencies --rdoc
gem install --remote mongrel_cluster --include-dependencies --rdoc

Typo Instance Install And Preparation

We are going to prepare our Typo instance in a local directory. Later on we’ll source this in a Subversion repository. local_user is the user directory where you are going to set up the Capistrano deployment configuration as well. Installing withe Typo script:

typo install /home/local_user/projects/typo

The Typo installer script invokes an instance of Mongrel. Stop the mongrel that the Typo installer invokes:

typo stop /home/local_user/projects/typo

(Example Only) Typo configure command

We don’t need to do this but for reference sake here’s how to invoke Typo’s configure command with lots of options. We’ll be using the equivalent settings in our Capistrano configuration. Typo’s web server settings:

rails-environment=production web-server=mongrel_cluster port-number=8900 threads=2 bind-address=127.0.0.1 database=mysql

typo config /var/www/mysite_com/typo rails-environment=production web-server=mongrel port-number=8900 threads=2 bind-address=127.0.0.1 database=mysql

Mysql Preparation

For convenience sake here’s how to create all three mysql environments at once on a single mysql instance. Prepare the development, test, and production mysql Typo database users and databases like so:

$ mysql -u root -p -h localhost
mysql> create database mysite_com_typodb_development character set utf8;
mysql> create database mysite_com_typodb_test character set utf8;
mysql> create database mysite_com_typodb_production character set utf8;
mysql> grant all on mysite_com_typodb_development.* to typo_dev@localhost identified by 'changeme';
mysql> grant all on mysite_com_typodb_test.* to typo_test@localhost identified by 'changeme';
mysql> grant all on mysite_com_typodb_production.* to typo_prod@localhost identified by 'changeme';
mysql> flush privileges;
mysql> quit;

Configure your database settings in config/database.yml. Typo’s default is sqlite3 based. We’ll be using Capistrano’s after_update_code task to copy in real our production database settings rather have them reside in the copy of config/database.yml that is checked into our source repository.

Subversion Check in

Now do a quick and dirty setup to manage your Typo source in Subversion. The example below is from my Subversion + Rails In Five Minutes post. /path/to/repository/typo is where ever your Subversion repository is at. Remember that your Subversion repository must be accessible to your production Mongrel server.

This is on machine where your Subversion repository lives:

svnadmin create /path/to/repository/typo
svn mkdir --message="Creating my project's repository ..." file:///path/to/project/trunk file:///path/to/project/tags file:///path/to/project/branches

The example below is using a local file:// Subversion URL, but this could also be svn+ssh:// Subversion URL is your Subversion repository is remote. This is on the localhost where we are setting up our Typo configuration:

cd /home/local_user/projects/typo
svn import . file:///path/to/source/code/trunk -m "Importing the existing code for my rails project" 

Once initially checked in we need to check out source

cd ..
mv typo typo.old
svn checkout file:///path/to/source/code/trunk typo

Prepare Subversion to be rails aware in your project.

$ svn remove log/*
$ svn commit -m 'removing all log files from subversion'
$ svn propset svn:ignore "*.log" log/
$ svn update log/
$ svn commit -m 'Ignoring all files in /log/ ending in .log'
$ svn remove tmp/*
$ svn commit -m 'removing all tmp artifacts from subversion'
$ svn propset svn:ignore "*" tmp/
$ svn update tmp/
$ svn commit -m "ignore tmp/ content from now on" 

Mongel cluster & Capistrano configuration

I derived this experience from Chapter 27 Setting Up A Deployment Environment appendix of the Agile book. A thorough discussion of the Apache details is at: Apache Best Practice Deployment

Now we’ll setup our Typo configuration to be in a Mongrel Cluster:

mongrel_rails cluster::configure -e production -p 8900 -a 127.0.0.1 -N 3 -c /var/www/mysite/typo/current

The Mongrel configuration is dropped to config/mongrel_cluster.yml

Setup Capistrano

cap --apply-to /home/local_user/projects/typo typo

Add this require statement to the top of your config/deploy.rb

require
 
'
mongrel_cluster/recipes
'

Example Capistrano settings. Your repository is at http://svn.host.com/ and you’ve named your application typo . The Typo deployment directory on your production server is: /var/www/mysite/typo

set
 
:application
,
 
"
typo
"

set
 
:repository
,
 
"
http://svn.host.com/
#{application}
/trunk
"

set
 
:deploy_to
,
 
"
/var/www/mysite/
#{application}
"

role
 
:web
,
 
"
your.host.com
"

role
 
:app
,
 
"
your.host.com
"

role
 
:db
,
 
"
your.host.com
"
 
,
 
:primary
 
=>
 
true

set
 
:user
,
 
"
mydeployeruser
"
            
# defaults to the currently logged in user

set
 
:mongrel_conf
,
 
"
#{current_path}
/config/mongrel_cluster.yml
"

Also notice that I’m declaring a remote user mydeployeruser that Capistrano will become while doing its tasks on the remote server. I add that user to the apache group on the server. I use the apache group as the default web administration group on that server. mydeployeruser needs to be allowed to invoke the mongrel_rails executable in the /etc/sudoers file on the deployment server. This is how mongrel_rails might look in my /etc/sudoers

mydeployeruser        ALL=/usr/bin/mongrel_rails

On your production server, make a config directory in your Capistrano shared directory for your production database.yml:

mkdir -p /var/www/mysite/typo/shared/config
chown -R mydeployeruser.mydeployeruser /var/www/mysite/typo/shared/config

then copy your production database.yml.production into the shared/config directory. Below we’ll create a after_update_code Capistrano task to copy that production database.yml into production. Secure your production database.yml:

chown -R mydeployeruser.mydeployeruser /var/www/mysite/typo/shared/config/database.yml.production
chmod 771 /var/www/mysite/typo/shared/config/
chmod 660 /var/www/mysite/typo/shared/config/database.yml.production

This idea of having after_update_code Capistrano task to copy over the production database.yml from the Agile book. In config/deploy.rb :

task :after_update_code, :roles => :app do
  db_config = "#{shared_path}/config/database.yml.production" 
  run "cp #{db_config} #{release_path}/config/database.yml" 
end

to copy in your production database settings securely. Now finish the Capistrano setup locally:

cap setup
cap cold_deploy

Now check in the completed Capistrano configuration to into your source repository:

svn status
svn commit

Additional Mysql And Typo Preparation

On your production server change directory to where you installed typo and install the MySQL schema for typo for your three instances

$ mysql -u typo_dev -p mysite_com_typodb_development < db/schema.mysql.sql
$ mysql -u typo_test -p mysite_com_typodb_test < db/schema.mysql.sql
$ mysql -u typo_prod -p mysite_com_typodb_production < db/schema.mysql.sql

Apache2 Configuration

These instructions are Gentoo specific, modify to suit your Apache deployment.

We will use mod_proxy to route requests from port 80 of a virtual host to port 8900 on local host. To enable mod_proxy in Apache2 on Gentoo you need to have a PROXY defined in your /etc/conf.d/apache2, such as:

APACHE2_OPTS="-D DEFAULT_VHOST -D PROXY" 

And in the /etc/apache2/httpd.conf you need to configure your PROXY with an IfDefine statement such as (its usually already set up by default):

<IfDefine PROXY>
    LoadModule proxy_module                  modules/mod_proxy.so
    LoadModule proxy_connect_module          modules/mod_proxy_connect.so
    LoadModule proxy_http_module             modules/mod_proxy_http.so
</IfDefine>

Apache2 VirtualHost Configuration

The minimum virtual host file you need to have Apache2 route requests to Mongrel are as follows. You will need to change the specific path and server name details to your installation in /etc/apache2/vhosts.d/01_mysite_com_vhost.conf (or what ever you name your vhost file)

The following virtual host implies NameVirtualHost *:80 in 00_default_vhost.conf or httpd.conf

<VirtualHost *:80>
  ServerName www.mysite.com
  DocumentRoot /var/www/mysite/typo/current/public

  ErrorLog /var/www/mysite/logs/error_log
  CustomLog /var/www/mysite/logs/access_log combined

  <Directory "/var/www/mysite/typo/current/public" >
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>

  ProxyRequests Off
  <Proxy *>
    Order Deny,Allow
    Deny from all
    Allow from all
  </Proxy>

  <Proxy balancer://mongrel_cluster>
    BalancerMember http://127.0.0.1:8900
    BalancerMember http://127.0.0.1:8901
  </Proxy>

  RewriteEngine On
  # Check for  maintenance file and redirect all requests
  RewriteCond  %{DOCUMENT_ROOT}/system/maintenance.html -f
  RewriteCond  %{SCRIPT_FILENAME} !maintenance.html
  RewriteRule  ^.*$ /system/maintenance.html [L]
  # Rewrite index to check for static
  RewriteRule ^/$ /index.html [QSA]
  # Rewrite to check for Rails cached page
  RewriteRule ^([^.]+)$ $1.html [QSA]
  # Redirect all non-static requests to cluster
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]
</VirtualHost>

Use apache2ctl to make sure you have a good virtual host configuration.

apache2ctl configtest

Reload Apache2 after getting a configuration to pass.

/etc/init.d/apache2 reload

Now open a web browser to http://www.mysite.com/ (change to the real name of your site) you should be redirected to http://www.mysite.com/ your bare Typo installation. If things are not working tail the Apache2 log and the Mongrel logs to see if you can find answers to your errors there:

tail -f /var/www/mysite/logs/error_log
tail -f /var/www/mysite/typo/log/production.log

Once its all lined up your blog should be running on http://www.mysite.com/

Gentoo init.d for Mogrel clusters

Here’s an example init.d script for you Mongrel clusters

#!/sbin/runscript
depend() {
  need net
  use mysql apache2
   after apache2
}

start() {
  ebegin "Starting mongrels" 
  /usr/bin/mongrel_rails cluster::start -C /var/www/mysite/typo/current/config/mongrel_cluster.yml
  res=$?
  # force mongrel to initialize the indexex
  wget -o /dev/null http://localhost:8900/
  wget -o /dev/null http://localhost:8901/
  eend $res
}

stop() {
  ebegin "Stopping mongrels" 
  /usr/bin/mongrel_rails cluster::stop -C /var/www/mysite/typo/current/config/mongrel_cluster.yml
  eend $?
}

reload() {
  ebegin "Restarting mongrels" 
  /usr/bin/mongrel_rails cluster::restart -C /var/www/mysite/typo/current/config/mongrel_cluster.yml
  res=$?
  # force mongrel to initialize the indexex
  wget -o /dev/null http://localhost:8900/
  wget -o /dev/null http://localhost:8901/
  eend $res
}

Add your mongrel script to the default run levels of the server.

rc-update add mongrel default

Helpful Capistrano commands

Show tasks

cap show_tasks

Re-deploy Typo

cap disable_web
cap update
cap enable_web

Stop/stop your cluster

cap stop_mongrel_cluster
cap start_mongrel_cluster

Additional Typo patches

You patch your Typo in the project directory that you’ve checkout from your Subversion repository. Once patched you check the changes in. Then you do a Capistrano redeployment of your application to propagate your changes, e.g.:

cap disable_web
cap update
cap enable_web

The current sitemap.xml in Typo 4.0.3 is broken for Google. You need to fix it for Google love:

Typo Google Sitemap fix

Here’s how to add those neato Web 2.0 WP Notable icon links in Typo

Notable social bookmarking/networking for Typo

My version also shows how to add them to Typo “pages”

Machine layouts

Try to remember this as I step through these instructions. The initial source setup for Typo is on your local host. You create a Subversion repository where ever you keep yours. My Subversion repository is on a remote machine that I can access with svn+ssh:// URL. Assumed is that you are the administrator of the deployment machine. You are going to check the Typo instance you set up locally into your source repository. Your setup will also contain a Capistrano configuration. Your deployment server must have access to your Subversion repository. Once you do an initial Capistrano deployment you will finalize your Typo source checked into Subversion. Once you have this initial check in and deployment completed I’ll show you how to patch the broken Google sitemap.xml in Typo 4.0.3, and redeploy your version of Typo. Your finished Typo blog will be deployed to http://www.mysite.com/

Software Versions

Software installed at the time of this writing:

$ uname -a
Linux toki 2.6.19-gentoo-r5 #2 SMP Fri Feb 23 14:57:32 PST 2007 i686 Celeron (Mendocino) GenuineIntel GNU/Linux
  • dev-lang/ruby-1.8.5_p2
  • dev-ruby/rubygems-0.8.11-r6 * dev-db/sqlite-3.3.5-r1
  • dev-db/mysql-5.0.26-r2
  • net-www/apache-2.2.4

Tools Preparation

The basic gems needed for Typo are:

gem install --remote rails --version 1.2.2 --include-dependencies --rdoc
gem install --remote rails --version 1.1.6 --include-dependencies --rdoc
gem install --remote typo --version 4.0.3 --include-dependencies --rdoc
gem install --remote termios --include-dependencies termios --rdoc
gem install --remote capistrano --include-dependencies --rdoc
gem install --remote mongrel --include-dependencies --rdoc
gem install --remote mongrel_cluster --include-dependencies --rdoc

Typo Instance Install And Preparation

We are going to prepare our Typo instance in a local directory. Later on we’ll source this in a Subversion repository. local_user is the user directory where you are going to set up the Capistrano deployment configuration as well. Installing withe Typo script:

typo install /home/local_user/projects/typo

The Typo installer script invokes an instance of Mongrel. Stop the mongrel that the Typo installer invokes:

typo stop /home/local_user/projects/typo

(Example Only) Typo configure command

We don’t need to do this but for reference sake here’s how to invoke Typo’s configure command with lots of options. We’ll be using the equivalent settings in our Capistrano configuration. Typo’s web server settings:

rails-environment=production web-server=mongrel_cluster port-number=8900 threads=2 bind-address=127.0.0.1 database=mysql

typo config /var/www/mysite_com/typo rails-environment=production web-server=mongrel port-number=8900 threads=2 bind-address=127.0.0.1 database=mysql

Mysql Preparation

For convenience sake here’s how to create all three mysql environments at once on a single mysql instance. Prepare the development, test, and production mysql Typo database users and databases like so:

$ mysql -u root -p -h localhost
mysql> create database mysite_com_typodb_development character set utf8;
mysql> create database mysite_com_typodb_test character set utf8;
mysql> create database mysite_com_typodb_production character set utf8;
mysql> grant all on mysite_com_typodb_development.* to typo_dev@localhost identified by 'changeme';
mysql> grant all on mysite_com_typodb_test.* to typo_test@localhost identified by 'changeme';
mysql> grant all on mysite_com_typodb_production.* to typo_prod@localhost identified by 'changeme';
mysql> flush privileges;
mysql> quit;

Configure your database settings in config/database.yml. Typo’s default is sqlite3 based. We’ll be using Capistrano’s after_update_code task to copy in real our production database settings rather have them reside in the copy of config/database.yml that is checked into our source repository.

Subversion Check in

Now do a quick and dirty setup to manage your Typo source in Subversion. The example below is from my Subversion + Rails In Five Minutes post. /path/to/repository/typo is where ever your Subversion repository is at. Remember that your Subversion repository must be accessible to your production Mongrel server.

This is on machine where your Subversion repository lives:

svnadmin create /path/to/repository/typo
svn mkdir --message="Creating my project's repository ..." file:///path/to/project/trunk file:///path/to/project/tags file:///path/to/project/branches

The example below is using a local file:// Subversion URL, but this could also be svn+ssh:// Subversion URL is your Subversion repository is remote. This is on the localhost where we are setting up our Typo configuration:

cd /home/local_user/projects/typo
svn import . file:///path/to/source/code/trunk -m "Importing the existing code for my rails project" 

Once initially checked in we need to check out source

cd ..
mv typo typo.old
svn checkout file:///path/to/source/code/trunk typo

Prepare Subversion to be rails aware in your project.

$ svn remove log/*
$ svn commit -m 'removing all log files from subversion'
$ svn propset svn:ignore "*.log" log/
$ svn update log/
$ svn commit -m 'Ignoring all files in /log/ ending in .log'
$ svn remove tmp/*
$ svn commit -m 'removing all tmp artifacts from subversion'
$ svn propset svn:ignore "*" tmp/
$ svn update tmp/
$ svn commit -m "ignore tmp/ content from now on" 

Mongel cluster & Capistrano configuration

I derived this experience from Chapter 27 Setting Up A Deployment Environment appendix of the Agile book. A thorough discussion of the Apache details is at: Apache Best Practice Deployment

Now we’ll setup our Typo configuration to be in a Mongrel Cluster:

mongrel_rails cluster::configure -e production -p 8900 -a 127.0.0.1 -N 3 -c /var/www/mysite/typo/current

The Mongrel configuration is dropped to config/mongrel_cluster.yml

Setup Capistrano

cap --apply-to /home/local_user/projects/typo typo

Add this require statement to the top of your config/deploy.rb

require
 
'
mongrel_cluster/recipes
'

Example Capistrano settings. Your repository is at http://svn.host.com/ and you’ve named your application typo . The Typo deployment directory on your production server is: /var/www/mysite/typo

set
 
:application
,
 
"
typo
"

set
 
:repository
,
 
"
http://svn.host.com/
#{application}
/trunk
"

set
 
:deploy_to
,
 
"
/var/www/mysite/
#{application}
"

role
 
:web
,
 
"
your.host.com
"

role
 
:app
,
 
"
your.host.com
"

role
 
:db
,
 
"
your.host.com
"
 
,
 
:primary
 
=>
 
true

set
 
:user
,
 
"
mydeployeruser
"
            
# defaults to the currently logged in user

set
 
:mongrel_conf
,
 
"
#{current_path}
/config/mongrel_cluster.yml
"

Also notice that I’m declaring a remote user mydeployeruser that Capistrano will become while doing its tasks on the remote server. I add that user to the apache group on the server. I use the apache group as the default web administration group on that server. mydeployeruser needs to be allowed to invoke the mongrel_rails executable in the /etc/sudoers file on the deployment server. This is how mongrel_rails might look in my /etc/sudoers

mydeployeruser        ALL=/usr/bin/mongrel_rails

On your production server, make a config directory in your Capistrano shared directory for your production database.yml:

mkdir -p /var/www/mysite/typo/shared/config
chown -R mydeployeruser.mydeployeruser /var/www/mysite/typo/shared/config

then copy your production database.yml.production into the shared/config directory. Below we’ll create a after_update_code Capistrano task to copy that production database.yml into production. Secure your production database.yml:

chown -R mydeployeruser.mydeployeruser /var/www/mysite/typo/shared/config/database.yml.production
chmod 771 /var/www/mysite/typo/shared/config/
chmod 660 /var/www/mysite/typo/shared/config/database.yml.production

This idea of having after_update_code Capistrano task to copy over the production database.yml from the Agile book. In config/deploy.rb :

task :after_update_code, :roles => :app do
  db_config = "#{shared_path}/config/database.yml.production" 
  run "cp #{db_config} #{release_path}/config/database.yml" 
end

to copy in your production database settings securely. Now finish the Capistrano setup locally:

cap setup
cap cold_deploy

Now check in the completed Capistrano configuration to into your source repository:

svn status
svn commit

Additional Mysql And Typo Preparation

On your production server change directory to where you installed typo and install the MySQL schema for typo for your three instances

$ mysql -u typo_dev -p mysite_com_typodb_development < db/schema.mysql.sql
$ mysql -u typo_test -p mysite_com_typodb_test < db/schema.mysql.sql
$ mysql -u typo_prod -p mysite_com_typodb_production < db/schema.mysql.sql

Apache2 Configuration

These instructions are Gentoo specific, modify to suit your Apache deployment.

We will use mod_proxy to route requests from port 80 of a virtual host to port 8900 on local host. To enable mod_proxy in Apache2 on Gentoo you need to have a PROXY defined in your /etc/conf.d/apache2, such as:

APACHE2_OPTS="-D DEFAULT_VHOST -D PROXY" 

And in the /etc/apache2/httpd.conf you need to configure your PROXY with an IfDefine statement such as (its usually already set up by default):

<IfDefine PROXY>
    LoadModule proxy_module                  modules/mod_proxy.so
    LoadModule proxy_connect_module          modules/mod_proxy_connect.so
    LoadModule proxy_http_module             modules/mod_proxy_http.so
</IfDefine>

Apache2 VirtualHost Configuration

The minimum virtual host file you need to have Apache2 route requests to Mongrel are as follows. You will need to change the specific path and server name details to your installation in /etc/apache2/vhosts.d/01_mysite_com_vhost.conf (or what ever you name your vhost file)

The following virtual host implies NameVirtualHost *:80 in 00_default_vhost.conf or httpd.conf

<VirtualHost *:80>
  ServerName www.mysite.com
  DocumentRoot /var/www/mysite/typo/current/public

  ErrorLog /var/www/mysite/logs/error_log
  CustomLog /var/www/mysite/logs/access_log combined

  <Directory "/var/www/mysite/typo/current/public" >
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>

  ProxyRequests Off
  <Proxy *>
    Order Deny,Allow
    Deny from all
    Allow from all
  </Proxy>

  <Proxy balancer://mongrel_cluster>
    BalancerMember http://127.0.0.1:8900
    BalancerMember http://127.0.0.1:8901
  </Proxy>

  RewriteEngine On
  # Check for  maintenance file and redirect all requests
  RewriteCond  %{DOCUMENT_ROOT}/system/maintenance.html -f
  RewriteCond  %{SCRIPT_FILENAME} !maintenance.html
  RewriteRule  ^.*$ /system/maintenance.html [L]
  # Rewrite index to check for static
  RewriteRule ^/$ /index.html [QSA]
  # Rewrite to check for Rails cached page
  RewriteRule ^([^.]+)$ $1.html [QSA]
  # Redirect all non-static requests to cluster
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*)$ balancer://mongrel_cluster%{REQUEST_URI} [P,QSA,L]
</VirtualHost>

Use apache2ctl to make sure you have a good virtual host configuration.

apache2ctl configtest

Reload Apache2 after getting a configuration to pass.

/etc/init.d/apache2 reload

Now open a web browser to http://www.mysite.com/ (change to the real name of your site) you should be redirected to http://www.mysite.com/ your bare Typo installation. If things are not working tail the Apache2 log and the Mongrel logs to see if you can find answers to your errors there:

tail -f /var/www/mysite/logs/error_log
tail -f /var/www/mysite/typo/log/production.log

Once its all lined up your blog should be running on http://www.mysite.com/

Gentoo init.d for Mogrel clusters

Here’s an example init.d script for you Mongrel clusters

#!/sbin/runscript
depend() {
  need net
  use mysql apache2
   after apache2
}

start() {
  ebegin "Starting mongrels" 
  /usr/bin/mongrel_rails cluster::start -C /var/www/mysite/typo/current/config/mongrel_cluster.yml
  res=$?
  # force mongrel to initialize the indexex
  wget -o /dev/null http://localhost:8900/
  wget -o /dev/null http://localhost:8901/
  eend $res
}

stop() {
  ebegin "Stopping mongrels" 
  /usr/bin/mongrel_rails cluster::stop -C /var/www/mysite/typo/current/config/mongrel_cluster.yml
  eend $?
}

reload() {
  ebegin "Restarting mongrels" 
  /usr/bin/mongrel_rails cluster::restart -C /var/www/mysite/typo/current/config/mongrel_cluster.yml
  res=$?
  # force mongrel to initialize the indexex
  wget -o /dev/null http://localhost:8900/
  wget -o /dev/null http://localhost:8901/
  eend $res
}

Add your mongrel script to the default run levels of the server.

rc-update add mongrel default

Helpful Capistrano commands

Show tasks

cap show_tasks

Re-deploy Typo

cap disable_web
cap update
cap enable_web

Stop/stop your cluster

cap stop_mongrel_cluster
cap start_mongrel_cluster

Additional Typo patches

You patch your Typo in the project directory that you’ve checkout from your Subversion repository. Once patched you check the changes in. Then you do a Capistrano redeployment of your application to propagate your changes, e.g.:

cap disable_web
cap update
cap enable_web

The current sitemap.xml in Typo 4.0.3 is broken for Google. You need to fix it for Google love:

Typo Google Sitemap fix

Here’s how to add those neato Web 2.0 WP Notable icon links in Typo

Notable social bookmarking/networking for Typo

My version also shows how to add them to Typo “pages”