| 1 | = Project creation cookbook = |
| 2 | |
| 3 | == Make skeletal project == |
| 4 | |
| 5 | * Install and configure all [SoftwarePrereqsUnix prerequisite software] (follow the directions carefully). Make sure MySQL is configured and running. |
| 6 | * [http://boinc.berkeley.edu/source_code.php Get the BOINC software], say into HOME/boinc. |
| 7 | * [http://boinc.berkeley.edu/build_system.php Compile the BOINC server software] |
| 8 | * Run HOME/boinc/tools/[MakeProject make_project] |
| 9 | * Append the contents of projects/PROJECT/PROJECT.httpd.conf to httpd.conf and restart Apache. |
| 10 | * Use 'crontab' to insert a cron job to run the project's periodic tasks, e.g. |
| 11 | 0,5,10,15,20,25,30,35,40,45,50,55 * * * * HOME/projects/PROJECT/bin/start --cron |
| 12 | (if cron cannot run 'start', try using a helper script to set PATH and PYTHONPATH) |
| 13 | * Copy project.xml from HOME/boinc/tools to HOME/projects/PROJECT, edit it to reflect your applications and platforms, and run [http://boinc.berkeley.edu/tool_xadd.php bin/xadd]. |
| 14 | * Edit html/project/project.inc, changing the master URL and copyright holder. |
| 15 | * Protect the html/ops directory (e.g. by putting .htaccess and .htpasswd files there). |
| 16 | |
| 17 | Visible result: the project web site is up. The database 'platforms' table has several rows. |
| 18 | |
| 19 | Troubleshooting: check the Apache access and error logs. |
| 20 | == Create an application version == |
| 21 | |
| 22 | * Create a BOINC application executable (if you're in a hurry, use the test application). |
| 23 | * Copy the executable to HOME/projects/PROJECTNAME/apps/APPNAME |
| 24 | * cd to HOME/projects/PROJECTNAME |
| 25 | * run bin//update_versions, type y or return. |
| 26 | * run ./stop && ./start |
| 27 | |
| 28 | Visible result: the web site's Applications page has an entry. |
| 29 | == Create a work unit == |
| 30 | |
| 31 | * Using a text editor, create a work unit template file and a result template file. |
| 32 | * Run create_work |
| 33 | * Edit config.xml to add <daemon> records for make_work, feeder, transitioner, file_deleter, the trivial validator, and the trivial assimilator. For example |
| 34 | {{{ |
| 35 | <daemon> |
| 36 | <cmd>validate_test -app appname</cmd> |
| 37 | <output>validate_test.log</output> |
| 38 | <pid_file>validate_test.pid</pid_file> |
| 39 | </daemon> |
| 40 | }}} |
| 41 | Visible result: after a project restart, 'status' shows the above daemon processes running. |
| 42 | |
| 43 | Troubleshooting: check the log files of all daemon processes. |
| 44 | == Test the system == |
| 45 | |
| 46 | * Create a client directory (on the same computer or different computer), say HOME/boinc_client. Copy the core client there. |
| 47 | * Using the web interface, create an account on the project. |
| 48 | * Run the core client; enter the project URL and the account key. |
| 49 | |
| 50 | Visible result: the client does a stream of work; the web site shows credit accumulating. |
| 51 | |
| 52 | Troubleshooting: check the log files of all daemon processes. |
| 53 | == Develop back end components == |
| 54 | |
| 55 | * Write a work generator. |
| 56 | * Write a validator. |
| 57 | * Write an assimilator. |
| 58 | * Edit the configuration file to use these programs instead of the place-holder programs. |
| 59 | * Make sure everything works correctly. |
| 60 | |
| 61 | == Extras == |
| 62 | |
| 63 | * Add message board categories: see html/ops/create_forums.php |