technique:lemp_phpmyadmin

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
technique:lemp_phpmyadmin [2020/09/17 00:05] francoisatechnique:lemp_phpmyadmin [2024/04/02 15:08] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
-====== Installer serveur Web complet : Linux / Nginx / MariaDB / PHP (+ phpmyadmin) ====== +**Cette page est obsolèteVeuillez accéder au contenu à son nouvel emplacement : [[https://bibliotech.cemea.org/books/outils-technique/page/lemp-phpmyadmin|lemp-phpmyadmin]]**
- +
-Cas où on veut installer un serveur web complet à partir de Debian, avec PHP (plusieurs versions possibles), MySQL (mariaDB) et Phpmyadmin pour une administration simplifiée +
- +
-Cette installation pourrait se faire dans un conteneur de Proxmox par exemple et héberger un ou des sites web comme Booked. +
- +
-Doc : [[https://linuxhint.com/install_phpmyadmin_debian_10|https://linuxhint.com/install_phpmyadmin_debian_10]] (mais ici apache) +
- +
-Conseils de RomainR : Installer Debian + Nginx + PHP-FPM pour pouvoir personnaliser plusieurs version de PHP +
- +
-Cas de [[http://web.cemea.lan|http://web.cemea.lan]] +
- +
-===== 1. Installation Debian 10 ===== +
- +
-Installer Debian 10 à partir d'un template fourni. +
- +
-- Créer un CT, template Debain-10-standard avec un compte root, 1Go de Ram, 512 Mo de swap, 10 Go de disque, firewall désactivé. +
- +
-- Se connecter en mode console en root via Proxmox (xterm.js), editer le fichier /etc/ssh/sshd_config et changer le mode d'autorisation de connexion de root : +
-<code> +
- +
-PermitRootLogin Yes +
- +
-</code> +
- +
-Quitter l'édition du fichier sshd_config et relancer le service ssh +
- +
-<code> +
-systemctl restart sshd.service +
- +
-</code> +
- +
-- Identifier son IP (ip a) et se connecter en SSH dessus depuis un client externe. La connexion avec root devrait fonctionner. +
- +
-<code> +
-ssh root@ip_CT +
- +
-</code> +
- +
-Mettre à jour le CT +
- +
-<code> +
-apt-get update && apt-get dist-upgrade +
- +
-</code> +
- +
-===== 2. Installer MysqL (mariadb) ===== +
- +
-Installation du paquet mariadb et vérification du service : +
- +
-<code> +
-apt install mariadb-server mariadb-client +
- +
-systemctl status mariadb +
- +
-</code> +
- +
-doit renvoyer "enabled" (lancé au démarrage) et "active (running)" +
- +
-==== Sécuration MysqL avec : ==== +
- +
-<code> +
-mysql_secure_installation +
- +
-</code> +
- +
-Par défaut le mot de passe root de mysql est vide, donc +
- +
-<code> +
-Enter current password for root (enter for none): Enter +
- +
-</code> +
- +
-Puis définir le mot de passe "root" de Mysql (y) et entrer le mot de passe. +
- +
-- On supprime le compte anonyme par défaut +
- +
-<code> +
-Remove anonymous user (Y/n) : y +
- +
-</code> +
- +
-- On désactive les connexions distantes et donc on restreint les connexions root aux connexions locales +
- +
-<code> +
-Disallow root login remotely (Y/n) :  y +
- +
-</code> +
- +
-- Suppression de la base "test"+
- +
-<code> +
-Remove Test database an access (Y/n) : y +
- +
-</code> +
- +
-- Prise en compte immédiate des changements (Y/n) : y +
- +
-Et c'est tout bon. +
- +
-On peut tester l'accès à mysql avec +
- +
-<code> +
-mysql -u root -p +
- +
-</code> +
- +
-+ mot de passe +
- +
-Et on arrive sur la console mysql> +
- +
-''quit;'' ou ''\q'' pour quitter MySQL. +
-===== 3. Installer Serveur Web (nginx) avec PHP ===== +
- +
-[[https://tecadmin.net/install-nginx-php-fpm-debian-10/|https://tecadmin.net/install-nginx-php-fpm-debian-10/]] +
- +
-==== Install du serveur Web ==== +
-<code> +
- +
-apt install nginx +
- +
-</code> +
- +
-Le serveur doit déjà être fonctionnel sur [[http://ip_CT|http://ip_CT]] ("Welcome to nginx" , page présente dans /var/www/html/+
- +
-==== Installation de PHP (ici PHP7.3 par défaut) ==== +
-<code> +
- +
-apt install php php-fpm php-mysql +
- +
-</code> +
- +
-Le service doit être actif : +
- +
-<code> +
-systemctl status php7.3-fpm +
- +
-</code> +
- +
-Service Loaded : "enabled" et "active (running)" +
- +
-On peut aussi rajouter des modules complémentaires utiles comme : php-gd, php-json, php-zip (à compléter…). +
- +
-===== 4. Définitions des Virtualhost ===== +
- +
-Création d'un virtualhost (pour héberger un site-espace web) (un fichier "default" existe pour modèle). +
- +
-<code> +
-nano /etc/nginx/sites-available/monsite +
- +
-</code> +
- +
-On définir le port d'écoute, les fichiers lus, son nom, son emplacement (root) et le socket associé (.sock) +
- +
-<code> +
-server { +
-   listen 80; +
-        root /var/www/dossiersite; +
-        index index.php index.html index.htm; +
-        server_name monsite.cemea.lan; # entree DNS du site +
- +
-        location +
-            try_files $uri $uri=404; +
-        } +
- +
-        location ~ \.php$ { +
-            include snippets/fastcgi-php.conf; +
-            fastcgi_pass unix:/run/php/php7.3-fpm.sock; +
-        } +
-+
- +
-</code> +
- +
-On active le virtualhost avec un lien symbolique vers sites-enabled +
- +
-<code> +
-ln -s /etc/nginx/sites-available/monsite /etc/nginx/sites-enabled/monsite +
- +
-</code> +
- +
-Et on redémarre nginx par sécurité (on ne redémarre qu'en cas de plantage ou changement de version, sinon on reloade simplement) +
- +
-<code> +
-systemctl restart nginx.service +
- +
-</code> +
- +
-On teste avec : +
- +
-<code> +
-echo "<?php phpinfo(); ?>"> /var/www/dossiersite/info.php +
- +
-</code> +
- +
-On peut effacer le virtualhostpar défaut (ou le conserver) +
- +
-<code> +
-rm /etc/nginx/sites-enabled/default +
- +
-</code> +
- +
-Et relancer nginx +
- +
-<code> +
-systemctl restart nginx +
- +
-</code> +
- +
-Et on vérifie sur : [[https://ip_CT/info.php|https://ip_CT/info.php]] +
- +
-on devrait voir un tableau d'infos sur la version de PHP et les modules activés. +
- +
-===== 5. Installation de Phpmyadmin ===== +
- +
-[[https://www.itzgeek.com/how-tos/linux/debian/how-to-install-phpmyadmin-with-nginx-on-debian-10.html|https://www.itzgeek.com/how-tos/linux/debian/how-to-install-phpmyadmin-with-nginx-on-debian-10.html]] +
- +
-[[https://kifarunix.com/install-phpmyadmin-with-nginx-on-debian-10-buster/|https://kifarunix.com/install-phpmyadmin-with-nginx-on-debian-10-buster/]] +
- +
-[[https://www.digitalocean.com/community/tutorials/how-to-install-phpmyadmin-from-source-debian-10|https://www.digitalocean.com/community/tutorials/how-to-install-phpmyadmin-from-source-debian-10]] +
- +
-- Installer les pré-requis : +
-<code> +
- +
-apt install php-{mbstring,zip,gd,xml,pear,gettext,cgi} +
- +
-</code> +
- +
-On adapte le PHP-FPM +
- +
-<code> +
-nano /etc/php/7.3/fpm/php.ini +
- +
-</code> +
- +
-et on modifie le cgi.fix_pathinfo (FIXME A quoi ça sert ?) +
- +
-<code> +
-cgi.fix_pathinfo=0 +
- +
-</code> +
- +
-Puis on redémarre le service +
- +
-<code> +
-systemctl restart php7.3-fpm.service +
- +
-</code> +
- +
-- Téléchargement de la dernière version depuis le site officiel : [[https://www.phpmyadmin.net/downloads/|https://www.phpmyadmin.net/downloads/]] et extraction dans /var/www/phpmyadmin +
-<code> +
- +
-cd /root/ && wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.zip +
- +
-unzip phpMyAdmin-5.0.2-all-languages.zip # installer unzip si besoin +
- +
-mv phpMyAdmin-5.0.2-all-languages /var/www/phpmyadmin +
- +
-</code> +
- +
-- Copie du fichier de config par défaut +
- +
-<code> +
-cp -pr /var/www/phpmyadmin/config.sample.inc.php /var/www/phpmyadmin/config.inc.php +
- +
-</code> +
- +
-Edition du fichier et modification du secret pour génération de cookies : ''nano /var/www/phpmyadmin/config.inc.php'' +
-<code> +
-$cfg['blowfish_secret'] = 'longuechaineagenererauhasard'; /YOU MUST FILL IN THIS FOR COOKIE AUTH! *+
- +
-</code> +
- +
-Création des tables initiales : +
- +
-<code> +
-mysql </var/www/phpmyadmin/sql/create_tables.sql -u root -p +
- +
-</code> +
- +
-+ Mot de passe SQL de root +
- +
-=== Super-admin de Phpmyadmin === +
- +
-Le compte root n'étant plus autorisé à se connecter à phpmyadmin, il vaut mieux créer un autre compte "admin" +
- +
-On se connecte ensuite sur mysql et on attribue tous les privilèges à un utilisateur "admin"+
- +
-<code> +
-mysql -u root -p +
- +
-</code> +
- +
-+ Mot de passe SQL de root +
- +
-Pour créer un utilisateur avec son mot de passe (**à personnaliser**) et tous les privilèges sur toutes les bases : +
- +
-TODO : changer le mot de passe d'accès 'motdepasse' !!! +
- +
-<code> +
-GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'motdepasse'; +
- +
-FLUSH PRIVILEGES; +
- +
-</code> +
- +
-pour la prise en compte immédiate des changements. +
- +
-=== Virtualhost pour Phpmyadmin === +
- +
-On crée un virtualhost pour phpmyadmin +
- +
-<code> +
-nano /etc/nginx/sites-available/phpmyadmin +
- +
-</code> +
- +
-et on complète son contenu (en utilisant la valeur du sock pour PHP-FPM trouvé dans ''/etc/php/7.3/fpm/pool.d/www.conf'' qui est la pool par défaut). On peut choisir le port (ici 8080) pour garder un vhost spécifique. +
-<code> +
-server { +
-   listen 8080; +
-   server_name pma.cemea.lan; +
-   root /var/www/phpmyadmin; +
- +
-   location / { +
-      index index.php; +
-   } +
- +
-## Images and static content is treated different +
-   location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ { +
-      access_log off; +
-      expires 30d; +
-   } +
- +
-   location ~ /\.ht { +
-      deny all; +
-   } +
- +
-   location ~ /(libraries|setup/frames|setup/libs) { +
-      deny all; +
-      return 404; +
-   } +
- +
-   location ~ \.php$ { +
-      include /etc/nginx/fastcgi_params; +
-      fastcgi_pass unix:/run/php/php7.3-fpm.sock; +
-      # fastcgi_pass 127.0.0.1:9000; +
-      fastcgi_index index.php; +
-      fastcgi_param SCRIPT_FILENAME /var/www/phpmyadmin$fastcgi_script_name; +
-   } +
-+
- +
-</code> +
- +
-Puis on active ce virtualhost : +
-<code> +
- +
-ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enable/ +
- +
-</code> +
- +
-On crée un dossier temporaire avec les droits associés (!!! Bizarre comme méthode ???) +
- +
-<code> +
-mkdir /var/www/phpmyadmin/tmp +
- +
-chmod 660 /var/www/phpmyadmin/tmp +
- +
-</code> +
- +
-On autorise www:data (utilisateur de nginx) à accéder au dossier : +
- +
-<code> +
-chown -R www-data:www-data /var/www/phpmyadmin +
- +
-</code> +
- +
-Et on redémarre les services : +
- +
-<code> +
-systemctl restart php7.3-fpm +
- +
-systemctl restart nginx +
- +
-</code> +
- +
-et on se connecte sur phpmyadmin sur [[http://IP_CT:8080|http://IP_CT:8080]] +
- +
-Et on peut se connecter à phpmyadmin avec l'utilisateur pma et le mot de passe choisi. +
- +
-===== Cas de plusieurs virtualhosts ===== +
- +
-===== Cas de plusieurs versions de PHP ===== +
- +
-- Utiliser les dépot Sury de PHP à ajouter +
- +
-[[https://packages.sury.org/php/|https://packages.sury.org/php/]] +
- +
-- Connecter les versions de PHP à différents sockets +
- +
-- Personnaliser les virtualhosts à partir de ces sockets. +
- +
-===== Cas des certificats Let's Encrypt pour SSL ===== +
- +
-Des certifcats autosignés suffiraient. Voir [[https://letsencrypt.org/fr/getting-started/|Let's encrypt]] (AC) et le client ACME [[https://certbot.eff.org/|Certbot]] +
- +
-Installation du client certbort pour générer des certificats : +
-<code> +
- +
-apt-get install certbot python-certbot-nginx +
- +
-</code> +
- +
  • technique/lemp_phpmyadmin.1600293951.txt.gz
  • Dernière modification : 2020/09/17 00:05
  • de francoisa