Ubuntu / Debian + Apache

Guide d’installation

Ubuntu / Debian + Apache

Déploiement pas à pas sur Ubuntu 22.04/24.04 (ou Debian) avec Apache 2.4
et PHP 8.2, à partir du paquet de l’application.

Prérequis

Distribution Ubuntu 22.04 / 24.04 LTS (Debian 12 compatible)
Serveur web Apache 2.4 + module PHP 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 Apache, PHP 8.2 et les extensions

sudo apt update
sudo apt install -y software-properties-common
# PHP 8.2 sur Ubuntu (si non fourni par defaut)
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update

sudo apt install -y apache2 libapache2-mod-php8.2 \
    php8.2 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 le cœur de PHP 8.2. Ne pas installer de paquet PDO : l’application n’utilise pas PDO.

2. Installer le client léger Oracle et l’extension OCI8

Télécharger depuis oracle.com les ZIP Instant Client Basic et SDK 19c (Linux x64), 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

# Compiler OCI8 via PECL
sudo apt install -y php8.2-dev php-pear build-essential
sudo pecl install oci8-3.3.0
# Au prompt, repondre :
#   instantclient,/opt/oracle/instantclient_19_25

echo "extension=oci8.so" | sudo tee /etc/php/8.2/mods-available/oci8.ini
sudo phpenmod oci8

3. Réglages PHP et environnement Oracle

Dans /etc/php/8.2/apache2/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 Apache, ajouter dans /etc/apache2/envvars :

export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_25

4. Récupérer et déployer le paquet

  1. Télécharger le paquet depuis la page Téléchargement (archive CDN = librairies depuis Internet ; Portable = librairies embarquées, sans Internet).
  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

Arborescence : /opt/app/mon-appli (racine web), /opt/app/lib, /opt/app/docs et une base securite/database.sqlite minimale (sans secret). La clé securite/master.key et le schéma complet sont créés au premier accès. Compte par défaut : admin / admin123 (à changer immédiatement).

5. Configurer Apache

sudo a2enmod rewrite php8.2

# /etc/apache2/sites-available/app.conf
<VirtualHost *:80>
    ServerName mon-appli.example.com
    DocumentRoot /opt/app/mon-appli

    <Directory /opt/app/mon-appli>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
        DirectoryIndex index.php
    </Directory>

    <DirectoryMatch "^/opt/app/(securite|log|lib|docs)">
        Require all denied
    </DirectoryMatch>

    ErrorLog  ${APACHE_LOG_DIR}/app-error.log
    CustomLog ${APACHE_LOG_DIR}/app-access.log combined
</VirtualHost>
sudo a2ensite app
sudo a2dissite 000-default
sudo apache2ctl configtest

6. Permissions

# Apache 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 apache2
sudo ufw allow 'Apache'

# Verifier les extensions
php -m | grep -E 'oci8|sqlite3|mbstring|ldap|sodium'
php -r "echo oci_client_version().PHP_EOL;"

# Test HTTP (attendu : 302 vers la page de connexion)
curl -I http://localhost/
C’est prêt. La base SQLite et la clé de chiffrement sont créées au premier accès. Connectez-vous avec le compte par défaut, changez-le, puis configurez vos bases Oracle et l’authentification.