Guide d’installation
Ubuntu / Debian + Nginx
Déploiement pas à pas sur Ubuntu 22.04/24.04 (ou Debian) avec Nginx et
PHP-FPM 8.2, à partir du paquet de l’application.
Prérequis
| Distribution | Ubuntu 22.04 / 24.04 LTS (Debian 12 compatible) |
| Serveur web | Nginx + PHP-FPM 8.2 |
| Oracle Instant Client | 19c — paquet léger “Basic” (.zip) + SDK, 64-bit |
| Le paquet de l’application | archive sw_pkg_*.zip (voir étape 4) |
1. Installer Nginx, PHP-FPM et les extensions
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:ondrej/php # PHP 8.2 si non fourni
sudo apt update
sudo apt install -y nginx php8.2-fpm php8.2-cli \
php8.2-mbstring php8.2-gd php8.2-ldap php8.2-zip \
php8.2-curl php8.2-xml php8.2-intl php8.2-sqlite3
php8.2-sqlite3 fournit l’extension native SQLite3 ; sodium est inclus dans PHP 8.2. Pas de PDO requis.
2. Installer le client léger Oracle et l’extension OCI8
Télécharger les ZIP Instant Client Basic et SDK 19c (Linux x64) depuis oracle.com, puis :
sudo apt install -y libaio1 unzip
sudo mkdir -p /opt/oracle
sudo unzip instantclient-basic-linux.x64-19.25*.zip -d /opt/oracle
sudo unzip instantclient-sdk-linux.x64-19.25*.zip -d /opt/oracle
# -> /opt/oracle/instantclient_19_25
echo "/opt/oracle/instantclient_19_25" | \
sudo tee /etc/ld.so.conf.d/oracle-instantclient.conf
sudo ldconfig
sudo apt install -y php8.2-dev php-pear build-essential
sudo pecl install oci8-3.3.0
# prompt : instantclient,/opt/oracle/instantclient_19_25
echo "extension=oci8.so" | sudo tee /etc/php/8.2/mods-available/oci8.ini
sudo phpenmod oci8
3. Configurer PHP-FPM et l’environnement Oracle
Dans /etc/php/8.2/fpm/php.ini : date.timezone, default_charset = "UTF-8", upload_max_filesize = 64M, post_max_size = 72M, memory_limit = 256M.
Pour qu’OCI8 trouve les librairies Oracle sous PHP-FPM, ajouter dans /etc/php/8.2/fpm/pool.d/www.conf :
env[LD_LIBRARY_PATH] = /opt/oracle/instantclient_19_25
Le pool tourne par défaut sous www-data et écoute sur /run/php/php8.2-fpm.sock.
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/sites-available/app :
server {
listen 80;
server_name mon-appli.example.com;
root /opt/app/mon-appli;
index 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;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
location ~ /\. { deny all; }
client_max_body_size 72M;
}
sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/app
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
lib/, securite/ et log/ sont hors de root : Nginx ne les sert jamais.
6. Permissions
# PHP-FPM tourne sous www-data : acces ecriture aux dossiers inscriptibles
sudo chown -R www-data:www-data /opt/app/securite /opt/app/log
sudo chmod 700 /opt/app/securite
7. Démarrer, ouvrir le pare-feu et vérifier
sudo systemctl restart php8.2-fpm nginx
sudo ufw allow 'Nginx HTTP'
php -m | grep -E 'oci8|sqlite3|mbstring|ldap|sodium'
php -r "echo oci_client_version().PHP_EOL;"
curl -I http://localhost/ # attendu : 302 vers la page de connexion
