Installer Apache, php7.3, Mysql et phpmyadmin sur debian 10 buster


Debian, Linux / mardi, décembre 24th, 2019

Avant de commencer l’installation de nos paquets nous allons mettre à jour notre machine

apt update && apt -y upgrade

Une fois la commande terminée nous allons procéder à l’installation de Mysql

1- Installation de Mysql

L’installation se fait a partir de la commande

 apt install mysql-server 

Entrez le mot de passe root de votre serveur SQL

Saisissez à nouveau le mot de passe

L’installation se termine et nous devons redémarrer le service Mysql

systemctl restart mysql

Vérifions maintenant le statut du service Mysql

 systemctl status mysql 

Afin de sécuriser notre installation nous devons lancer la commande suivante :

 mysql_secure_installation 

La commande mysql_secure_installation va apporter un minimum de sécurité notre nouvelle installation. Elle va nous permettre :

  • de changer le mot de passe root,
  • de supprimer les comptes anonymes,
  • de désactiver la connexion du compte root à distance,
  • de supprimer la base de données « test » à laquelle tout le monde peut avoir accès.

L’outil finit sur un rechargement des privilèges (« Flush privileges ») afin d’appliquer les changements de droits au serveur.

Maintenant nous pouvons tester la connexion à notre service Mysql

mysql -u root -p

2- Installation d’apache

Son installation se fait via la commande suivante :

 apt install apache2 

Maintenant nous allons vérifier le statut du service apache grâce à la commande suivante

 systemctl status apache2 

Vérifions l’accessibilité de notre serveur apache depuis notre navigateur http://VOTRE_IP_OU_DOMAINE/

3- Installation de Php7.3

Nous devons commencer par installer les packages suivants

apt-get install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-https

Importer et ajouter la clé publique des repository de sury

wget https://packages.sury.org/php/apt.gpg

sudo apt-key add apt.gpg

Ajouter les repository de sury dans votre système via le apt/sources.list

https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.list

Mettre à jour votre index de repository

apt-get update

Installer PHP 7

 apt-get install -y php7.3 php7.3-cli php7.3-common

Vérifions la version de PHP installée sur notre serveur

php -v

Maintenant nous pouvons procéder à l’installation des paquets additionnels nécessaires pour le bon fonctionnement de php avec votre système.

Le paquet suivant va vous permettre d’ajouter des modules php à votre package apache

apt-get install apache2 libapache2-mod-php7.3

Pour installer l’extension MySQL pour PHP v7.3, vous pouvez installer le package php7.3-mysql.

 apt-get install -y php7.3-mysql

Si vous installez wordpress sur votre serveur vous aurez besoin des extentions suivantes :

apt-get install -y php7.3-mysql php7.3-dom php7.3-simplexml php7.3-ssh2 php7.3-xml php7.3-xmlreader php7.3-curl  php7.3-exif  php7.3-ftp php7.3-gd  php7.3-iconv php7.3-imagick php7.3-json  php7.3-mbstring php7.3-posix php7.3-sockets php7.3-tokenizer

Si vous installez Joomla sur votre serveur vous aurez besoin des extentions suivantes :

apt-get install -y php7.3-mysql php7.3-xml php-pear php7.3-json

Si vous installez Drupal sur votre serveur vous aurez besoin des extentions suivantes :

apt-get install -y php7.3-mysql php7.3-dom php7.3-gd php7.3-json php7.3-pdo php7.3-simplexml php7.3-tokenizer php7.3-xml

Nous pouvons désormais tester le fonctionnement de notre paquet PHP. Pour ce faire nous allons créer un fichier info.php et y inserer le phpinfo

touch touch /var/www/html/info.php
echo '' >/var/www/html/info.php

Saisir sur votre navigateur l’adresse URL http://VOTRE_IP_OU_DOMAINE/ info.php

Après avoir effectué le test vous devez supprimer le fichier info.php

rm /var/www/info.php

Pour terminer la partie sur le paquet PHP il faut modifier le fichier php.ini afin d’y effectuer quelques réglages

 vi  /etc/php/7.3/apache2/php.ini 

Rechercher

;date.timezone =

