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!