Différences
Ci-dessous, les différences entre deux révisions de la page.
| 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/14 18:20] – francoisa | technique: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ète. Veuillez accéder au contenu |
| - | + | ||
| - | 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:// | + | |
| - | + | ||
| - | Conseils de RomainR : Installer Debian + Nginx + PHP-FPM pour pouvoir personnaliser plusieurs version de PHP | + | |
| - | + | ||
| - | Cas de [[http:// | + | |
| - | + | ||
| - | ===== 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 / | + | |
| - | < | + | |
| - | + | ||
| - | PermitRootLogin Yes | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Quitter l' | + | |
| - | + | ||
| - | < | + | |
| - | systemctl restart sshd.service | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | - Identifier | + | |
| - | + | ||
| - | < | + | |
| - | ssh root@ip_CT | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Mettre à jour le CT | + | |
| - | + | ||
| - | < | + | |
| - | apt-get update && apt-get dist-upgrade | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | ===== 2. Installer MysqL (mariadb) ===== | + | |
| - | + | ||
| - | Installation du paquet mariadb et vérification du service | + | |
| - | + | ||
| - | < | + | |
| - | apt install mariadb-server mariadb-client | + | |
| - | + | ||
| - | systemctl status mariadb | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | doit renvoyer " | + | |
| - | + | ||
| - | ==== Sécuration MysqL avec : ==== | + | |
| - | + | ||
| - | < | + | |
| - | mysql_secure_installation | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Par défaut le mot de passe root de mysql est vide, donc | + | |
| - | + | ||
| - | < | + | |
| - | Enter current password for root (enter for none): Enter | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Puis définir le mot de passe " | + | |
| - | + | ||
| - | - On supprime le compte anonyme par défaut | + | |
| - | + | ||
| - | < | + | |
| - | Remove anonymous user (Y/n) : y | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | - On désactive les connexions distantes et donc on restreint les connexions root aux connexions locales | + | |
| - | + | ||
| - | < | + | |
| - | Disallow root login remotely (Y/n) : y | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | - Suppression de la base " | + | |
| - | + | ||
| - | < | + | |
| - | Remove Test database an access (Y/n) : y | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | - Prise en compte immédiate des changements (Y/n) : y | + | |
| - | + | ||
| - | Et c'est tout bon. | + | |
| - | + | ||
| - | On peut tester l' | + | |
| - | + | ||
| - | < | + | |
| - | mysql -u root -p | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | + mot de passe | + | |
| - | + | ||
| - | Et on arrive sur la console mysql> | + | |
| - | + | ||
| - | '' | + | |
| - | ===== 3. Installer Serveur Web (nginx) avec PHP ===== | + | |
| - | + | ||
| - | [[https://tecadmin.net/ | + | |
| - | + | ||
| - | ==== Install du serveur Web ==== | + | |
| - | < | + | |
| - | + | ||
| - | apt install nginx | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Le serveur doit déjà être fonctionnel sur [[http:// | + | |
| - | + | ||
| - | ==== Installation de PHP (ici PHP7.3 par défaut) ==== | + | |
| - | < | + | |
| - | + | ||
| - | apt install php php-fpm php-mysql | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Le service doit être actif : | + | |
| - | + | ||
| - | < | + | |
| - | systemctl status php7.3-fpm | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Service Loaded : " | + | |
| - | + | ||
| - | 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 " | + | |
| - | + | ||
| - | < | + | |
| - | nano / | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | On définir le port d' | + | |
| - | + | ||
| - | < | + | |
| - | server { | + | |
| - | | + | |
| - | root / | + | |
| - | 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_pass unix:/run/php/ | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | On active le virtualhost avec un lien symbolique vers sites-enabled | + | |
| - | + | ||
| - | < | + | |
| - | ln -s / | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | 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) | + | |
| - | + | ||
| - | < | + | |
| - | systemctl restart nginx.service | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | On teste avec : | + | |
| - | + | ||
| - | < | + | |
| - | echo "<? | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | On peut effacer le virtualhostpar défaut (ou le conserver) | + | |
| - | + | ||
| - | < | + | |
| - | rm / | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Et relancer nginx | + | |
| - | + | ||
| - | < | + | |
| - | systemctl restart nginx | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Et on vérifie sur : [[https:// | + | |
| - | + | ||
| - | on devrait voir un tableau d' | + | |
| - | + | ||
| - | ===== 5. Installation de Phpmyadmin ===== | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | - Installer les pré-requis : | + | |
| - | < | + | |
| - | + | ||
| - | apt install php-{mbstring, | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | On adapte le PHP-FPM | + | |
| - | + | ||
| - | < | + | |
| - | nano / | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | et on modifie le cgi.fix_pathinfo (FIXME A quoi ça sert ?) | + | |
| - | + | ||
| - | < | + | |
| - | cgi.fix_pathinfo=0 | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Puis on redémarre le service | + | |
| - | + | ||
| - | < | + | |
| - | systemctl restart php7.3-fpm.service | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | - Téléchargement de la dernière version depuis le site officiel : [[https:// | + | |
| - | < | + | |
| - | + | ||
| - | cd /root/ && wget https:// | + | |
| - | + | ||
| - | unzip phpMyAdmin-5.0.2-all-languages.zip # installer unzip si besoin | + | |
| - | + | ||
| - | mv phpMyAdmin-5.0.2-all-languages / | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | - Copie du fichier de config par défaut | + | |
| - | + | ||
| - | < | + | |
| - | cp -pr / | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Edition du fichier et modification du secret pour génération de cookies : '' | + | |
| - | < | + | |
| - | $cfg[' | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Création des tables initiales : | + | |
| - | + | ||
| - | < | + | |
| - | mysql </ | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | + Mot de passe SQL de root | + | |
| - | + | ||
| - | === Super-admin de Phpmyadmin === | + | |
| - | + | ||
| - | Le compte root n' | + | |
| - | + | ||
| - | On se connecte ensuite sur mysql et on attribue tous les privilèges à un utilisateur " | + | |
| - | + | ||
| - | < | + | |
| - | mysql -u root -p | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | + 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' | + | |
| - | + | ||
| - | < | + | |
| - | GRANT ALL ON *.* TO ' | + | |
| - | + | ||
| - | FLUSH PRIVILEGES; | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | pour la prise en compte immédiate des changements. | + | |
| - | + | ||
| - | === Virtualhost pour Phpmyadmin === | + | |
| - | + | ||
| - | On crée un virtualhost pour phpmyadmin | + | |
| - | + | ||
| - | < | + | |
| - | nano / | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | et on complète son contenu (en utilisant la valeur du sock pour PHP-FPM trouvé dans ''/ | + | |
| - | < | + | |
| - | server { | + | |
| - | | + | |
| - | | + | |
| - | root / | + | |
| - | + | ||
| - | | + | |
| - | index index.php; | + | |
| - | } | + | |
| - | + | ||
| - | ## Images and static content is treated different | + | |
| - | | + | |
| - | access_log off; | + | |
| - | expires 30d; | + | |
| - | } | + | |
| - | + | ||
| - | | + | |
| - | deny all; | + | |
| - | } | + | |
| - | + | ||
| - | | + | |
| - | deny all; | + | |
| - | return 404; | + | |
| - | } | + | |
| - | + | ||
| - | | + | |
| - | include / | + | |
| - | fastcgi_pass unix:/ | + | |
| - | # fastcgi_pass 127.0.0.1: | + | |
| - | fastcgi_index index.php; | + | |
| - | fastcgi_param SCRIPT_FILENAME / | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Puis on active ce virtualhost : | + | |
| - | < | + | |
| - | + | ||
| - | ln -s / | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | On crée un dossier temporaire avec les droits associés (!!! Bizarre comme méthode ???) | + | |
| - | + | ||
| - | < | + | |
| - | mkdir / | + | |
| - | + | ||
| - | chmod 660 / | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | On autorise www:data (utilisateur de nginx) à accéder au dossier : | + | |
| - | + | ||
| - | < | + | |
| - | chown -R www-data: | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | Et on redémarre les services : | + | |
| - | + | ||
| - | < | + | |
| - | systemctl restart php7.3-fpm | + | |
| - | + | ||
| - | systemctl restart nginx | + | |
| - | + | ||
| - | </ | + | |
| - | + | ||
| - | et on se connecte sur phpmyadmin sur [[http:// | + | |
| - | + | ||
| - | Et on peut se connecter à phpmyadmin avec l' | + | |
| - | + | ||
| - | ===== Cas de plusieurs virtualhosts ===== | + | |
| - | + | ||
| - | ===== Cas de plusieurs versions de PHP ===== | + | |
| - | + | ||
| - | - Utiliser les dépot Sury de PHP à ajouter | + | |
| - | + | ||
| - | [[https:// | + | |
| - | + | ||
| - | - 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. | + | |
| - | + | ||