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