Accueil » Créer un serveur Lamp (Apache MariaDB PHP) + PhpMyAdmin Debian

Créer un serveur Lamp (Apache MariaDB PHP) + PhpMyAdmin Debian

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 :

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 :

Page d'accès à apache2.

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 :

Page de vérification du fonctionnement de php.

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
Image de la page d'accès PhpMyAdmin.
Page d’accès 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.

Susceptible de vous intéresser :