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:lamp_phpmyadmin [2020/09/07 19:02] – francoisa | technique:lamp_phpmyadmin [2020/09/14 11:59] (Version actuelle) – supprimée francoisa | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Installer serveur Web complet : PHP / MySQL / 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:// | ||
| - | |||
| - | 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 son IP (ip a) et se connecter en SSH dessus depuis un client externe. La connexion avec root devrait fonctionner. | ||
| - | |||
| - | < | ||
| - | 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 restreint les connexions root au localhost | ||
| - | |||
| - | < | ||
| - | 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> | ||
| - | |||
| - | Ex pour créer un utilisateur avec son mot de passe et tous les privilèges sur cette base : | ||
| - | |||
| - | < | ||
| - | GRANT ALL ON *.* TO ' | ||
| - | |||
| - | FLUSH PRIVILEGES; | ||
| - | |||
| - | </ | ||
| - | |||
| - | pour la prise en compte immédiate des changements. | ||
| - | |||
| - | '' | ||
| - | ===== 3. Installer Serveur Web (nginx) avec PHP ===== | ||
| - | |||
| - | [[https:// | ||
| - | |||
| - | ==== 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 | ||
| - | |||
| - | </ | ||
| - | |||
| - | Le service doit être actif : | ||
| - | |||
| - | < | ||
| - | systemctl status php7.3-fpm | ||
| - | |||
| - | </ | ||
| - | |||
| - | Service " | ||
| - | |||
| - | 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; | ||
| - | |||
| - | location / { | ||
| - | try_files $uri $uri/ =404; | ||
| - | } | ||
| - | |||
| - | location ~ \.php$ { | ||
| - | include snippets/ | ||
| - | fastcgi_pass unix:/ | ||
| - | } | ||
| - | } | ||
| - | |||
| - | |||
| - | </ | ||
| - | |||
| - | On active le virtualhost avec un lien symbolique vers sites-enabled | ||
| - | |||
| - | < | ||
| - | |||
| - | </ | ||
| - | |||
| - | 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 | ||
| - | |||
| - | < | ||
| - | 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, | ||
| - | </ | ||
| - | |||
| - | - 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[' | ||
| - | |||
| - | </ | ||
| - | |||
| - | Décommenter les variables de stockage | ||
| - | |||
| - | < | ||
| - | $cfg[' | ||
| - | // $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | |||
| - | /* Storage database and tables */ | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | $cfg[' | ||
| - | |||
| - | </ | ||
| - | |||
| - | Création des tables initiales : | ||
| - | |||
| - | mysql < / | ||
| - | |||
| - | + Mot de passe SQL de root | ||
| - | |||
| - | On se connecter ensuite sur mysql et on attribue les privilèges de cette base à l' | ||
| - | |||
| - | sudo mysql -u root -p | ||
| - | |||
| - | + Mot de passe SQL de root | ||
| - | |||
| - | < | ||
| - | GRANT ALL PRIVILEGES ON phpmyadmin.* TO ' | ||
| - | |||
| - | FLUSH PRIVILEGES; | ||
| - | |||
| - | </ | ||
| - | |||
| - | On crée un virtualhost pour phpmyadmin | ||
| - | |||
| - | < | ||
| - | nano / | ||
| - | |||
| - | </ | ||
| - | |||
| - | et on complète son contenu | ||
| - | |||
| - | < | ||
| - | 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 127.0.0.1: | ||
| - | fastcgi_index index.php; | ||
| - | fastcgi_param SCRIPT_FILENAME / | ||
| - | } | ||
| - | } | ||
| - | |||
| - | </ | ||
| - | |||
| - | On crée un dossier temporaire avec les droits associés (!!! Bizarre comme méthode. A mettre plutôt dans tmp) | ||
| - | < | ||
| - | |||
| - | mkdir / | ||
| - | |||
| - | chmod 777 / | ||
| - | |||
| - | </ | ||
| - | |||
| - | On autorise www:data à accéder au dossier : | ||
| - | |||
| - | < | ||
| - | chown -R www-data: | ||
| - | |||
| - | </ | ||
| - | |||
| - | Ert on redémarre les services : | ||
| - | |||
| - | < | ||
| - | sudo systemctl restart nginx | ||
| - | |||
| - | sudo systemctl restart php7.3-fpm | ||
| - | |||
| - | </ | ||
| - | |||
| - | MAIS CA MARCHE PAS : | ||
| - | |||
| - | 502 Bad Gateway - nginx/ | ||
| - | |||
| - | Il faut sans doute définir un autre port dans le virtualhost pour utiliser le même serveur. | ||
| - | |||
| - | ===== 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. | ||
| - | |||
| - | ===== 5. 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. | ||
| - | |||
| - | ===== 6. Cas des certificats Let's Encrypt pour SSL ===== | ||
| - | |||
| - | Des certifcats autosignés suffiraient. | ||
| - | |||