== Configuration Guidelines == How to configure a new instance. === File Permissions === {{{ chown www-data web2py/applications/admin/cron chown www-data web2py/applications/admin/cron/crontab chown www-data web2py/applications/admin/cache/ chown www-data web2py/applications/admin/databases/ chown www-data web2py/applications/admin/errors/ chown www-data web2py/applications/admin/languages/ chown www-data web2py/applications/admin/sessions/ chown www-data web2py/applications/admin/uploads/ cd web2py/applications bzr branch lp:sahana-eden eden chown www-data eden/cron chown www-data eden/cache/ chown www-data eden/databases/ chown www-data eden/errors/ chown www-data eden/languages/ chown www-data eden/sessions/ chown www-data eden/static/img/markers chown www-data eden/static/scripts/tools chown www-data eden/static/styles/S3/sahana.css chown www-data eden/static/styles/S3/sahana.min.css chown www-data eden/uploads/ mkdir eden/uploads/gis_cache mkdir eden/uploads/images mkdir eden/uploads/tracks chown www-data eden/uploads/gis_cache chown www-data eden/uploads/images chown www-data eden/uploads/tracks }}} === Database Setup === Production system should use [wiki:InstallationGuidelinesMySQL MySQL]: * Edit {{{models/00_db.py}}} === Security === Before the 1st login, edit {{{models/000_config.py}}}: {{{ deployment_settings.auth.hmac_key = "akeytochange" }}} === Configurable Options === These can be set via [http://127.0.0.1:8000/sahana/admin/setting/1/update] * Admin Name/Email/Tel * Debug: improve performance by deselecting this option. * Self-Registration: disable Self-Registration by deselecting this option. * Audit Read: Enable Auditing of all Read operations (Display) * Audit Write: Enable Auditing of all Write operations (Create/Update/Delete) In time these will be configured by [wiki:BluePrintWebSetup Web Setup]. Some options are currently only configurable via editing {{models/000_config.py}}: {{{ deployment_settings.auth.registration_requires_verification = False deployment_settings.auth.registration_requires_approval = False deployment_settings.base.public_url = "http://127.0.0.1:8000" deployment_settings.base.migrate = True deployment_settings.mail.server = "127.0.0.1:25" deployment_settings.mail.sender = "sahana@your.org" deployment_settings.mail.approver = "useradmin@your.org" deployment_settings.L10n.utc_offset = "UTC +0000" }}} We would like to expose these to a [wiki:BluePrintWebSetup Web Setup], although it's low priority as these are mostly installation-time decisions. Disable unnecessary modules, which is currently done in {{{models/000_config.py}}} Can also reorganise the Modules menu completely to better display those relevant to the instance: * edit file {{{models/01_modules.py}}} * section: {{{s3.menu_modules}}} If you wish to hide some fields which you don't want to confuse your system, then you can do something like this {{{models/zzz_local.py}}} instead of amending the main model (this means that future merges from trunk won't clobber your changes): {{{ # Hide unnecessary fields tablename = 'pr_person' table = db[table] table.pr_pe_label.readable = False table.pr_pe_label.writable = False table.local_name.readable = False table.local_name.writable = False table.opt_pr_gender.readable = False table.opt_pr_gender.writable = False table.opt_pr_age_group.readable = False table.opt_pr_age_group.writable = False table.email.readable = False table.email.writable = False table.mobile_phone.readable = False table.mobile_phone.writable = False table.date_of_birth.readable = False table.date_of_birth.writable = False table.opt_pr_nationality.readable = False table.opt_pr_nationality.writable = False table.opt_pr_country.readable = False table.opt_pr_country.writable = False table.opt_pr_religion.readable = False table.opt_pr_religion.writable = False table.opt_pr_marital_status.readable = False table.opt_pr_marital_status.writable = False table.occupation.readable = False table.occupation.writable = False }}} === Mapping Options === http://localhost:8000/sahana/gis/config/update/1 Default Map Portal: * Lat * Lon * Zoom Bounds of relevant area: * Min Lon * Max Lat * Min Lon * Max Lat Selecting Base Layers: * http://localhost:8000/sahana/gis/map_service_catalogue Test out whether !OpenStreetMap, Google, Yahoo or Bing have the best road maps & Satellite imagery API Keys for Google, Yahoo & !MultiMap layers: * http://localhost:8000/sahana/gis/apikey Import Admin Boundaries: * The locations hierarchy should be populated with L0->L3 data, which are often available in the form of shapefiles * [wiki:HaitiGISToDo#LoadGISdata Haiti example] * USA L1-L2: http://www2.census.gov/cgi-bin/shapefiles/national-files === Roles === By default the 1st user to register will gain the Administrator role. All other users have just the 'Authenticated' level of access, which by default allows full Read/Update/Delete access to all records. To add roles to users, go to the Administration menu & within User Management choose 'Membership'. Security policy is configured in {{{models/zzz.py}}} === Ticket Viewer === Add the following to {{{routes.py}}} of your web2py installation for pretty error pages & the ability to view Tickets. * copy from {{{routes.example.py}}}, if one doesn't yet exist. {{{ routes_onerror = [ ('eden/401', '/eden/default/user/login'), ('eden/*', '/eden/errors/index'), ('*/*', '/eden/errors/index'), ] }}} === {{{favicon.ico}}} & {{{robots.txt}}} === These can be provided via 2 different means: * mod_rewrite * {{{web2py/routes.py}}}: copy {{{routes.example.py}}} & edit === Themes === Ensure these files are writable by the webserver: {{{ chown www-data /path/to/web2py/applications/eden/static/scripts/tools chown www-data /path/to/web2py/applications/eden/static/styles/S3/sahana.css chown www-data /path/to/web2py/applications/eden/static/styles/S3/sahana.min.css }}} Colour scheme: * select using Admin Panel Logo: * copy new logo to {{{static/img}}} * point to this using Admin Panel Footer: * amend {{{views/footer.html}}} DeveloperGuidelinesThemes === Internet Hosting === Can switch to having users download files from CDNs instead of your server.[[BR]] This can improve performance in 2 ways: * The CDN may have faster/closer servers to the client * Increases the number of files being downloaded simultaneously, since pulled from different hostnames: http://www.websiteoptimization.com/speed/tweak/parallel/ jQuery from Google by uncommenting the line in {{{views/sahana_scripts_min.html}}} ext-all.js & ext-all.css from Cachefly by uncommenting the lines in {{{views/gis/gis_scripts_min.html}}} & {{{views/gis/ol_js_loaders.html}}} === Performance Optimisation === * set Empty=False in {{{models/zzz_1st_run.py}}} instead of doing a DAL hit * set modules to load from a hardocded app name instead of substituting request.application in {{{models/00_db.py}}} * Use [http://developer.yahoo.com/yslow/ YSlow] Firefox plugin to analyse the site * Ensure images are optimised: http://tools.dynamicdrive.com/imageoptimizer/index.php * Compress !JavaScript: http://compressorrater.thruhere.net * Use [http://pypi.python.org/pypi/slimmer/ Slimmer] on HTML/CSS? * GZip static files in Apache: http://developer.yahoo.com/performance/rules.html#gzip * Set Expires on static files in Apache * Use MySQL or PostgreSQL instead of SQLite * Disable DB migrations in {{{00_db.py}}}: migrate = False * Bytecode compile the application * Enable caching * return response.render('customview.html', data=data): http://groups.google.com/group/web2py/msg/39210d40d8a729c0 * http://groups.google.co.uk/group/web2py/browse_thread/thread/218bb58c96883578 * Clustering with Pound: http://www.web2pyslices.com/main/slices/take_slice/33 ([http://groups.google.com/group/web2py/browse_thread/thread/63543217b9a69955 Discussion]) ---- InstallationGuidelines