Ajouter (Pour afficher le fuseau horaire de Paris)

date.timezone = Europe/Paris

4 – Installation de PhpMyadmin

Il faut se rendre sur le site de PHPmyadmin a l’adresse suivante pour télécharger la dernière version du paquet : https://www.phpmyadmin.net/downloads/

#cd /tmp/
# wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.tar.gz
# tar xvf phpMyAdmin-4.9.2-all-languages.tar.gz

Déplacer le dossier dans le répertoire /user/share

mv phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin

Donner les droits du dossier à l’utilisateur www-data du service apache

chown -R www-data:www-data /usr/share/phpmyadmin

Il faut créer un dossier temporaire pour phpmyadmin

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

Se connecter à mysql pour créer une base pour phpmyadmin

mysql -u root
mysql> CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

La commande suivante va nous permettre de créer un utilisateur phpmyadmin qui aura les droits sur la base nommée phpmyadmin avec un mot de passe

 GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'votre_mot_de_passe_ici'; 

On applique les privilèges et on se déconnecte de Mysql

FLUSH PRIVILEGES;
exit;

Nous pouvons lancer l’installation des paquets additionnels d’apache pour phpmyadmin

apt-get install -y php7.3-common php7.3-mysql php7.3-gd php7.3-imap php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl php7.3-gmp

On redémarre le service apache

systemctl restart apache2

Nous allons créer le fichier de configuration qui va nous permettre d’accès a la page web de phpmyadmin via apache

vi  /etc/apache2/conf-available/phpmyadmin.conf 

Coller et enregistrer le fichier de configuration suivant

# phpMyAdmin default Apache 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>

# 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 fichier de configuration via la commande suivante

a2enconf phpmyadmin.conf

On redémarre le service apache

systemctl restart apache2

Il faut créer et modifier le fichier de configuration de phpmyadmin

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

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

Modifier les informations suivantes :

. . .
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
. . .

Par

$cfg['blowfish_secret'] = '2O:.uw6-8;Oi9R=3W{tO;/QtZ]4OG:T:'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Et les lignes suivantes

/* User used to manipulate with storage */
 // $cfg['Servers'][$i]['controlhost'] = '';
 // $cfg['Servers'][$i]['controlport'] = '';
 // $cfg['Servers'][$i]['controluser'] = 'pma';
 // $cfg['Servers'][$i]['controlpass'] = 'pmapass';
 /* Storage database and tables */
 // $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
 // $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
 // $cfg['Servers'][$i]['relation'] = 'pma__relation';
 // $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
 // $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
 // $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
 // $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
 // $cfg['Servers'][$i]['history'] = 'pma__history';
 // $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
 // $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
 // $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
 // $cfg['Servers'][$i]['recent'] = 'pma__recent';
 // $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
 // $cfg['Servers'][$i]['users'] = 'pma__users';
 // $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
 // $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
 // $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
 // $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
 // $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
 // $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Par

$/* User used to manipulate with storage */
 // $cfg['Servers'][$i]['controlhost'] = '';
 // $cfg['Servers'][$i]['controlport'] = '';
  $cfg['Servers'][$i]['controluser'] = 'phpmyadmin';
  $cfg['Servers'][$i]['controlpass'] = 'Votre_mot_depasse_phpmyadmin';
 /* Storage database and tables */
 $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
 $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
 $cfg['Servers'][$i]['relation'] = 'pma__relation';
 $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
 $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
 $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
 $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
 $cfg['Servers'][$i]['history'] = 'pma__history';
 $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
 $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
 $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
 $cfg['Servers'][$i]['recent'] = 'pma__recent';
 $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
 $cfg['Servers'][$i]['users'] = 'pma__users';
 $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
 $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
 $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
 $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
 $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
 $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

On redémarre le service apache

systemctl restart apache2

Maintenant vous pouvez accéder a la page web de phpmyadmin http://VOTRE_IP_OU_DOMAINE/ phpmyadmin


C’est terminé 🙂 votre machine Debian est maintenant opérationnelle. Même s’il est vrai que ce tutoriel est un peu long, je tenais à faire une version à jour de mon premier tuto sur l’installation de ces paquets qui sont très souvent utiles.