MonarcAppFO/INSTALL/INSTALL.ubuntu2204.md

5.9 KiB

Installation on Ubuntu 22.04

1. Install LAMP & dependencies

1.1. Install system dependencies

sudo apt-get install zip unzip git gettext curl jq

Some might already be installed.

1.2. Install MariaDB

sudo apt-get install mariadb-client mariadb-server

Secure the MariaDB installation

sudo mysql_secure_installation

Especially by setting a strong root password.

1.3. Install Apache2

sudo apt-get install apache2

Enable modules, settings, and default of SSL in Apache

sudo a2dismod status
sudo a2enmod ssl
sudo a2enmod rewrite
sudo a2enmod headers

Apache Virtual Host

Modify default Apache virtual host:

sudo vi /etc/apache2/sites-enabled/000-default.conf

With this configuration:

<VirtualHost _default_:80>
    ServerAdmin admin@localhost.lu
    ServerName monarc.local
    DocumentRoot /var/lib/monarc/fo/public

    <Directory /var/lib/monarc/fo/public>
        DirectoryIndex index.php
        AllowOverride All
        Require all granted
    </Directory>

    <IfModule mod_headers.c>
       Header always set X-Content-Type-Options nosniff
       Header always set X-XSS-Protection "1; mode=block"
       Header always set X-Robots-Tag none
       Header always set X-Frame-Options SAMEORIGIN
    </IfModule>

    SetEnv APP_ENV "development"
</VirtualHost>
sudo apt-get install php apache2 libapache2-mod-php php-curl php-gd php-mysql php-pear php-xml php-mbstring php-intl php-imagick php-zip php-bcmath

1.5 Apply PHP configuration settings in your php.ini

https://github.com/monarc-project/MonarcAppFO/blob/master/vagrant/bootstrap.sh#L22-L26

1.6 Apply all changes

sudo systemctl restart apache2.service

2. Installation of MONARC

PATH_TO_MONARC='/var/lib/monarc/fo'
PATH_TO_MONARC_DATA='/var/lib/monarc/fo-data'
MONARC_VERSION=$(curl --silent -H 'Content-Type: application/json' https://api.github.com/repos/monarc-project/MonarcAppFO/releases/latest | jq  -r '.tag_name')
MONARCFO_RELEASE_URL="https://github.com/monarc-project/MonarcAppFO/releases/download/$MONARC_VERSION/MonarcAppFO-$MONARC_VERSION.tar.gz"

mkdir -p /var/lib/monarc/releases/
# Download release
curl -sL $MONARCFO_RELEASE_URL -o /var/lib/monarc/releases/`basename $MONARCFO_RELEASE_URL`
# Create release directory
mkdir /var/lib/monarc/releases/`basename $MONARCFO_RELEASE_URL | sed 's/.tar.gz//'`
# Unarchive release
tar -xzf /var/lib/monarc/releases/`basename $MONARCFO_RELEASE_URL` -C /var/lib/monarc/releases/`basename $MONARCFO_RELEASE_URL | sed 's/.tar.gz//'`
# Create release symlink
ln -s /var/lib/monarc/releases/`basename $MONARCFO_RELEASE_URL | sed 's/.tar.gz//'` $PATH_TO_MONARC
# Create data and caches directories
mkdir -p $PATH_TO_MONARC_DATA/cache $PATH_TO_MONARC_DATA/DoctrineORMModule/Proxy $PATH_TO_MONARC_DATA/LazyServices/Proxy $PATH_TO_MONARC_DATA/import/files
# Create data directory symlink
ln -s $PATH_TO_MONARC_DATA $PATH_TO_MONARC/data

2.1 Change access rights

sudo chown -R www-data:www-data /var/lib/monarc

2.2. Databases

Create a MariaDB user for MONARC

Start MariaDB as root:

sudo mysql

Create a new user for MONARC:

CREATE USER 'monarc'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'monarc'@'%';
FLUSH PRIVILEGES;

Create 2 databases

In your MariaDB interpreter:

CREATE DATABASE monarc_cli DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE monarc_common DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
  • monarc_common contains models and data created by CASES;
  • monarc_cli contains all client risk analyses. Each analysis is based on CASES model of monarc_common.

Initializes the database

cd /var/lib/monarc/releases/MonarcAppFO-$MONARC_VERSION
mysql -u monarc -ppassword monarc_common < db-bootstrap/monarc_structure.sql
mysql -u monarc -ppassword monarc_common < db-bootstrap/monarc_data.sql

Database connection

Create the configuration file:

$ sudo cp ./config/autoload/local.php.dist ./config/autoload/local.php

And configure the database connection:

    return [
        'doctrine' => [
            'connection' => [
                'orm_default' => [
                    'params' => [
                        'host' => 'localhost',
                        'user' => 'monarc',
                        'password' => 'password',
                        'dbname' => 'monarc_common',
                    ],
                ],
                'orm_cli' => [
                    'params' => [
                        'host' => 'localhost',
                        'user' => 'monarc',
                        'password' => 'password',
                        'dbname' => 'monarc_cli',
                    ],
                ],
            ],
        ],
    ];

3. Migrating MONARC DB

sudo php ./vendor/robmorgan/phinx/bin/phinx migrate -c module/Monarc/FrontOffice/migrations/phinx.php
sudo php ./vendor/robmorgan/phinx/bin/phinx migrate -c module/Monarc/Core/migrations/phinx.php

4. Create initial user

sudo php ./vendor/robmorgan/phinx/bin/phinx seed:run -c ./module/Monarc/FrontOffice/migrations/phinx.php

The username is admin@admin.localhost and the password is admin.

5. Statistics for Global Dashboard

If you would like to use the global dashboard stats feature, you need to configure a Stats Service instance on your server.

The architecture, installation instructions and GitHub project can be found here:

The communication of access to the StatsService is performed on each instance of FrontOffice (clients).