Aller au contenu

PhpMyAdmin - Installation manuelle sur Debian

L'installation de phpMyAdmin sur Debian est parfois... compliquée avec apt. Voir impossible ! Voici donc comment faire pour disposer de ce service de gestion de bases de données sur Debian, avec Apache2.

Source : https://aymeric-cucherousset.fr/installer-phpmyadmin-sur-debian-11/

Téléchargement de la dernière version 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éplacement des fichiers dans leur destination

mkdir /usr/share/phpmyadmin
mv phpMyAdmin-*/* /usr/share/phpmyadmin

Dossier pour les fichiers temporaires

Après avoir réalisé cette étape nous devons créer un répertoire pour les fichiers temporaires de PhpMyAdmin et attribuer l’utilisateur d’apache comme propriétaire de l’emplacement de PhpMyAdmin.

mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin

Fichier de configuration de phpMyAdmin

Il est nécessaire de générer une phrase secrète dont nous aurons besoin dans le fichier de configuration de phpMyAdmin

php -r 'echo substr(bin2hex(random_bytes(16)), 0, 32);'

Copier ensuite le template de fichier de configuration de PhpMyAdmin afin de l’utiliser.

cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php

Editer ce fichier de configuration afin de spécifier le secret précédemment généré et indiquer le répertoire des fichiers temporaires.

nano /usr/share/phpmyadmin/config.inc.php

# Ajouter la ligne suivante dans le fichier de configuration en adaptant avec le secret généré
$cfg['blowfish_secret'] = '32_caracteres_passphrase'; 

# Spécifier le répertoire des fichiers temporaires
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Virtualhost pour Apache

Créer le fichier phpmyadmin.conf dans le répertoire /etc/apache2/sites-available pour indiquer à Apache comment se comporter avec l'application phpMyAdmin.

Création du fichier avec nano /etc/apache2/sites-available/phpmyadmin.conf, puis insérer le code suivant :

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>

Activer le nouveau site avec la commande a2ensite phpmyadmin

Redémarrer le service apache avec la commande systemctl restart apache2.service