Un pense-bête pour installer Apache, MariaDB et PHP sur une distribution GNU/Linux Debian Buster, avec l'ajout d'adminer et quelques précisions pour un site Joomla!. L'objectif est d'avoir un VirtualHost pour le développement.

On suit la préco d'apache, un site, un virtual host.
<CheminSite> est le path (à priori local) où se trouvera le contenu du site. On veillera à ce qu'il ne se termine pas par un / (slash), et sera compris entre des " (guillemets) s'il contient des espaces.
NB : su - root, on respecte bien le tiret!


APACHE

Version : 2.4.38


Installation

  # apt install apache2 libapache2-mod-php apache2-doc 

Paramétrages virtualhost

  # vi /etc/apache2/sites-available/<NomduSite>.conf
<VirtualHost *:80>
	ServerName <SrvName>
	DocumentRoot /<CheminSite>

	<Directory /<CheminSite>>
		AllowOverride All
		require all granted
	</Directory>
</VirtualHost>

Au minimum requis par Apache, s'ajoute (uniquement) AllowOverride All pour permettre une configuration .htaccess spécifique au site. Pour une machine de dev, on pourra élargir les droits comme avec cet exemple:

<VirtualHost *:80>
	ServerName <SrvName>
	DocumentRoot /<CheminSite>

	<Directory /<CheminSite>
        Options Indexes FollowSymLinks Includes
        AllowOverride All
        Order allow,deny
        Allow from all
        require all granted
	</Directory>
</VirtualHost>

On passe ensuite à la configuration du Hosts de la machine:

  # vi /etc/hosts
  127.0.1.1   <SrvName>

Puis on active le tout:

  # a2ensite <NomduSite>

Droit Apache (www-data)

  # chown www-data.www-data /<CheminSite> -R

Avec la configuration par défaut, l'utilisateur et le groupe attendus par Apache est www-data. On peut creuser le sujet par ailleurs.


Modules pour Joomla! :

  # a2enmod rewrite
  # a2enmod headers

Aux modules requis par Joomla!, on ajoute ici ceux nécessaires pour utiliser les fonctions de redirection et de ré-écriture des URLs du CMS (3.9.x) : rewrite et headers.

  # systemctl reload apache2

Créer : /<CheminSite>/index.html pour faire un test.


MARIA DB

Version : 10.3


Installation

  # apt install mariadb-server
  # mysql_secure_installation

Redefine root password, remove anonymous users, disallow root login remotely, dropping test database and reload! On peut envisager des réponses ressemblant moins à celles qu'on fournirait pour une production.


Paramétrages

  # mysql -u root -p  // à noter que root@localhost peut se passer de -p avec MariaDB 10.3 default
  mariadb> CREATE USER '<DBUSER>'@localhost IDENTIFIED BY 'password';
  mariadb> CREATE DATABASE <DBNAME>;
  mariadb> GRANT ALL privileges ON <DBNAME>.* TO '<DBUSER>'@localhost;
  mariadb> FLUSH PRIVILEGES;

Un :

mariadb> SELECT User,Host FROM mysql.user;

permettra de vérifier la liste des utilisateurs existants. L'idée ici est une base et un user dédié.


Installation Adminer

  # apt install adminer
  # php /usr/share/adminer/compile.php
  # echo "Alias /adminer.php /usr/share/adminer/adminer-X.X.X.php" | tee /etc/apache2/conf-available/adminer.conf

X.X.X est la version d'adminer qu'on vient d'installer (à vérifier dans /usr/share/adminer/)

  # a2enconf adminer.conf
  # systemctl reload apache2

Tester : http://localhost/adminer.php


PHP

Version : 7.3


Installation

  # apt install php php-mysql

Pour test : modifier index.html en index.php avec <?php phpinfo(); ?>.


Paramétrages

Pour Joomla! on ajoutera notamment :

  # apt install php-mbstring php-xml php-zip

On part de l'hypothèse qu'en développement on veut peu de limitations dans les volumes de données possibles, ce paramétrage s'applique au serveur, donc à l'ensemble des sites hébergés :

  # vi /etc/php/7.3/apache2/php.ini
  file_uploads = On
  upload_max_filesize = 30M (minimum)
  max_execution_time = 300 (30 in prod!)
  memory_limit = 256M (128 minimum)
  post_max_size = 32M (30 in prod!)
  max_input_time = 60
  max_input_vars = 4440
  output_buffering = off (à voir selon scénario)

Voilà, l'essentiel est installé et paramétré pour fonctionner facilement!