Skip to content
Snippets Groups Projects
Commit 2513b34e authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Passage à PHP 7.4

parent 755254a6
No related branches found
No related tags found
No related merge requests found
...@@ -3,9 +3,11 @@ Journal des modifications ...@@ -3,9 +3,11 @@ Journal des modifications
2.1.0 2.1.0
----- -----
- Service 'thèse' : inclusion du code SISE de la discipline. - Service 'thèse' : ajout du code SISE de la discipline.
- Service 'individu' : inclusion du code pays de nationalité. - Service 'individu' : ajout du code pays de nationalité.
- Correction mineure de vues (Oracle ou Physalis). - 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 2.0.0
----- -----
......
...@@ -34,7 +34,7 @@ traduit en bash.) ...@@ -34,7 +34,7 @@ traduit en bash.)
Lancez le script `Dockerfile.sh` : Lancez le script `Dockerfile.sh` :
```bash ```bash
cd /app 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, 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` : ...@@ -46,11 +46,11 @@ créés par le script `Dockerfile.sh` :
- ${PHP_CONF_DIR}/fpm/conf.d/90-app.ini - ${PHP_CONF_DIR}/fpm/conf.d/90-app.ini
NB: Vérifiez dans le script `Dockerfile.sh` que vous venez de lancer mais normalement 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 ### 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. par exemple.
Placez-vous dans le répertoire des sources du web service puis lancez les commandes git suivantes pour obtenir la liste des 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 : ...@@ -59,10 +59,10 @@ versions officielles du WS :
git fetch && git fetch --tags && git tag 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 : sur votre serveur :
```bash ```bash
git checkout --force 2.0.0 && bash install.sh git checkout --force 2.1.0 && bash install.sh
``` ```
### Fichier "users.htpasswd" ### Fichier "users.htpasswd"
...@@ -105,7 +105,7 @@ cp -n database.local.php.dist database.local.php ...@@ -105,7 +105,7 @@ cp -n database.local.php.dist database.local.php
### Configuration PHP pour le WS ### Configuration PHP pour le WS
Si vous êtes sur un serveur de PROD, corrigez les lignes suivantes du fichier de config PHP 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 display_errors = Off
... ...
......
...@@ -9,20 +9,22 @@ ...@@ -9,20 +9,22 @@
} }
], ],
"config": { "config": {
"process-timeout": 5000 "process-timeout": 5000,
"allow-plugins": {
"zendframework/zend-component-installer": true,
"zfcampus/zf-asset-manager": true
}
}, },
"require": { "require": {
"php": "^7.3.0", "php": "^7.4.0",
"zendframework/zend-component-installer": "^1.0 || ^0.6 || ^1.0.0-dev@dev",
"zfcampus/zf-apigility": "^1.3", "zfcampus/zf-apigility": "^1.3",
"zfcampus/zf-apigility-documentation": "^1.2.3", "zfcampus/zf-apigility-documentation": "^1.2",
"zfcampus/zf-asset-manager": "^1.0",
"zfcampus/zf-composer-autoloading": "^1.0", "zfcampus/zf-composer-autoloading": "^1.0",
"zfcampus/zf-development-mode": "^3.0", "zfcampus/zf-development-mode": "^3.0",
"zfcampus/zf-apigility-doctrine": "^2.1", "zfcampus/zf-apigility-doctrine": "^2.1",
"doctrine/doctrine-orm-module": "^1.1", "doctrine/doctrine-orm-module": "^1.1",
"zendframework/zend-console": "^2.7", "zendframework/zend-console": "^2.7",
"unicaen/oracle": "^1.2", "unicaen/oracle": "^3.0",
"doctrine/common": "^2.7", "doctrine/common": "^2.7",
"zendframework/zend-mvc-console": "^1.2", "zendframework/zend-mvc-console": "^1.2",
"zendframework/zend-log": "^2.11", "zendframework/zend-log": "^2.11",
...@@ -31,7 +33,7 @@ ...@@ -31,7 +33,7 @@
}, },
"require-dev": { "require-dev": {
"zendframework/zend-developer-tools": "^1.1", "zendframework/zend-developer-tools": "^1.1",
"zfcampus/zf-apigility-admin": "^1.5.9", "zfcampus/zf-apigility-admin": "^1.5",
"zfcampus/zf-deploy": "^1.2", "zfcampus/zf-deploy": "^1.2",
"squizlabs/php_codesniffer": "^3.3", "squizlabs/php_codesniffer": "^3.3",
"phpunit/phpunit": "^6.5", "phpunit/phpunit": "^6.5",
......
This diff is collapsed.
Version 2.1.0 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 Base de données
--------------- ---------------
### Apogée ET Physalis ### Apogée & Physalis
```sql ```sql
alter table SYGAL_INDIVIDU_V2 add COD_PAY_NAT varchar2(5) ; 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) ; ...@@ -14,6 +103,9 @@ alter table SYGAL_THESE_V2 add COD_DIS varchar2(10) ;
### Apogée ### Apogée
```sql ```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 create or replace view V_SYGAL_STRUCTURE_V2 as
select select
edo.cod_nat_edo as source_code, --id unique edo.cod_nat_edo as source_code, --id unique
...@@ -60,7 +152,7 @@ select ...@@ -60,7 +152,7 @@ select
'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure 'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
etb.cod_etb as id, -- Id unique etb.cod_etb as id, -- Id unique
null as sigle, -- 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.cod_pay as code_pays, -- Code pays
pay.lib_pay as libelle_pays -- Libelle pays pay.lib_pay as libelle_pays -- Libelle pays
from etablissement etb from etablissement etb
...@@ -133,12 +225,15 @@ from etablissement etb ...@@ -133,12 +225,15 @@ from etablissement etb
ths.cod_ths_trv = '1' -- travaux exclus ths.cod_ths_trv = '1' -- travaux exclus
left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
where per.tem_ext_int_per = 'X' where per.tem_ext_int_per = 'X'
/ ;
``` ```
### Physalis ### Physalis
```sql ```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 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 SELECT
distinct( i.pers_id) as ID, distinct( i.pers_id) as ID,
...@@ -290,12 +385,13 @@ WHERE-- T.ID_THESE = 13 -- a modifier ...@@ -290,12 +385,13 @@ WHERE-- T.ID_THESE = 13 -- a modifier
Sources PHP 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 : puis lancez les commandes suivantes pour installer la nouvelle version :
```bash ```bash
git fetch && git fetch --tags && git checkout --force 2.1.0 && bash install.sh 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 : Rechargez le service PHP-FPM :
- php7.0-fpm : `service php7.0-fpm reload` ```bash
- apache2-mod-php7.0 : `service apache2 reload` service php{PHP_VERSION}-fpm reload
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment