Topic: Technical Requirements

Topic type:

What software is needed to run Kete?

Originally written by Walter McGinnis, Kete Project Lead for Katipo.

Operating System:

 

  • A Unix or Unix-like OS, such as Linux, Mac OS X, any of the BSDs, Solaris, etc.  Currently we have installation guides for the Debian Etch distribution of Linux and Mac OS X (see related topics).  Note that Windows isn't currently supported, nor are there plans to add support in the future.  However, it is possible in theory as Ruby on Rails supports Windows.

Version Control System:

 

  • Git - the most commonly used version control system in the Ruby on Rails world, a evolutionary replacement of CVS/SVN
  • (no longer required as of Kete 1.1) Piston ruby gem - although not a requirement, it is highly recommended for managing a project code base's periodic import and upgrade from the Kete project via Git Vendor Branch Management.  There are instructions in our install guides for this best practice

 

Database:

 

  • MySQL or PostgreSQL (not regularly tested) configured to handle Unicode characters, though Oracle is also theoretically possible via adding a driver to Ruby on Rails.  We recommend that users of PostgreSQL have in house expertise in Ruby, Rails,  and testing for fixing SQL compatibility issues that occasionally spring up in Kete's code or in third party code that Kete uses.  We welcome patches and hope to eventually have the resources to fully test both databases in the future.

Web Server:

 

  • Apache with Passenger (mod_rails) installed. We may also offer Nginx with Passenger as an option in the future.

 

Versions of Kete older than 1.2 also supported the following.

  • Mongrel as Application Server - this is widely considered the standard application server for Ruby on Rails, the Kete project has decided to concentrate its support around Mongrel to maintain consistency
  • Nginx as Proxy Web Server - A very fast and reliable proxy server that is also becoming the preferred proxy server in the Ruby on Rails world

Web Development Framework:

 

  • Ruby on Rails -  a set of tools and conventions that allow Kete to be developed in a rapid fashion while sharing code with other like-minded Open Source Software projects,  Kete is a Ruby on Rails application.

Search Engine:

 

  • Zebra Z39.50 Full Text Search - as the foundation for both Kete searches (federated included) and to provide a Open Archive Initiative / Dublin Core metadata repository, we will be using a public Zebra database and a private Zebra database per Kete instance.
  •   YAZ - supporting software for Zebra

 

Supporting Software:

Note that parts of this list may be bundled with Kete itself, such as plugins.

 

  • the Ruby programming language - what Ruby on Rails is developed in, we use Ruby Enterprise Edition (for versions of Kete later than 1.1)
  • Ruby Gems packaging system - allows Kete to have its functionality extended in a standard manner using distinct sets of functionality bundled as packages
  • Imagemagick and Rmagick ruby gem - for image manipulation, such as creating thumbnails
  • Memecached and memcache-client ruby gem - for sharing session data between individual Mongrel processes
  • Backgroundrb, a Ruby on Rails plugin that Kete uses for running long running or periodically background processes such as sending digest email notifications and running imports
  • Ruby/ZOOM ruby gem and acts_as_zoom Ruby on Rails plugin - for communicating with our Zebra databases via the Z39.50 standard ZOOM API

Deployment:

 

  • Capistrano ruby gem - used to move project code base changes from a development or testing environment to production server(s)

 

That covers all the big ones.  Kete uses several other plugins and ruby gems, but they are either bundled with the Kete source code or are installed via an included command from Kete.

The steps for installing on both Debian Etch and Mac OS X can be found in the following guides:

 

Hardware Recommendations:

The formula for what your site will need for hardware has too many variable to give many definite answers on what are "required".  Thanks to Kete's Ruby on Rails heritage though, it is quite possible to scale up your hardware resources as your site becomes more popular.  See the "What is meant by 'scaling' when talking about Kete?" and "So you want a kete of your own?" topics for a fuller discussion. Here are some things to keep in mind:

  • RAM: Beyond the RAM requirements of the Operating System you will need to think about the following:
    •  A low traffic Kete site can eek by with roughly 256 Mb RAM (though that is really cutting it close), a medium Kete site works well with 768 Mb. Sites getting more requests will want to add memory as necessary.
    • If the Backgroundrb plugin is turned on (the default), a Kete site usually loads a full instance of Kete into memory. So it's best to allocate an additional 128 Mb of RAM per Kete site for background work.
    • You will want to consider what sort of RAM your database program needs or would benefit from. You may need to adjust settings for your database program as a separate step to take advantage of any RAM you have allocated for this.
    • You will want to consider what sort of RAM you should allocate to Memecached daemon. You will need to adjust Memecached's settings (usually under /etc/memcached) to take advantage of any RAM you have allocated for this.
    • Zebra will dynamically spawn processes as needed to answer search requests, so you don't need to specifically assign a memory footprint to it, but you probably want to take it into account when planning your hardware's specifications.
  • Storage:  This is very dependent on what sort of size image, audio, video, and document files you anticipate uploading into your Kete site, as well as the number of files.  Keep in mind that beyond the original file, for images, Kete also produces corresponding small, medium, and large files of the image.
  • Backups! - Make sure you have a backup strategy for your Kete site and budget for suitable hardware, etc.

Discuss This Topic

There are 0 comments in this discussion.

join this discussion