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/17 00:05] – 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 PRIVILEGES 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. Voir [[https:// | + | |
- | + | ||
- | Installation du client certbort pour générer des certificats : | + | |
- | < | + | |
- | + | ||
- | apt-get install certbot python-certbot-nginx | + | |
- | + | ||
- | </ | + | |
- | + |