INSTALLATION GUIDE ================== Contents of this file: * Requirements * Installation * Drupal administration * Customizing your theme(s) * Multisite Configuration REQUIREMENTS ------------ **SuiteDesk** began long time ago as a Drupal 6 project, and now continues as a standalone opensource product. It requires: * A web server (Apache web server with mode_rewrite module and the ability to use local `.htaccess` files is recommended), * PHP 5 (better with version 5.4.45), and * MySQL (4.1.1 or greater). See http://www.php.net and http://www.mysql.com for more information. INSTALLATION ------------ ### 1. DOWNLOAD SUITEDESK You can obtain the latest **SuiteDesk** release from: https://gitlab.cillero.es/manuelcillero/suitedesk ( = REPOSITORY ) If you select files in `.tar.gz` or `.zip` format, they can be extracted using most compression tools. Example, on a typical Unix command line, use: wget REPOSITORY/archive.tar.gz?ref=version tar -zxvf archive.tar.gz This will create a new directory called `suitedesk-version/` containing all **SuiteDesk** files and directories. Move the contents of that directory into your web server's document root or your public HTML directory: mv suitedesk-version/* suitedesk-version/.htaccess /var/www/html ### 2. DOWNLOAD AND INSTALL LIBRARIES Just follow the instructions provided in the `README.md` file available in the `libraries` directory to install the required libraries. ### 3. CREATE THE CONFIGURATION FILE AND GRANT WRITE PERMISSIONS **SuiteDesk** comes with a `default.settings.php` file in the `config/default` directory. Use this file as a template to create your settings file. To avoid problems when upgrading, **SuiteDesk** is not packaged with an actual settings file. You must create a file named `settings.php`. You may do so by making a copy of `default.settings.php`. For example (from the `config` directory): cp config/default/default.settings.php config/default/settings.php Next, give the web server write privileges to the `config/default/settings.php` file with the command (from the `config` directory): chmod o+w config/default/settings.php So that the files directory can be created automatically, give the web server write privileges to the `config/default` directory with the command (from the `config` directory): chmod o+w config/default ### 4. CREATE THE SUITEDESK DATABASE **SuiteDesk** requires access to a database in order to be installed. Your database user will need sufficient privileges to run **SuiteDesk**. To create a database using PHPMyAdmin or a web-based control panel consult the documentation or ask your webhost service provider. Take note of the *username*, *password*, *database name* and *hostname* as you create the database. You will enter these items in the next commands. This step is only necessary if you don't already have a database setup (e.g. by your host). In the following examples, *useradmin* is an example MySQL user which has the CREATE and GRANT privileges. Use the appropriate user name for your system. First, you must create a new database for your site (here, *databasename* is the name of the new database): mysqladmin -u useradmin -p create databasename MySQL will prompt for the *useradmin* database password and then create the initial database files. Next you must login and set the access database rights: mysql -u useradmin -p Again, you will be asked for the *useradmin* database password. At the MySQL prompt, enter following command: ```sql GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON databasename.* TO 'username'@'localhost' IDENTIFIED BY 'password'; ``` where - *databasename* is the name of your database, - *username@localhost* is the username of your MySQL account, and - *password* is the password required for that username. Note: Unless your database user has all of the privileges listed above, you will not be able to run **SuiteDesk**. If successful, MySQL will reply with: Query OK, 0 rows affected In the configuration file you will fill out the `$db_url` value to configure the database connection using the format: $db_url['default'] = 'mysql://username:password@localhost/databasename'; If your *username*, *password* or *database name* contain characters used to delineate `$db_url` parts, you can escape them via URI hex encodings: : = %3a / = %2f @ = %40 + = %2b ( = %28 ) = %29 ? = %3f = = %3d & = %26 If you prefix some or all database table names, you can use the `$db_prefix` setting and each table name will be prepended with its value. Be sure to use valid database characters only, usually alphanumeric and underscore. If no prefixes are desired, leave it as an empty string ''. To have all database names prefixed, set `$db_prefix` as a string: $db_prefix = 'main_'; To provide prefixes for specific tables set `$db_prefix` as an array where keys are the table names and the values are the prefixes. The `default` element holds the prefix for any tables not specified elsewhere in the array: $db_prefix = array( 'default' => 'main_', 'users' => 'shared_', 'sessions' => 'shared_', 'role' => 'shared_', 'authmap' => 'shared_', ); All data stored in database is in UTF-8. MySQL support different algorithms for comparing, indexing, and sorting characters; a so called "collation". The default collation of a database normally works for many use-cases, but depending on the language(s) of the stored data, it may be necessary to use a different collation in the `$db_collation` setting. Important: - Only set or change this value before installing **SuiteDesk**, unless you know what you are doing. - All database tables and columns should be in the same collation. Otherwise, string comparisons performed for table JOINs will be significantly slower. - Especially when storing data in German or Russian on MySQL 5.1+, you want to use the 'utf8_unicode_ci' collation instead. - More information at http://drupal.org/node/772678 ### 5. POPULATE THE DATABASE Run the next command to setup the database, create tables, populate them, set the first users accounts and provide basic web site settings. Remember, you will be asked for the *username* database password defined in previous step: mysql -u username -p databasename < config/populatedb.sql Also you will need to create a files storage directory in the default location at config/default/files (the location of the files directory may be changed after Drupal is installed). In some cases, you may need to create the directory and modify its permissions manually. Use the following commands (from the installation directory) to create the files directory and grant the web server write privileges to it: mkdir config/default/files chmod o+w config/default/files The install script will attempt to write-protect the settings.php file and the config/default directory after saving your configuration. However, you may need to manually write-protect them using the commands (from the installation directory): chmod a-w config/default/settings.php chmod a-w config/default If you make manual changes to the file later, be sure to protect it again after making your modifications. Failure to remove write permissions to that file is a security risk. Although the default location for the settings.php file is at config/default/settings.php, it may be in another location if you use the multi-site setup, as explained below. ### 6. REVIEW FILE SYSTEM STORAGE SETTINGS AND FILE PERMISSIONS The files directory created in previous step is the default file system path used to store all uploaded files, as well as some temporary files created by Drupal. After installation, the settings for the file system path may be modified to store uploaded files in a different location. It is not necessary to modify this path, but you may wish to change it if: * your site runs multiple Drupal installations from a single codebase (modify the file system path of each installation to a different directory so that uploads do not overlap between installations); or, * your site runs a number of web server front-ends behind a load balancer or reverse proxy (modify the file system path on each server to point to a shared file repository). To modify the file system path: * Ensure that the new location for the path exists or create it if necessary. To create a new directory named uploads, for example, use the following command from a shell or system prompt (while in the installation directory): mkdir uploads * Ensure that the new location for the path is writable by the web server process. To grant write permissions for a directory named uploads, you may need to use the following command from a shell or system prompt (while in the installation directory): chmod o+w uploads * Access the file system path settings in Drupal by selecting these menu items from the Navigation menu: Administer > Site configuration > File system Enter the path to the new location (e.g.: uploads) at the File System Path prompt. Changing the file system path after files have been uploaded may cause unexpected problems on an existing site. If you modify the file system path on an existing site, remember to copy all files from the original location to the new location. Some administrators suggest making the documentation files non-readable so that the exact version of **SuiteDesk** you are running is slightly more difficult to determine. If you wish to implement this optional security measure, use the following command from a shell or system prompt (while in the `config` directory): chmod a-r CHANGELOG.md Note that the example only affects CHANGELOG.md. To completely hide all documentation files from public view, repeat this command for each of the Drupal documentation files in the `config` directory, substituting the name of each file for CHANGELOG.md in the example. ### 7. INITIAL CONFIGURATION AND FIRST ACCESS When the install script succeeds, you will be directed to the "Welcome" page, and you will be logged in as the administrator already. Proceed with the initial configuration steps suggested on the "Welcome" page. If the default **SuiteDesk** theme is not displaying properly and links on the page result in "Page Not Found" errors, try manually setting the `$base_url` variable in the `settings.php` file if not already set. It's currently known that servers running FastCGI can run into problems if the `$base_url` variable is left commented out (see http://bugs.php.net/bug.php?id=19656). Examples: $base_url = 'http://www.example.com'; $base_url = 'http://www.example.com:8888'; $base_url = 'http://www.example.com/drupal'; $base_url = 'https://www.example.com:8888/drupal'; You might also want to force users to use a given domain. See the `.htaccess` file for more information. Drupal automatically generates a unique session cookie name for each site based on its full domain name. If you have multiple domains pointing at the same site, you can either redirect them all to a single domain (see comment in `.htaccess`), or uncomment the `$cookie_domain` and specify their shared base domain. Doing so assures that users remain logged in as they cross between your various domains. Also you can see in the `settings.php` file what PHP settings are possible, including whether they can be set at runtime (i.e., when ini_set() occurs), read the PHP documentation at http://www.php.net/manual/en/ini.php#ini.list and take a look at the `.htaccess` file to see which non-runtime settings are used there. Settings defined in the configuration file should not be duplicated there so as to avoid conflict issues. If you encounter a situation where users post a large amount of text, and the result is stripped out upon viewing but can still be edited, Drupal's output filter may not have sufficient memory to process it. If you have this, you may wish to uncomment the lines with PHP settings `pcre.*_limit` and increase their limit values. See http://php.net/manual/en/pcre.configuration.php. Finally, to override specific global settings for your site, set them in the configuration file, including the reverse proxy if needed. And that's all, you are ready to access to your site writting its URL in your preferred and use one of the next pre-configured Drupal/**SuiteDesk** users: * root, Drupal user to administer site (see Drupal Administration below), * pmdemo, SuiteDesk user to use Project management features, * clidemo, SuiteDesk user to use Customer features. It's highly recommended to change the password of all these users before delivery the site in production. ### 8. CRON MAINTENANCE TASKS Many **SuiteDesk** modules have periodic tasks that must be triggered by a cron maintenance task, including search module (to build and update the index used for keyword searching) and system module (to perform routine maintenance and pruning on system tables). To activate these tasks, call the cron page by visiting http://www.example.com/cron.php, which, in turn, executes tasks on behalf of installed modules. Most systems support the crontab utility for scheduling tasks like this. The following example crontab line will activate the cron tasks automatically on the hour: 0 * * * * wget -O - -q -t 1 http://www.example.com/cron.php DRUPAL ADMINISTRATION --------------------- A new installation of Drupal defaults to a very basic configuration with only a few active modules and minimal user access rights. Use your administration panel to enable and configure services. For example: General Settings Administer > Site configuration > Site information Enable Modules Administer > Site building > Modules Configure Themes Administer > Site building > Themes Set User Permissions Administer > User management > Permissions For more information on configuration options, read the instructions which accompany the different configuration settings and consult the various help pages available in the administration panel. Community-contributed modules and themes are available at http://drupal.org/. CUSTOMIZING YOUR THEME(S) ------------------------- Now that your installation is running, you will want to customize the look of your site. Several sample themes are included and more can be downloaded from drupal.org. Simple customization of your theme can be done using only CSS. Further changes require understanding the phptemplate engine that is part of Drupal. See http://drupal.org/handbook/customization to find out more. MULTISITE CONFIGURATION ----------------------- A single **SuiteDesk** installation can host several Drupal-powered sites, each with its own individual configuration. Additional site configurations are created in subdirectories within the `config` directory. Each subdirectory must have a `settings.php` file which specifies the configuration settings. The easiest way to create additional sites is to copy the `default` directory and modify the `settings.php` file as appropriate. The configuration file to be loaded is based upon the rules below. The configuration directory will be discovered by stripping the website's hostname from left to right and pathname from right to left. The first configuration file found will be used and any others will be ignored. If no other configuration file is found then the default configuration file at `config/default` will be used. For example, for a fictitious site installed at http://www.example.org/mysite/test the `settings.php` is searched in the following directories: 1. config/www.example.org.mysite.test 2. config/example.org.mysite.test 3. config/org.mysite.test 4. config/www.example.org.mysite 5. config/example.org.mysite 6. config/org.mysite 7. config/www.example.org 8. config/example.org 9. config/org 10. config/default If you are installing on a non-standard port number, prefix the hostname with that number. For example, http://www.example.org:8080/mysite/test could be loaded from `config/8080.www.example.org.mysite.test` directory. For more information on configuring the file system path in a multi-site configuration, see step 7 above.