Commit 2513b34e authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Passage à PHP 7.4

parent 755254a6
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -3,9 +3,11 @@ Journal des modifications

2.1.0
-----
- Service 'thèse' : inclusion du code SISE de la discipline.
- Service 'individu' : inclusion du code pays de nationalité.
- Correction mineure de vues (Oracle ou Physalis).
- Service 'thèse' : ajout du code SISE de la discipline.
- Service 'individu' : ajout du code pays de nationalité.
- Service 'structure' : correction d'un nvl(etb.lib_web_etb, etb.lib_etb)' oublié créant des doublons.
- Correction d'une vue pour Physalis.
- Passage à PHP 7.4.

2.0.0
-----
+6 −6
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ traduit en bash.)
Lancez le script `Dockerfile.sh` :
```bash
cd /app
bash Dockerfile.sh 7.0
bash Dockerfile.sh 7.4
```

Ensuite, vérifiez et ajustez si besoin sur votre serveur les fichiers de configs suivants,
@@ -46,11 +46,11 @@ créés par le script `Dockerfile.sh` :
- ${PHP_CONF_DIR}/fpm/conf.d/90-app.ini

NB: Vérifiez dans le script `Dockerfile.sh` que vous venez de lancer mais normalement 
`APACHE_CONF_DIR=/etc/apache2` et `PHP_CONF_DIR=/etc/php/7.0`.
`APACHE_CONF_DIR=/etc/apache2` et `PHP_CONF_DIR=/etc/php/7.4`.

### Installation d'une version précise du WS

Normalement, vous ne devez installer que les versions officielles du WS, c'est à dire les versions taguées, du genre `2.0.0`
Normalement, vous ne devez installer que les versions officielles du WS, c'est à dire les versions taguées, du genre `2.1.0`
par exemple.

Placez-vous dans le répertoire des sources du web service puis lancez les commandes git suivantes pour obtenir la liste des
@@ -59,10 +59,10 @@ versions officielles du WS :
git fetch && git fetch --tags && git tag
```

Si la version la plus récente est par exemple la `2.0.0`, utilisez les commandes suivantes pour "installer" cette version 
Si la version la plus récente est par exemple la `2.1.0`, utilisez les commandes suivantes pour "installer" cette version 
sur votre serveur :
```bash
git checkout --force 2.0.0 && bash install.sh
git checkout --force 2.1.0 && bash install.sh
```

### Fichier "users.htpasswd"
@@ -105,7 +105,7 @@ cp -n database.local.php.dist database.local.php
### Configuration PHP pour le WS

Si vous êtes sur un serveur de PROD, corrigez les lignes suivantes du fichier de config PHP 
`/etc/php/7.0/fpm/conf.d/90-app.ini` :
`/etc/php/7.4/fpm/conf.d/90-app.ini` :

    display_errors = Off
    ...
+9 −7
Original line number Diff line number Diff line
@@ -9,20 +9,22 @@
        }
    ],
    "config": {
        "process-timeout": 5000
        "process-timeout": 5000,
        "allow-plugins": {
            "zendframework/zend-component-installer": true,
            "zfcampus/zf-asset-manager": true
        }
    },
    "require": {
        "php": "^7.3.0",
        "zendframework/zend-component-installer": "^1.0 || ^0.6 || ^1.0.0-dev@dev",
        "php": "^7.4.0",
        "zfcampus/zf-apigility": "^1.3",
        "zfcampus/zf-apigility-documentation": "^1.2.3",
        "zfcampus/zf-asset-manager": "^1.0",
        "zfcampus/zf-apigility-documentation": "^1.2",
        "zfcampus/zf-composer-autoloading": "^1.0",
        "zfcampus/zf-development-mode": "^3.0",
        "zfcampus/zf-apigility-doctrine": "^2.1",
        "doctrine/doctrine-orm-module": "^1.1",
        "zendframework/zend-console": "^2.7",
        "unicaen/oracle": "^1.2",
        "unicaen/oracle": "^3.0",
        "doctrine/common": "^2.7",
        "zendframework/zend-mvc-console": "^1.2",
        "zendframework/zend-log": "^2.11",
@@ -31,7 +33,7 @@
    },
    "require-dev": {
        "zendframework/zend-developer-tools": "^1.1",
        "zfcampus/zf-apigility-admin": "^1.5.9",
        "zfcampus/zf-apigility-admin": "^1.5",
        "zfcampus/zf-deploy": "^1.2",
        "squizlabs/php_codesniffer": "^3.3",
        "phpunit/phpunit": "^6.5",
+675 −117

File changed.

Preview size limit exceeded, changes collapsed.

+103 −7
Original line number Diff line number Diff line
Version 2.1.0
=============

Serveur d'application
---------------------

Il faut passer en version 7.4 de PHP.

- Installation des modules PHP

```bash
export PHP_VERSION=7.4

apt-get install -y \
    php${PHP_VERSION} \
    php${PHP_VERSION}-bcmath \
    php${PHP_VERSION}-curl \
    php${PHP_VERSION}-dev \
    php${PHP_VERSION}-fpm \
    php${PHP_VERSION}-gd \
    php${PHP_VERSION}-gettext \
    php${PHP_VERSION}-iconv \
    php${PHP_VERSION}-imagick \
    php${PHP_VERSION}-intl \
    php${PHP_VERSION}-ldap \
    php${PHP_VERSION}-mbstring \
    php${PHP_VERSION}-memcached \
    php${PHP_VERSION}-mysql \
    php${PHP_VERSION}-opcache \
    php${PHP_VERSION}-pgsql \
    php${PHP_VERSION}-soap \
    php${PHP_VERSION}-xdebug \
    php${PHP_VERSION}-xml \
    php${PHP_VERSION}-zip \
    php${PHP_VERSION}-cli \
    php${PHP_VERSION}-common \
    php${PHP_VERSION}-json \
    php${PHP_VERSION}-opcache \
    php${PHP_VERSION}-readline && \
