= The `make_project` script = The `make_project` script creates the server components of a BOINC project. To use it, [ServerIntro set up a BOINC server]. Then, for example, type: {{{ cd BOINC_SOURCE/tools ./make_project --test_app cplan }}} This creates a project with [ServerComponents#ThemasterURL master URL] `http://HOSTNAME/cplan/` whose directory structure is rooted at `$HOME/projects/cplan`. More specifically, `make_project` does the following: * Create the [ServerDirs project directory and its subdirectories]. * Create the project's encryption keys if necessary. NOTE: before making the project visible to the public, you must move the code-signing private key to a highly secure (preferably non-networked) host, and delete it from the server host. * Create and initialize the [DataBase MySQL database]. * Copy source and executable files. * Generate the project's [ProjectConfigFile configuration file]. With the '''--test_app''' option (recommended for the first time) the project will have a [ExampleApps test application] (uppercase) and daemons to generate and handle work for this application. This lets you quickly check that the project is working; you can remove the test application later by editing [ProjectConfigFile config.xml]. {{{ #!comment Editing config.xml alone isn't enough to get rid of an application. Only the validator and assimilator are there. To remove the app itself, DB edits are needed. However, I'm not sure how to explain that to somebody who has just created a project and doesn't know too much yet. }}} The following steps complete the project setup: * Insert `PROJECT_NAME.http.conf` into `/etc/apache/httpd.conf` (path varies), or [http://httpd.apache.org/docs/2.0/mod/core.html#include Include] it from that file. * Run `crontab -e`, and add an entry to run the project's cron script: {{{ 0,5,10,15,20,25,30,35,40,45,50,55 * * * * PROJECT_HOME/bin/start --cron }}} (if cron cannot run 'start', try using a helper script to set the `PATH` and `PYTHONPATH` environment variables) * Run [XaddTool bin/xadd] and [UpdateVersions bin/update_versions] in the project's home directory. * Run [StartTool bin/start]. The script prints instructions for these steps. The command-line syntax is as follows: {{{ make_project [options] project_name [ 'Project Long Name ' ] }}} Options are as follows (normally you don't need to include any of them): == Directory options == || --project_root || Project root directory path. Default: `$HOME/projects/PROJECT_NAME` || || --key_dir || Where keys are stored. Default: `PROJECT_ROOT/keys` || || --url_base || Determines master URL Default: `http://HOSTNAME/PROJECT_NAME/` || || --no_query || Accept all directories without yes/no query || || --delete_prev_inst || Delete project-root first (from prev installation) || == URL options == || --html_user_url || User URL. Default: `URL_BASE/PROJECT_NAME/` || || --html_ops_url || Admin URL. Default: `URL_BASE/PROJECT_NAME_ops/` || || --cgi_url || CGI URL. Default: `URL_BASE/PROJECT_cgi/` || == Database options == || --db_host || Database host. Default: none (this host) || || --db_name || Database name. Default: `PROJECT_NAME` || || --db_user || Database user. Default: current user || || --db_passwd || Database password. Default: None || || --drop_db_first || Drop database first (from prev installation) || == Miscellaneous options == || --test_app || install test application || || --web_only || Install only web features (for [BossaIntro Bossa], [BoltIntro Bolt]) || || --verbose={0,1,2} || verbosity level, default 1 || || -h or --help || Show options ||