Ubuntu / Debian + Nginx

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

  1. Télécharger le paquet depuis la page Téléchargement (archive CDN ou Portable).
  2. 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
Les dossiers 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
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.