Skip to content
README.md 3.77 KiB
Newer Older
## Installation and configuration

Requirements:

* Apache httpd server (tested on Apache/2.4.6)
* PHP (5.4+), composer for dependecies
* MySQL/MariaDB (tested on MariaDB 5.5.52)
* PHP MySQL module

On Ubuntu:

    sudo apt install apache2 mariadb-server libapache2-mod-php mariadb-server php7.2-xml php7.2-mbstring php-mysql php-curl php-yaml

### PHP

Put RAP sources in `/var/www/html/rap-ia2`

For installing PHP dependencies run:

    composer install

Sonia Zorba's avatar
Sonia Zorba committed
Install also the bcmath PHP package (used in X.509 parser).

### MySQL / MariaDB

Create a dedicated database and user:

    CREATE DATABASE rap;
    CREATE USER rap@localhost IDENTIFIED BY 'XXXXXX';
    GRANT ALL PRIVILEGES ON rap.* TO rap@localhost;

Enable the event scheduler:

* open MySQL configuration file (e.g. /etc/my.cnf, or /etc/mysql/mariadb.conf.d/*-server.cnf for MariaDB)
* under the section [mysqld] set `event_scheduler=1`
* restart MySQL

Then run the setup script:

    mysql -u root -p <  sql/setup-database.sql

### Apache (httpd)

* Enable .htaccess in rap folder:

In Apache configuration (e.g. /etc/apache2/apache2.conf) add:

    <Directory /var/www/html/rap-ia2/>
        AllowOverride All
    </Directory>

* Enable Apache mod rewrite: `sudo a2enmod rewrite`
* Configure a valid HTTPS certificate on the server
* Configure X.509 client certificate authentication:

        <Directory /var/www/html/rap-ia2/auth/x509/>
            Options Indexes FollowSymLinks
            AllowOverride None
            Order allow,deny
            allow from all
            SSLVerifyClient require
            SSLVerifyDepth 10
            SSLOptions +ExportCertData
        </Directory>

* Shibboleth authentication:

        <Directory /var/www/html/rap-ia2/auth/saml2/>
            AuthType shibboleth
            ShibRequestSetting requireSession 1
            Require valid-user
        </Directory>

* Protect log directory:

        <Directory /var/www/html/rap-ia2/logs/>
            Order deny,allow
            Deny From All
        </Directory>

* Protect RAP Web Service in Basic-Auth:

        <Location "/rap-ia2/ws">
            AuthType basic
            AuthName RAP
            AuthUserFile apachepasswd
            Require valid-user
        </Location>

* Then creates a password file for RAP Web Service Basic-Auth:
    * `cd /etc/httpd/`
    * `htpasswd -c apachepasswd rap`
        * The last command creates an hashed password for an user "rap" and store it in a file named apachepasswd.

* Finally, restart the Apache server.

### Social networks

Before using social API it is necessary to register an application on each social network and obtain API keys and secrets:

* https://console.developers.google.com
* https://www.linkedin.com/developer/apps
* https://developers.facebook.com/apps

### Configuration file

Copy the `config-example.php` into `config.php` and edit it for matching your needs.

### Generate keypair

    php exec/generate-keypair.php

### Logs directory

Create the logs directory and assign ownership to the Apache user (usually www-data or apache)

    mkdir logs
    sudo chown www-data logs

### Docker

Database image:

    docker build -f docker/db-Dockerfile --tag rap-ia2/database .

Sonia Zorba's avatar
Sonia Zorba committed
### Run Unit Tests and build code coverage report

(XDebug or another code coverage driver needs to be installed; e.g. `sudo apt install php-xdebug`)

    ./vendor/bin/phpunit --bootstrap vendor/autoload.php --coverage-html build/coverage-report tests/

## Additional information and developer guide
See the wiki: https://www.ict.inaf.it/gitlab/zorba/rap-ia2/wikis/home

## Troubleshooting

### Class not found while developing

If you see a message like this:

    PHP Fatal error:  Uncaught Error: Class 'RAP\\[...]' not found

probably you have to regenerate the PHP autoload calling `composer dumpautoload` in RAP root directory.