= Upgrading server software = The BOINC server software (scheduler, daemons, web pages) is continually improved and debugged. We recommend that projects upgrade to the latest version every few weeks or so. There may also be points where upgrades are mandatory to continue working with current client software. We maintain a list of [ServerUpdates recent changes]. The steps required to upgrade are as follows: 1. (Optional) Stop the project, and make backups of the project database and the project tree. 1. [SourceCode Download] (using SVN) the current source code. Compile it in your BOINC source directory. 1. Run the upgrade script: {{{ $ cd source/tools $ ./upgrade project_name }}} The upgrade script copies files from the `source/html/`, `source/sched` and `source/tool` directories to the corresponding project directories. The default project root directory is `$HOME/projects/project_name`. If this is not where your project lives then you also need to use the `--project_root` flag to specify the location of the directory above where your project lives, like so: {{{ $ ./upgrade --project_root /path/to/projects project_name }}} The project directory would then be `/path/to/projects/project_name`. This allows for several BOINC projects to co-exist on the same server. It is possible to update only the web pages (PHP files), using the `--web_only` flag: {{{ $ ./upgrade --web_only project_name }}} (There is no option to update only the server software but not the web pages, but there should be.) 4. Update your project's database, if needed. First {{{ $ cd project/html/ops }}} and look at the file `db_update.php`. This has a number of functions in it with names like {{{ update_8_05_2005() }}} Each function performs a particular database update. You must perform all updates, in sequence, starting from your last server software upgrade. If you are not sure when that was, you can use `mysql` to see that current format of your database. For example, to see the fields in the `user` table, type {{{ $ mysql project_name mysql> explain user; }}} To do a particular update, edit `db_update.php` so that (at the bottom) it calls that function. Then do {{{ $ php db_update.php }}} Repeat this for the necessary updates, in increasing chronological order. 1. Check file permissions and ownership of the feeder, scheduler, etc. 1. Start the project, and check log files to make sure everything is OK. Run the BOINC client and test basic functions (attaching to project, getting work).