Commit a77ab570 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Fix typo / conf docker + ébauche de doc d'installation (à relire/compléter)

parent 95da7bc7
Loading
Loading
Loading
Loading
+33 −33
Original line number Diff line number Diff line

# Accès spécifique
access_strategy:  Oscar\Connector\Access\ConnectorAccessOracleDB

db_host:
db_port:
db_user:
db_password:
db_name:
db_charset: AL32UTF8

db_query_single: >
  SELECT
    ID, CODE, PARENT, LIBELLE_COURT,
    TO_CHAR(
          CAST (DATE_MODIFICATION AS timestamp) AT TIME ZONE 'UTC',
          'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"'
      ) UPDATED_AT,
      TYPE_RECHERCHE, CODE_RECHERCHE, LIBELLE_LONG, TELEPHONE, SITE_URL, TYPE,
      RNSR, ADRESSE_POSTALE
  FROM organizations WHERE ID = :p1 ORDER BY UPDATED_AT DESC FETCH FIRST ROW ONLY

db_query_all: >
  SELECT
    ID, CODE, PARENT, LIBELLE_COURT,
    TO_CHAR(
          CAST (DATE_MODIFICATION AS timestamp) AT TIME ZONE 'UTC',
          'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"'
      ) UPDATED_AT,
      TYPE_RECHERCHE, CODE_RECHERCHE, LIBELLE_LONG, TELEPHONE, SITE_URL, TYPE,
      RNSR, ADRESSE_POSTALE
  FROM organizations
  ORDER BY NIVEAU, CODE
#
## Accès spécifique
#access_strategy:  Oscar\Connector\Access\ConnectorAccessOracleDB
#
#db_host:
#db_port:
#db_user:
#db_password:
#db_name:
#db_charset: AL32UTF8
#
#db_query_single: >
#  SELECT
#    ID, CODE, PARENT, LIBELLE_COURT,
#    TO_CHAR(
#          CAST (DATE_MODIFICATION AS timestamp) AT TIME ZONE 'UTC',
#          'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"'
#      ) UPDATED_AT,
#      TYPE_RECHERCHE, CODE_RECHERCHE, LIBELLE_LONG, TELEPHONE, SITE_URL, TYPE,
#      RNSR, ADRESSE_POSTALE
#  FROM organizations WHERE ID = :p1 ORDER BY UPDATED_AT DESC FETCH FIRST ROW ONLY
#
#db_query_all: >
#  SELECT
#    ID, CODE, PARENT, LIBELLE_COURT,
#    TO_CHAR(
#          CAST (DATE_MODIFICATION AS timestamp) AT TIME ZONE 'UTC',
#          'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"'
#      ) UPDATED_AT,
#      TYPE_RECHERCHE, CODE_RECHERCHE, LIBELLE_LONG, TELEPHONE, SITE_URL, TYPE,
#      RNSR, ADRESSE_POSTALE
#  FROM organizations
#  ORDER BY NIVEAU, CODE
+44 −44
Original line number Diff line number Diff line

# On laisse les URLs même si elles ne sont pas utilisées
url_persons: 'https://rest.service.tdl/api/persons'
url_person: 'https://rest.service.tld/api/person/%s'

# Accès spécifique
access_strategy:  Oscar\Connector\Access\ConnectorAccessOracleDB

# Correspondance des rôles entre le connecteur et oscar
roles_correspondance:
  D30: Directeur de composante
  R00: Responsable
  R40: Directeur de composante
  P50: Directeur de composante
  T87: Informaticien
  T98: Gestionnaire de laboratoire
  A009: Gestion financière
  Gestionnaire financière des contrats de recherche: Gestion financière
  Gestionnaire financiere des contrats de recherche: Gestion financière
  Directrice: Directeur
  Directeur adjoint: Directeur
  Directrice adjointe: Directeur
  Responsable administrative: Responsable administratif


db_host:
db_port:
db_user:
db_password:
db_name:
db_charset: AL32UTF8

