.. _configuration: Details of the configuration of Mapbender3 ========================================== Configuration steps ------------------- Following we describe the configuration steps of Mapbender3 a bit further. Configuring your Mapbender3 installation is made up of the following six steps: * Creating the database * Creating the database schema * Copying the bundles' assets to the public web directory * Creating the "root" user * Inserting srs parameters (EPSG code definition) * Loading the applications of the mapbender.yml to your database All can be done using the console utility provided by `Symfony2 `_, on which Mapbender3 framework is built upon. There's a mayor caveat though you should understand, before continuing: | The console utility will write files in the app/cache and app/logs directories. These operations are made using the user permissions of whatever user you're logged in with. This is also true for the app/db directory and the SQLite database within. When you open the application from within the browser, the server PHP process will try to access/write all these files with other permissions. So make sure you give the PHP process write access to these files. See last step below. **Notice:** The following steps assume that you are in the directory above the app directory (notice that for git installation that means mapbender3/application/ else mapbender3/). .. code-block:: yaml cd mapbender3/ or for git based installation cd mapbender3/application Adapting the configuration file ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Database connection parameters are stored together with some more configuration parameters in the file **app/config/parameters.yml**. This file is using YAML syntax, so be aware that you can **not** use tabs for indenting. Be careful about this and use whitespaces instead. Your database configuration in the parameters.yml file could look like this when you use PostgreSQL: .. code-block:: yaml database_driver: pdo_pgsql database_host: localhost database_port: 5432 database_name: mapbender3 database_path: database_user: postgres database_password: secret Further information is available in the chapter `Configuring the database <../database.html>`_. Creating the database ^^^^^^^^^^^^^^^^^^^^^ Symfony2 can attempt to create your database, this works of course only if the configured database user is allowed to. Call the console utility like this: .. code-block:: yaml app/console doctrine:database:create Creating the database schema ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Symfony2 will create the database schema for you: .. code-block:: yaml app/console doctrine:schema:create Copying the bundles' assets ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Each bundle has it's own assets - CSS files, JavaScript files, images and more - but these need to be copied into the public web folder: .. code-block:: yaml app/console assets:install web Alternatively, as a developer, you might want to use the symlink switch on that command to symlink instead of copy. This will make editing assets inside the bundle directories way easier. .. code-block:: yaml app/console assets:install web --symlink --relative Creating the administrative user ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The first user - which has all privileges - must be created using the command: .. code-block:: yaml app/console fom:user:resetroot This will interactively ask all information needed and create the user in the database. Alternatively, there is a silent mode you can use, if you want to use a script to install Mapbender3 and don't want to be asked for all parameters: .. code-block:: yaml app/console fom:user:resetroot --username="root" --password="root" --email="root@example.com" --silent Inserting srs parameters ^^^^^^^^^^^^^^^^^^^^^^^^ Inserting proj4 srs parameters into a database occurs using the command: .. code-block:: yaml app/console doctrine:fixtures:load --fixtures=./mapbender/src/Mapbender/CoreBundle/DataFixtures/ORM/Epsg/ --append Importing applications from mapbender.yml ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Importing applications from mapbender.yml into a database occurs using the command: .. code-block:: yaml app/console doctrine:fixtures:load --fixtures=./mapbender/src/Mapbender/CoreBundle/DataFixtures/ORM/Application/ --append Configuration files ------------------- The basic configuration is done inside the **app/config/parameters.yml** file. A template is provided in the app/config/parameters.yml.dist file. **app/config/config.yml** provides more parameters f.e. to configure portal functionality, owsproxy or provide an additional database. parameters.yml ^^^^^^^^^^^^^^ * database: The parameters starting with **database** are the database connection details. * mailer: The mailer settings start with **mailer**. Use f.e. smtp or sendmail. * locale: You can choose a locale for your application (default is en, de is available). Check http://doc.mapbender3.org/en/book/translation.html to find out how to modify translations or how to add a new language. **Notice:** You need a mailer for self-registration and reset password functionality. If you use a proxy you have to add the proxy settings to parameters.yml at section *OWSProxy Configuration*. This is how the configiration could look like: .. code-block:: yaml # OWSProxy Configuration ows_proxy3_logging: false ows_proxy3_obfuscate_client_ip: true ows_proxy3_host: myproxy ows_proxy3_port: 8080 ows_proxy3_connecttimeout: 60 ows_proxy3_timeout: 90 ows_proxy3_user: ~ ows_proxy3_password: ~ ows_proxy3_noproxy: - 192.168.1.123 config.yml ^^^^^^^^^^ * fom_user.selfregistration: To enable or disable self-registration of users, change the fom_user.selfregistration parameter. You have to define self_registration_groups, so that self-registered users are added to these groups automatically, when they register. They will get the rights that are assigned to these groups. * fom_user.reset_password: In the same way the possibility to reset passwords can be enabled or disabled. * framework.session.cookie_httponly: For HTTP-only session cookies, make sure the framework.session.cookie_httponly parameter is set to true. **Notice:** You need a mailer for self-registration and reset password functionality (see parameters.yml). mapbender.yml ^^^^^^^^^^^^^ You can configure an applications on two ways. In the mapbender.yml file or with the browser in the Mapbender3 backend. * The Mapbender Team provides an up-to-date mapbender.yml with demo applications. New elements with their parameters are added to this configuration in every new version (You can disable the applications by setting published: false or you can empty the mapbender.yml file) * applications that are defined in the mapbender.yml are not editable in the backend * you can import the applications to the database with the following app/console command .. code-block:: yaml app/console doctrine:fixtures:load --fixtures=./mapbender/src/Mapbender/CoreBundle/DataFixtures/ORM/Application/ --append Production- and Development environment and Caching: app.php and app_dev.php ----------------------------------------------------------------------------- Mapbender3 provides two environments: a production-environment for the general operation and a development-environment in which the application can be testet. This concept follows the `"environments" in the Symfony framework `_. The production-environment is called with the URL http://localhost/mapbender3/app.php, the development-environment with the URL http://localhost/mapbender3/app_dev.php. The call with app_dev.php is and should only be available from localhost. There are differences in the behaviour of app.php and app_dev.php: * The cache-mechanism of the development-environment behaves different: Not all files are cached, so that the code-changes are directly visible. Therefore is the usage of the app_dev.php always slower that the production-environment. In detail, the development-environment of Mapbender3 does not cache the CSS, JavaScript and Translation files, among others. The production-environment caches all theses files and puts them into the app/cache folder. * The development-environment gives out error-messages and stack-traces out to the user-interface. The production-environment logs them into the file app/log/prod.log. * The development-environment shows the Symfony Profiler. This tool logs things, that are important for developers but should not be visible for common users. .. image:: ../../../figures/symfony_profiler.png :scale: 80 The directory app/cache contains the cache-files. It contains directories for each environment (prod and dev) but the mechanism of the dev-cache, as described, behaves different. If changes of the Mapbender3 interface or the code are made, the cache-directory (app/cache) has to be cleared to see the changes in the application. The following screenshots shows the location of the cache-directory in Mapbender3: .. image:: ../../../figures/mapbender_cache_directories.png :scale: 80