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