Configuration et modules apache
Comment configurer Apache pour GABOX ?
Pour faire fonctionner le framework GABOX, il faut définir une configuration apache pour chaque environnement (front et back office)
Il sera bien entendu possible de faire fonctionner uniquement l'un des deux environnements selon les besoins.
Notez que ce qui suit ne prend pas en compte toutes les optimisations possibles ou les sécurisations côté serveur et n'affiche que la configuration minimale pour que le framework fonctionne
Back office
<VirtualHost *:80>
ServerName admin.mon-site.com
# env correspond à votre environnement, généralement : dev, preprod ou prod
setEnv env dev
# usr correspond à votre répertoire du projet concerné que l'on retrouve dans le DocumentRoot
setEnv usr mon-site
# back permet de définir que l'on est en back office donc ici 1
SetEnv back 1
# front permet de définir que l'on est en front office donc ici 0
SetEnv front 0
# prod permet de définir si l'on est en mode production ou pas (utilisé principalement pour la remontée d'erreurs applicatives)
SetEnv prod 0
DocumentRoot /var/www/chemin/vers/mon/site/usr/mon-site/admin/
php_admin_value upload_tmp_dir "/var/www/chemin/vers/mon/site/usr/mon-site/var/upload"
php_admin_value auto_prepend_file "/var/www/chemin/vers/mon/site/include/autoprepend.php"
AddDefaultCharset utf-8
php_value default_charset utf-8
<directory /var/www/chemin/vers/mon/site/usr/mon-site/admin/>
Options -Indexes
</directory>
</VirtualHost>
Front office
Les URLs de front office doivent impérativement comporter le paramètre id_site
Deux possibilités :
- Utiliser un alias d'URL et spécifier l'id_site en premier élément d'url, par exemple 1.front.mon-site.com (utile pour les plateformes multi-sites en préproduction)
- Définir directement dans la configuration apache cet id_site via SetEnv (plutôt utilisé en production avec les URLs finales)
Dans l'exemple de configuration ci-dessus, nous utiliserons la première possibilité
<VirtualHost *:80>
ServerAlias *.front.mon-site.com *.alias.mon-site.com mon-adresse-finale.com
SetEnvIf Host ^([^.]*).* id_site=$1
# Cette ligne permet de définir la langue en cours dans le cas d'un site multilangues
SetEnvIf Request_URI ^/(..)/(.*)?$ lang=$1
SetEnv front 1
SetEnv usr mon-site
setEnv env dev
SetEnv prod 0
DirectoryIndex index.php
DocumentRoot /var/www/chemin/vers/mon/site/usr/mon-site/www/
php_admin_value upload_tmp_dir "/var/www/chemin/vers/mon/site/usr/mon-site/var/upload"
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !\.(?:png|shtml|gif|jpeg|jpg|webp|pdf|js|ico|txt|css|rar|zip|png|tar\.gz|woff|woff2|map|json|eto|ttf|svg|mp4|eot|docx|xml|PNG|GIF|JPEG|JPG|WEBP|PDF|JS|ICO|TXT|CSS|RAR|ZIP|PNG|TAR\.GZ|WOFF|WOFF2|MAP|JSON|ETO|TTF|SVG|MP4|EOT|DOCX|XML)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [QSA]
php_admin_value auto_prepend_file "/var/www/chemin/vers/mon/site/include/autoprepend.php"
php_admin_value auto_append_file "/var/www/chemin/vers/mon/site/include/autoappend.php"
AddDefaultCharset utf-8
php_value default_charset utf-8
<Directory "/var/www/chemin/vers/mon/site/usr/mon-site/www/">
Options MultiViews FollowSymLinks Includes
AllowOverride FileInfo
Order allow,deny
Allow from all
</VirtualHost>
Modules Apache nécessaires
Les modules suivants sont à minima nécessaires pour faire fonctionner une plateforme sous GABOX :
- alias
- env
- php5
- rewrite
- setenvif