db_query_single: >
  SELECT REMOTE_ID, PRENOM, NOM, CIVILITE, LOGIN, EMAIL, LANGAGE, STATUT,
    AFFECTATION, INM, TELEPHONE, DATE_EXPIRATION, ADRESSE_PROFESSIONNELLE,
    ROLES
  FROM user
  WHERE REMOTE_ID = :p1
  FETCH FIRST ROW ONLY

db_query_all: >
  SELECT REMOTE_ID, PRENOM, NOM, CIVILITE, LOGIN, EMAIL, LANGAGE, STATUT,
      AFFECTATION, INM, TELEPHONE, DATE_EXPIRATION, ADRESSE_PROFESSIONNELLE,
      ROLES, FROM distinct_user ORDER BY REMOTE_ID
#
## On laisse les URLs même si elles ne sont pas utilisées
#url_persons: 'https://rest.service.tdl/api/persons'
#url_person: 'https://rest.service.tld/api/person/%s'
#
## Accès spécifique
#access_strategy:  Oscar\Connector\Access\ConnectorAccessOracleDB
#
## Correspondance des rôles entre le connecteur et oscar
#roles_correspondance:
#  D30: Directeur de composante
#  R00: Responsable
#  R40: Directeur de composante
#  P50: Directeur de composante
#  T87: Informaticien
#  T98: Gestionnaire de laboratoire
#  A009: Gestion financière
#  Gestionnaire financière des contrats de recherche: Gestion financière
#  Gestionnaire financiere des contrats de recherche: Gestion financière
#  Directrice: Directeur
#  Directeur adjoint: Directeur
#  Directrice adjointe: Directeur
#  Responsable administrative: Responsable administratif
#
#
#db_host:
#db_port:
#db_user:
#db_password:
#db_name:
#db_charset: AL32UTF8
#
#db_query_single: >
#  SELECT REMOTE_ID, PRENOM, NOM, CIVILITE, LOGIN, EMAIL, LANGAGE, STATUT,
#    AFFECTATION, INM, TELEPHONE, DATE_EXPIRATION, ADRESSE_PROFESSIONNELLE,
#    ROLES
#  FROM user
#  WHERE REMOTE_ID = :p1
#  FETCH FIRST ROW ONLY
#
#db_query_all: >
#  SELECT REMOTE_ID, PRENOM, NOM, CIVILITE, LOGIN, EMAIL, LANGAGE, STATUT,
#      AFFECTATION, INM, TELEPHONE, DATE_EXPIRATION, ADRESSE_PROFESSIONNELLE,
#      ROLES, FROM distinct_user ORDER BY REMOTE_ID

doc/install-first.md

0 → 100644
+287 −0
Original line number Diff line number Diff line
# Installation initiale (sans Docker)

Ce document décrit une installation OSCAR sur un serveur Linux, sans Docker, avec les services sur la même machine :

- Apache + PHP
- Elasticsearch
- Gearman + `oscar-worker`

Pour la base de données :

- cas recommandé : PostgreSQL distant ;
- cas alternatif : PostgreSQL local (note en section dédiée).

Le guide est aligné sur les besoins visibles dans `docker/compose.prod.yml` et `oscar-update.sh`.

## 1. Prérequis

Exemple de base : Debian 12.

Versions minimales recommandées :

- PHP `>= 8.2`
- Composer `2.2.x`
- Node.js `>= 22` + Yarn (build UI)
- PostgreSQL client

Paquets système (à adapter à votre distribution) :

```bash
apt update
apt install -y \
  git curl wget unzip \
  apache2 libapache2-mod-fcgid \
  php8.2 php8.2-fpm php8.2-cli \
  php8.2-bcmath php8.2-bz2 php8.2-curl php8.2-dom php8.2-gd \
  php8.2-intl php8.2-ldap php8.2-mbstring php8.2-pgsql php8.2-xml \
  php8.2-zip php8.2-sockets php8.2-gearman \
  gearman-job-server \
  elasticsearch \
  postgresql-client \
  wkhtmltopdf fonts-open-sans
```

## 2. Récupérer le projet

