Pour chaque projet géré par Gabox, il faut créer une base de données.
Le scripts d'installation crée automatiquement une base pour le projet spécifié, mais vous pourrez par la suite en définir une seconde pour un autre projet.
Nous prenons comme base l'installation sous Apache dans le dossier /var/www.
sudo mkdir -p /var/www/monprojet
cd /var/www/monprojet
sudo git clone https://gitlab.com/n-pestana/gabox-install-script.git
sudo sh gabox-install-script/install.sh -d nomBdd -u userBdd -n nomprojet -w passwordBdd -a admin_email@gaboweb.net -p backofficePassword --install-demo
sudo sh gabox-install-script/install.sh -d nomBdd -u userBdd -n nomprojet -w passwordBdd -a admin_email@gaboweb.net -p backofficePassword
nomprojet est le nom du projet que l’on retrouvera sous le répertoire usr (usr/nomprojet/)
admin_email@gaboweb.net et backofficePassword serve à créer un compte administrateur pour le backoffice
Pour afficher les paramètres :
sh gabox-install-script/install.sh
Exemples :
--env définir l’environnement (dev/preprod/prod)
--force efface la base de données existante
L’utilisateur Apache (www-data en général) doit avoir les droits d’écriture sur le répertoire gabox/modules :
cd /var/www/nomprojet/gabox
sudo chgrp www-data modules
sudo chmod g+w modules
Chaque projet doit disposer de son propre git, pour garder la possibilité de mettre à jour indépendemment ce qui provient du git Gabox et du git de votre projet.
cd /var/www/dev/lebonmedia/usr/
sudo git clone https://gitlab.com/user/nomprojet.git nomprojet
sudo vi /etc/apache2/sites-available/nomprojet.conf
Copiez-collez la configuration pour le backoffice en adaptant avec vos données :
Ici le backoffice sera disponible à l’adresse : admin.nomprojet.localhost
nomprojet = répertoire du projet global
monsite = nom du projet géré par Gabox <=> sous-répertoire dans usr
<VirtualHost *:80>
ServerName admin.nomprojet.localhost
DocumentRoot /var/www/monprojet/gabox/admin-common/
SetEnv env dev
SetEnv usr monsite
SetEnv id_site 1 #doit correspondre à l'id du site dans la table gen_sites
SetEnv back 1
SetEnv front 0
php_admin_value auto_prepend_file "/var/www/monprojet/gabox/autoprepend.php"
php_admin_value auto_append_file "/var/www/monprojet/gabox/autoappend.php"
AddDefaultCharset utf-8
RewriteEngine On
RewriteRule ^/media/usr/([^/]*)/var/upload/data/(.*)$ http://monsite.localhost/media/$2 [P,L]
AliasMatch "^/modules/usr/([^/]*)/(.*)$" "/app/usr/$1/modules/$2"
<Directory /var/www/monprojet/gabox/admin-common/>
Options -Indexes
</Directory>
</VirtualHost>
Dans le même fichier, copiez-collez la configuration du front office :
<VirtualHost *:80>
ServerName monsite.localhost
DocumentRoot /var/www/monprojet/usr/monsite/www/
SetEnv env dev
SetEnv usr monsite
SetEnv id_site 1 #doit correspondre à l'id du site dans la table gen_sites
SetEnv back 0
SetEnv front 1
RewriteEngine On
SetEnvIf Request_URI ^/(..)/(.*)?$ lang=$1
php_admin_value upload_tmp_dir "/var/www/monprojet/usr/monsite/var/upload"
#pour eviter de faire la jonction entre backoffice générique et dossiers media de projet
RewriteRule ^/media/usr/([^/]*)/var/upload/data/(.*)$ /media/$2 [P,L]
RewriteRule ^(/../)dimg/(.*)$ img.php?limg=$1&pimg=$2 [P]
RewriteCond %{REQUEST_FILENAME} !\.(?:png|gif|jpeg|jpg|pdf|webp|js|ico|txt|css|rar|zip|png|tar\.gz|woff|json|eto|ttf|svg|mp4|eot|woff2|map|PNG|svg|webm)$
RewriteCond %{REQUEST_URI} !^/sitemap\.xml
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [QSA]
php_admin_value auto_prepend_file "/var/www/monprojet/gabox/autoprepend.php"
php_admin_value auto_append_file "/var/www/monprojet/gabox/autoappend.php"
AddDefaultCharset utf-8
<Directory "/var/www/monprojet/usr/monsite/www/">
Options MultiViews FollowSymLinks Indexes Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
AddType text/html .html
AddOutputFilter INCLUDES .html
</VirtualHost>
Activez le site, puis rechargez apache
sudo a2ensite nomprojet.conf
sudo service apache2 reload
Gabox dispose de ses modules natifs, ces derniers se situant dans le dossier modules
de ce dernier.
Chaque projet dans le dossier usr
peut également définir ses propres modules dans son répertoire modules
dédié. Ces modules se trouvent donc en dehors du DocumentRoot de Gabox.
Pour que Gabox puisse y accéder une première solution a été mise en place : un lien symbolique est défini depuis le répertoire modules
de Gabox vers le dossier du module projet. Quoique toutjours fonctionnelle, cette solution n'est maintenant plus conseillée.
La solution actuelle consiste en une directive supplémentaire dans la configuration Apache du backoffice :
AliasMatch "^/modules/usr/([^/]*)/(.*)$" "/app/usr/$1/modules/$2"
Cette dernière définit un pattern d'alias permettant de matcher une URL virtuelle contenant le nom du projet et le nom du module vers l'emplacement physique du module projet.
Par exemple
http://admin.nomprojet.localhost/modules/usr/monsite/monmodule/admin.php
ira chercher les fichiers dans
/app/usr/monsite/modules/monmodule/admin.php