Dans cette procédure sera présenté étape par étape comment créer un serveur Lamp (Linux, Apache, Mariadb, Php) avec PhpMyAdmin sur une machine Debian 11. Après avoir suivis cette procédure vous aurez votre propre serveur Lamp sur votre machine Debian.
Prérequis : une machine Debian 11
Si vous ne possédez pas encore de machine Debian 11 :
- Créer une machine virtuelle Debian 11 avec VirtualBox.
- Avoir un accès root sur la machine.
- Définir une adresse ip fixe.
Installation :
Mise à jour du système :
apt update && apt full-upgrade -y
Installation des services :
apt install apache2 mariadb-server mariadb-client php libapache2-mod-php php-cli php-mysql php-zip php-curl php-xml wget -y
Apache2 :
Après l’installation des paquets, le service apache2 est disponible depuis un navigateur Web :
http://[ServerIP]/
La page ci-dessous montre l’installation réussie :
Php :
Après l’installation des paquets php est disponible, pour vérifier que le service fonctionne il faudra créer un fichier php et le tester :
Créer le fichier php :
echo "<?php phpinfo(); ?>" > /var/www/html/test.php
Depuis un navigateur web se rendre sur :
http://[ServerIP]/test.php
Une page ressemblent à celle ci-dessous correspondra une installation réussis :
MariaDB :
Installation et configuration des accès à la base de données :
mysql_secure_installation
Enter current password for root (enter for none):
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Connexion avec l’utilisateur root à la base de données :
mysql -u root -p
Saisir votre mot de passe de l’utilisateur root de MariaDB
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 64
Server version: 10.5.11-MariaDB-1 Debian 11
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Création d’un utilisateur et attribution de droits sur la base :
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* to 'user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Si vous avez un soucis lors de l’installation de MariaDB avec un conteneur LXC vous pouvez voir ce post StackOverflow.
PhpMyAdmin :
Téléchargement de l’archive de PhpMyAdmin :
DATA="$(wget https://www.phpmyadmin.net/home_page/version.txt -q -O-)"
URL="$(echo $DATA | cut -d ' ' -f 3)"
VERSION="$(echo $DATA | cut -d ' ' -f 1)"
wget https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/phpMyAdmin-${VERSION}-all-languages.tar.gz
Extraction de l’archive :
tar xvf phpMyAdmin-${VERSION}-all-languages.tar.gz
Déplacer le dossier dans le répertoire : /usr/share/
mv phpMyAdmin-*/ /usr/share/phpmyadmin
Création d’un emplacement temporaire pour les fichiers PhpMyAdmin :
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin
Création d’un emplacement pour les fichier de configuration de PhpMyAdmin :
mkdir /etc/phpmyadmin/
Copie d’un fichier de configuration :
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
Edition du nouveau fichier de configuration et définir une phrase secrète :
Avec Nano ou Vim
nano /usr/share/phpmyadmin/config.inc.php
vim /usr/share/phpmyadmin/config.inc.php
$cfg['blowfish_secret'] = 'xxxxxxxxxxxxxxxx';
Configuration d’un emplacement temporaire :
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
Création d’un VirtualHost pour accèder à PhpMyAdmin avec Nano ou Vim :
nano /etc/apache2/conf-enabled/phpmyadmin.conf
Ou
vim /etc/apache2/conf-enabled/phpmyadmin.conf
Coller cette configuration :
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
<IfModule mod_php5.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
<IfModule mod_php.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
</Directory>
# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
Redémarrer le service Apache2 :
sudo systemctl restart apache2
Si vous avez un soucis avec Apache2 et que vous utilisez des conteneur LXC vous pouvez utilisez ce Post du forum Proxmox.
Accès à PhpMyAdmin :
http://[ServerIP]/phpmyadmin
Les identifiants / mots de passe sont les mêmes que dans Mariadb.
Après avoir suivi cette procédure, je vous conseille de créer des Virtualhost apache afin de limiter les accès a vos sites uniquement par des noms de domaines, ainsi que l’ajout d’un firewall tel que Ufw pour limiter les accès a vos services.