update-alternatives --set php /usr/bin/php${PHP_VERSION}

apt-get purge \
  php7.0-common \
  php7.1-common \
  php7.2-common \
  php7.3-common \
  php8.0-common \
  php8.1-common
```

- Mise à jour de la config Apache du site

```bash
nano /etc/apache2/sites-enabled/sygal-import-ws-ssl.conf
# (mettez à jour si besoin le chemin de la socket FPM, cf. balise `SetHandler`)

systemctl reload php${PHP_VERSION}-fpm
systemctl reload apache2
```

- Réinstallation du module OCI8

```bash
# Désinstallation
pecl uninstall oci8

# Obtention des ressources 'instantclient-*' (image Docker Unicaen) 
export UNICAEN_IMAGE_TMP_DIR=/tmp/docker-unicaen-image
git clone https://git.unicaen.fr/open-source/docker/unicaen-image.git ${UNICAEN_IMAGE_TMP_DIR}
cd ${UNICAEN_IMAGE_TMP_DIR}
cp resources/instantclient-basiclite-linux.x64-18.5.0.0.0dbru.zip /tmp/
cp resources/instantclient-sdk-linux.x64-18.5.0.0.0dbru.zip /tmp/
cp resources/instantclient-sqlplus-linux.x64-18.5.0.0.0dbru.zip /tmp/

# Installation
export OCI8_PACKAGE="oci8-2.2.0"
export PHP_CONF_DIR=/etc/php/${PHP_VERSION}
unzip -o /tmp/instantclient-basiclite-linux.x64-18.5.0.0.0dbru.zip -d /usr/local/ && \
unzip -o /tmp/instantclient-sdk-linux.x64-18.5.0.0.0dbru.zip -d /usr/local/ && \
unzip -o /tmp/instantclient-sqlplus-linux.x64-18.5.0.0.0dbru.zip -d /usr/local/ && \
ln -sf /usr/local/instantclient_18_5 /usr/local/instantclient && \
ln -sf /usr/local/instantclient/sqlplus /usr/local/bin/sqlplus && \
echo 'instantclient,/usr/local/instantclient' | pecl install ${OCI8_PACKAGE} && \
echo "extension=oci8.so" > ${PHP_CONF_DIR}/fpm/conf.d/30-php-oci8.ini && \
echo "extension=oci8.so" > ${PHP_CONF_DIR}/cli/conf.d/30-php-oci8.ini && \
echo "/usr/local/instantclient" > /etc/ld.so.conf.d/oracle-instantclient.conf && ldconfig

systemctl reload php${PHP_VERSION}-fpm
systemctl reload apache2
```


Base de données
---------------

### Apogée ET Physalis
### Apogée & Physalis

```sql
alter table SYGAL_INDIVIDU_V2 add COD_PAY_NAT varchar2(5) ;
@@ -14,6 +103,9 @@ alter table SYGAL_THESE_V2 add COD_DIS varchar2(10) ;
### Apogée

```sql
--
-- Structures : correction 'nvl(etb.lib_web_etb, etb.lib_etb)' oublié créant des doublons. 
--
create or replace view V_SYGAL_STRUCTURE_V2 as
select
    edo.cod_nat_edo as source_code, --id unique
@@ -60,7 +152,7 @@ select
    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
    etb.cod_etb as id,                    -- Id unique
    null as sigle,                        --
    etb.lib_etb as libelle,               -- Libelle
    nvl(etb.lib_web_etb, etb.lib_etb) as libelle, -- Libelle
    pay.cod_pay as code_pays,             -- Code pays
    pay.lib_pay as libelle_pays           -- Libelle pays
from etablissement etb
@@ -133,12 +225,15 @@ from etablissement etb
                                    ths.cod_ths_trv = '1' -- travaux exclus
         left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
where per.tem_ext_int_per = 'X'
/
;
```

### Physalis

```sql
--
-- Correction erreur de distinct().
--
CREATE or replace VIEW "API_SCOLARITE"."V_SYGAL_INDIVIDU_V2" ("ID", "SOURCE_CODE", "TYPE", "SOURCE_ID", "CIV", "LIB_NOM_PAT_IND", "LIB_NOM_USU_IND", "LIB_PR1_IND", "LIB_PR2_IND", "LIB_PR3_IND", "EMAIL", "DATE_NAI_IND", "LIB_NAT", "COD_PAY_NAT", "SUPANN_ID") AS
SELECT
            distinct( i.pers_id) as ID,
@@ -290,12 +385,13 @@ WHERE-- T.ID_THESE = 13 -- a modifier
Sources PHP
-----------

Sur le serveur, placez-vous dans le répertoire du web service (sans doute `/var/www/sygal-import-ws`) 
Sur le serveur d'application, placez-vous dans le répertoire du web service (sans doute `/var/www/sygal-import-ws`) 
puis lancez les commandes suivantes pour installer la nouvelle version :
```bash
git fetch && git fetch --tags && git checkout --force 2.1.0 && bash install.sh
```

Selon le moteur PHP que vous avez installé, rechargez le service, exemple :
  - php7.0-fpm         : `service php7.0-fpm reload`
  - apache2-mod-php7.0 : `service apache2 reload`
Rechargez le service PHP-FPM :
```bash
service php{PHP_VERSION}-fpm reload
```