Typo is a weblog application using the well known Ruby on Rails framework.
These are my notes as I remember on installation of Typo on FC2 with Ensim Control Panel...
(Ensim Pro 4.1.0-8.fc.2 )
This is the first part of a series of notes which will cover the preparation of what I need to get Typo up and running:
-
Install ruby.
Install gem.
Install rails.
Install mysql ruby binding.
Install the fcgi libraries.
Install mod_fcgi apache module.
Install fastcgi ruby binding.
Install and setup Typo.
Process
-
Download the current gzipped tarball of Ruby and install it.
$ wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.4.tar.gz $ tar -xvzf ruby-1.8.4.tar.gz $ cd ruby-1.8.4 $ ./configure --prefix=/usr $ make # make installDownload the current RubyGems tarball and install it.
$ wget http://rubyforge.org/frs/download.php/5207/rubygems-0.8.11.tgz $ tar -xvzf rubygems-0.8.11.tgz $ cd rubygems-0.8.11 # ruby setup.rbInsall rails via gem.
# gem update # gem install railsInstall mysql Ruby binding:.
# gem install mysqlEnsim should already have mod_fastcgi but Apache hasn't been setup to use it.
If it does not have it already, you need to install the fcgi libraries and the mod_fastcgi module.
Install fcgi libraries:
$ wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz $ tar -xvzf fcgi-2.4.0.tar.gz $ cd fcgi-2.4.0 $ ./configure $ make # make installInstall mod_fastcgi module:
$ wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gz $ tar -xvzf mod_fastcgi-2.4.2.tar.gz $ cd mod_fastcgi-2.4.2 $ cp Makefile.AP2 Makefile $ make top_dir=/usr/lib/httpd # make installLoad the module and add the FastCGI handler to the "httpd.conf" file.
LoadModule fastcgi_module modules/mod_fastcgi.so <IfModule mod_fastcgi.c> FastCgiIpcDir /tmp/fcgi_ipc/ AddHandler fastcgi-script .fcgi </IfModule>
NOTE: Since "/etc/httpd/conf/httpd.conf" does an Include conf.d/*.conf operation before the User and Group configuration options are set, do not add the handlers to conf.d directory.
As a result, the IPC Directory is created by root, and is inaccessible to user who runs the web server, which is specified in the User directive.
This results in the following types of errors when starting, or restarting the server:
FastCgiIpcDir /tmp/fcgi_ipc: access for server (uid -1, gid -1) failed
To avoid this problem, ensure that the User and Group are set before the FastCgiIpcDir directive.
That's all that needs to be done with Apache, so restart it:# service httpd restartInstall the FastCGI Ruby binding:
# gem install fcgi -- --with-fcgi-include=/usr/local/include --with-fcgi-lib=/usr/local/lib
Note the double dashes after fcgi is not a typo.
Now that we have prepared Apache and Ruby, to use fastcgi and mysql, we can go ahead and install Typo as mentioned in the installation notes.
Typo and CPU load
One thing that I learnt today was that typo is heavy on the cpu if not deployed as 'production'.
By default Typo is distributed for development. I needed to Uncomment the line that mentions:
So if you aren't doing development work, suggest making the above change in the 'config/environment.rb' file.
Tuning FastCGI for Rails Application on Apache
Configure FastCGI to use a static server definition with the "FastCgiServer" directive -- which ensures that fcgi listeners are available upon apache being started.
Note the full path to "dispatch.fcgi" should be the same as when a dynamic server is run, so find out the full path to the dispatcher prior to adding the static directive else it may still be running dynamically.
The "-idle-timeout" parameter is important in case of application timing out with slow response times in which case Apache will assume FastCGI crashed and return 500 errors.
2 running processes should be quite sufficient and may be increased for high traffic site to 3 or 4 times the number of CPU, which may give a better performance.