SPY HILL Research
Spy-Hill.com

Poughkeepsie, New York [DIR] [UP]

BOINC Project Management


These notes describe some of my experience with building, installing, and managing a BOINC project. The notes are incomplete but hopefully better than nothing.

Last modified: 11 May 2006
[Unix Build] [Web server] [Directories] [Configuration]

It is not too difficult to set up your own BOINC project, though the process can be daunting at first when you are new to all the terminology and variety of new ideas. This page is an attempt to record all the little things that I found while building and maintaining a BOINC project. In addition to this page, you may find the information on these links helpful:

Basically, the things you need to have on your server to either build BOINC or run the server are: Python (scripting language), MySQL (Database server), Apache httpd (web server), PHP (client side web scripting), GD (image processing), OpenSSL (encryption softwarwe), and. libcurl (URL web tranfer functions). A complete list of softare dependencies and the minimum required version may be found on the BOINC site at:

BOINC Software prerequisites

I first set up a BOINC project on a Linux machine using Red Hat 7.3, and that worked well for some time. Some software which was not included in the RH 7.3 distribution, or which was out of date, had to be built from source, but that is not a major problem. I've since moved to Fedora Core 4, and again most of the software is in the distribution, but some things need to be built from source. If you are using a different Linux distribution then you may need to build different things, but the ideas are the same.

Building BOINC on Unix

To set up a project you will want to put your project server on a Unix machine. So you will have to build BOINC on Unix and then install the server software. Here are some useful links:

Apache Web Server

BOINC uses the Apache web server both to communicate to users, though the web pages, and to communicate with clients for scheduling, downloading files, and uploading results. Here are some things to consider:

Configuration

Details about how to set up the web server configuration can be found in
this separate page.

PHP - server side scripting

Most of the web pages you view on BOINC, especially those which contain information about your account or preferences, are generated dynamically on the server using PHP. You will therefore need to have a fairly recent version of PHP installed, and configure your web server to use it.

GD - dynamical graphical image manipulation library

The BOINC server use the 'gd' suite of image processing functions to create re-sized versions of profile and avatar images. PHP works very well with GD, but I encountered problems when I moved to a Fedora Core machine. The clearest sypmtom of the probmem as an error message saying something like:
	PHP Fatal error:  Call to undefined function gd_info() in
	 /usr02/pirates/html/inc/image.inc on line 6,...

It turns out that Fedora Core 4 does not include GD with PHP by default, but it is easily added by installing the 'php-gd' RPM. It is on the 4th install disk, our you can say

	yum install php-gd

More information about GD can be found at:

Directory Structure

(list overview of directory structure here...)
(More important, discuss the file/directory permissions here!)

Site Customization

When you first set up your BOINC project you need to do a few things customize the web pages and get everything working. Project specific settings are set in the directory html/project. You need to create this directory. The easiest thing to do is to rename the directory html/project.sample which comes with BOINC to become html/project.

The reason that you must rename certain sample files and directories is so that they will not be overwritten when you run the script to upgrade your project. That script will copy new versions of all files in the BOINC distribution, which would replace the custom versions if there were files in the distribution with the same names.

Project Configuration

A large number of parameters that control the web pages are in the file project.inc in the html/project directory. Edit these to match your requirments. In the same file you will find a number of functions you should customize. In particular, the function project_banner() controls the banner which is put at the top of every displayed web page.

I have found it easiest to put all the separate functions I've created for my project in a separate file html/project/extras.inc (you could name it anything you want) and then include that file from /html/project/project.inc.

Project Home Page

The home page for your project is the file index.php in the html/user directory. A template file sample_index.php is provided in the BOINC distribution, but you need to customize it for your project. This page will also include the file schedulers.txt, which lists the URL of the scheduler (or schedulers) for your project.

Front Page News

The front page news (and RSS feed) is set in the file project_news.inc in the html/project directory. The format is fairly simple and there are examples in the file. Edit this file whenever you want to add a news item to the RSS feed and front page news. (A nicer interactive RSS news management system is in the works.)
xxaq

Discussion Forums

BOINC comes with software to support discusison forums so that participants can 'talk' with each other. When you set up a project you need to do two things to get the discussion forums started. You need to run a PHP script which creates the Categories for discussion and the Forums themselves under each Category. You also need to create the main index page for the discussion forums.

The create_forums.php script in the html/ops directory contains functions to create forum Categories and Forums. It is not an easy file to read or edit, but you only have to do this once. One argument you give to create a catagory or forum is an ordering parameter; the categories are displayed in increasing Order number, and then the Forums in each Category are also displayed in increasing order based on this parameter. If you ever need to change the display order, the easiest way to do so right now is 'by-hand' via the command line using mySQL (sorry).

These example files might make the task easier:

The main index page for the discussion forums is a file called forum_index.php in the html/user directory. You can edit the template file forum_sample_index.php to provide a custom look for your project and to select the searching options you wish to provide.

Periodic Tasks

(list stuff to do from cron and such...)

Upgrading the BOINC software

BOINC comes with a Python script which makes it fairly easy to upgrade your project. Once you have compiled the newest version of the BOINC software you simply run this script and it copies all the new versions of files into your project. The only complication is that this can overwrite any files which you have customized. It's a good idea to make a complete backup of your site (including the database) before you run the update script.
(list stuff to do after you run the upgrade script...)


Please send corrections or suggestions for improvement to
myers@spy-hill.net
 

  Copyright © 2006 by Spy Hill Research http://www.Spy-Hill.com/help/boinc/Project_Management.html (served by Islay.spy-hill.com) Last modified: 11 May 2006