Guide d’installation
RHEL / Oracle Linux + Nginx
Déploiement pas à pas sur RHEL 8/9, Oracle Linux, Rocky ou AlmaLinux,
avec Nginx et PHP-FPM 8.2, à partir du paquet de l’application.
Prérequis
| Distribution | RHEL / Oracle Linux 8.x ou 9.x (Rocky, AlmaLinux compatibles) |
| Serveur web | Nginx + PHP-FPM 8.2 |
| Oracle Instant Client | 19c — paquet léger “Basic”, 64-bit (RPM) |
| Le paquet de l’application | archive sw_pkg_*.zip (voir étape 4) |
1. Installer Nginx, PHP-FPM et les extensions
# Activer PHP 8.2 (RHEL 9 / OL 9)
sudo dnf module reset php
sudo dnf module enable php:8.2
# (RHEL 8 : depot Remi, module php:remi-8.2)
sudo dnf install -y nginx php-fpm php-cli php-common \
php-mbstring php-gd php-ldap php-zip php-sodium php-process php-xml
sqlite3 est fourni par php-common. Ne pas installer php-pdo : l’application utilise l’extension native SQLite3.
2. Installer le client léger Oracle et l’extension OCI8
sudo dnf install -y oracle-instantclient-basic oracle-instantclient-devel
echo "/usr/lib/oracle/19.25/client64/lib" | \
sudo tee /etc/ld.so.conf.d/oracle-instantclient.conf
sudo ldconfig
sudo dnf install -y php-devel php-pear gcc make
sudo pecl install oci8-3.3.0
# prompt : instantclient,/usr/lib/oracle/19.25/client64/lib
echo "extension=oci8.so" | sudo tee /etc/php.d/30-oci8.ini
3. Configurer PHP-FPM (pool nginx)
Éditer /etc/php-fpm.d/www.conf pour tourner sous l’utilisateur nginx et exposer l’environnement Oracle :
user = nginx
group = nginx
listen = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
env[LD_LIBRARY_PATH] = /usr/lib/oracle/19.25/client64/lib
env[ORACLE_HOME] = /usr/lib/oracle/19.25/client64
env[TNS_ADMIN] = /usr/lib/oracle/19.25/client64/network/admin
Dans /etc/php.ini : date.timezone, default_charset = "UTF-8", upload_max_filesize = 64M, post_max_size = 72M, memory_limit = 256M.
4. Récupérer et déployer le paquet
- Télécharger le paquet depuis la page Téléchargement (archive CDN ou Portable).
- Transférer puis extraire l’archive :
scp sw_pkg_*_portable.zip user@serveur:/tmp/
sudo mkdir -p /opt/app
sudo unzip /tmp/sw_pkg_*_portable.zip -d /opt/app
Racine web : /opt/app/mon-appli. Base securite/database.sqlite minimale (sans secret) ; master.key et schéma complet créés au premier accès. Compte par défaut : admin / admin123 (à changer immédiatement).
5. Configurer Nginx (routeur)
Le bloc try_files remplace le .htaccess Apache. Créer /etc/nginx/conf.d/app.conf :
server {
listen 80;
server_name mon-appli.example.com;
root /opt/app/mon-appli;
index index.php;
# Routeur principal : sinon -> index.php
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Front-controller du module Oracle
location /oracle/ {
try_files $uri $uri/ /oracle/index.php?$query_string;
}
# Execution PHP via PHP-FPM
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# Bloquer les fichiers caches (.htaccess, .git...)
location ~ /\. { deny all; }
client_max_body_size 72M;
}
Les dossiers
lib/, securite/ et log/ sont hors de root (mon-appli/) : Nginx ne les sert jamais.
6. Permissions et SELinux
sudo chown -R nginx:nginx /opt/app/securite /opt/app/log
sudo chmod 700 /opt/app/securite
sudo semanage fcontext -a -t httpd_sys_content_t "/opt/app/mon-appli(/.*)?"
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/opt/app/securite(/.*)?"
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/opt/app/log(/.*)?"
sudo restorecon -Rv /opt/app
# Autoriser les sorties reseau (LDAP, Oracle, OAuth)
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_can_network_connect_db 1
7. Démarrer, ouvrir le pare-feu et vérifier
sudo nginx -t
sudo systemctl enable --now php-fpm nginx
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
php -m | grep -E 'oci8|sqlite3|mbstring|ldap|sodium'
curl -I http://localhost/ # attendu : 302 vers la page de connexion
C’est prêt. La base SQLite et la clé de chiffrement sont créées au premier accès. Connectez-vous, changez le compte par défaut, puis configurez vos bases Oracle et l’authentification.