```bash
mkdir -p /var/OscarApp
cd /var/OscarApp
git clone https://git.unicaen.fr/open-source/oscar.git
cd oscar
```

## 3. Installer Composer 2.2.x et Node 22

`oscar-update.sh` vérifie explicitement Composer `2.2.x` et Node `>= 22`.

```bash
composer --version
node -v
yarn -v
```

Si besoin, installer Composer 2.2.24 :

```bash
wget https://getcomposer.org/download/2.2.24/composer.phar
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
```

## 4. Initialiser la configuration applicative

Copier les fichiers de configuration :

```bash
cp docker/.env.prod.dist .env

cp config/autoload/local.docker.php.dist config/autoload/local.php
cp config/autoload/oscar.yml.dist config/autoload/oscar.yml
cp config/autoload/unicaen-app.local.php.docker-dist config/autoload/unicaen-app.local.php
cp config/autoload/unicaen-auth.local.php.docker-dist config/autoload/unicaen-auth.local.php
cp config/autoload/unicaen-signature.local.php.dist config/autoload/unicaen-signature.local.php

cp config/connectors/person_db.yml.dist config/connectors/person_db.yml
cp config/connectors/organization_db.yml.dist config/connectors/organization_db.yml
```

Créer les fichiers éditables :

```bash
touch config/autoload/oscar-editable.yml
touch config/autoload/oscar.text.custom.json
```

## 5. Préparer les dossiers de données et permissions

Exemple de stockage hors code :

```bash
mkdir -p /var/OscarData/{documents/{activity,public,request,pcru,signature},log/signature_exchange,tmp,DoctrineORMModule/Proxy,templates}
mkdir -p data/DoctrineORMModule/Proxy logs/signature_exchange

chown -R www-data:www-data /var/OscarData data/DoctrineORMModule logs config/autoload/oscar-editable.yml config/autoload/oscar.text.custom.json
chmod -R 775 /var/OscarData data/DoctrineORMModule logs
chmod 664 config/autoload/oscar-editable.yml config/autoload/oscar.text.custom.json
```

Important : adapter `config/autoload/oscar.yml` (chemins `paths` et templates) pour pointer vers vos chemins réels (ex: `/var/OscarData/...`) au lieu des chemins Docker (`/var/application`, `/var/documents`).

## 6. Configurer la base PostgreSQL

### Cas recommandé : PostgreSQL distant

Dans `.env`, renseigner :

- `POSGRESQL=<hote-bdd>`
- `POSGRESQL_PORT=5432`
- `POSGRESQL_USER=<user>`
- `POSGRESQL_PASS=<mot_de_passe>`
- `POSGRESQL_BASE=<base>`

Charger le schéma initial :

```bash
psql -h <hote-bdd> -U <user> -d <base> -f install/oscar-install.sql
```

### Note : PostgreSQL local (sur le serveur OSCAR)

```bash
apt install -y postgresql postgresql-client
sudo -u postgres psql
```

Dans `psql` :

```sql
CREATE USER oscar WITH PASSWORD 'change_me';
CREATE DATABASE oscar OWNER oscar;
GRANT ALL PRIVILEGES ON DATABASE oscar TO oscar;
```

Puis dans `.env` :

- `POSGRESQL=localhost`
- `POSGRESQL_PORT=5432`
- `POSGRESQL_USER=oscar`
- `POSGRESQL_PASS=change_me`
- `POSGRESQL_BASE=oscar`

## 7. Configurer Elasticsearch (local)

Alignement avec Docker prod :

- mode single-node ;
- sécurité xpack désactivée ;
- mémoire JVM (ex: `1g`).

Configurer `/etc/elasticsearch/elasticsearch.yml`, par exemple :

```yaml
discovery.type: single-node
xpack.security.enabled: false
```

Et dans `/etc/elasticsearch/jvm.options.d/oscar.options` :

```text
-Xms1g
-Xmx1g
```

Puis :

```bash
systemctl enable elasticsearch
systemctl restart elasticsearch
curl -s http://localhost:9200
```

Dans `.env` :

- `ELASTICSEARCH_HOST=localhost`
- `ELASTICSEARCH_PORT=9200`

## 8. Configurer Gearman + worker OSCAR

```bash
systemctl enable gearman-job-server
systemctl restart gearman-job-server
```

Dans `.env` :

- `GEARMAN_HOST=localhost`
- `GEARMAN_PORT=4730`

Créer le service `oscar-worker` :

```bash
cp install/oscarworker.dist.service config/oscarworker.service
```

Modifier `ExecStart` avec le chemin réel, par exemple :

```ini
ExecStart=/usr/bin/php /var/OscarApp/oscar/bin/oscar-worker.php
```

Installer le service systemd :

```bash
ln -sf /var/OscarApp/oscar/config/oscarworker.service /etc/systemd/system/oscarworker.service
systemctl daemon-reload
systemctl enable oscarworker.service
systemctl restart oscarworker.service
```

## 9. Apache + PHP-FPM

Activer les modules Apache utiles :

```bash
a2enmod proxy_fcgi setenvif rewrite headers
a2enconf php8.2-fpm
```

Exemple de VirtualHost `/etc/apache2/sites-available/oscar.conf` :

```apache
<VirtualHost *:80>
    ServerName oscar.example.org
    DocumentRoot /var/OscarApp/oscar/public

    <Directory /var/OscarApp/oscar/public>
        AllowOverride All
        Require all granted
        DirectoryIndex index.php
        <FilesMatch \.php$>
            SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost"
        </FilesMatch>
    </Directory>
</VirtualHost>
```

Activation :

```bash
a2dissite 000-default
a2ensite oscar
systemctl restart php8.2-fpm
systemctl restart apache2
```

## 10. Installation applicative et initialisation

Depuis la racine du projet :

```bash
composer install --no-interaction
./oscar-update.sh
```

`oscar-update.sh` exécute notamment :

- `composer install`
- mise à jour schéma Doctrine
- `check:privileges`
- build UI (Node/Yarn)

## 11. Vérifications

```bash
php bin/oscar.php check:config
systemctl status elasticsearch
systemctl status gearman-job-server
systemctl status oscarworker.service
```

Accès web : `http://<votre-domaine-ou-ip>/`

## 12. Références utiles

- [Configuration Gearman](./configuration/config-gearman.md)
- [Installation Elasticsearch](./install-elasticsearch.md)
- [Configuration Mailer](./configuration/config-mailer.md)
- [Configuration Elasticsearch dans Oscar](./configuration/config-elasticsearch.md)
+19 −1
Original line number Diff line number Diff line
@@ -77,9 +77,27 @@ Vous avez un oscar fonctionnel à cette étape
- En local : http://localhost:8888
- Avec Proxypass : http://VOTRE-NOM-DE-DOMAINE.EXT

## Mode développeur (Xdebug / PHPStorm)

Pour activer Xdebug en développement :

```bash
cp docker/.env.dev.dist .env
cp docker/compose.dev.yml ./compose.yml
. docker/compose-init.sh
docker compose up -d --build
```

Le fichier `docker/app_99-debug.ini` est copié vers `${VOLUMES_CONFIG}/php/99-debug.ini` par `compose-init.sh`, puis monté dans les conteneurs `connor-php` et `connor-worker`.

Réglages PHPStorm recommandés :

- Port debug : `9003`
- Mappage de chemin : le projet local vers `/var/application`
- Nom de serveur (facultatif) : `oscar`

## Etape 6 : Données de démonstration

```bash
. docker/docker-sync-demos-datas.sh
```
+1 −2
Original line number Diff line number Diff line
@@ -7,7 +7,6 @@ html_errors = On
error_log = /var/log/php/oscar-error.log

[xdebug]
zend_extension=xdebug

; Mode debug et trace
xdebug.mode=debug
@@ -17,7 +16,7 @@ xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.idekey=PHPSTORM
xdebug.discover_client_host=true
xdebug.discover_client_host=0

; Afficher les logs (optionnel)
xdebug.log=/tmp/xdebug.log
Loading