====== Configuration type d'un serveur sous Ubuntu ====== Adaptation en cours vers la version 22.04 !! * Configuration pour usage général et scientifique * Téléchargement : [[https://ubuntu.com/download/server]], dernière version : Ubuntu Server 22.04.3 LTS Jammy Jellyfish, architecture AMD64 (testé 15/09/2023) * Gravure du fichier iso, ou préparation d'une clé USB via Balena-Etcher (par exemple) * Versions précédentes : * [[config_ubuntu_server-20.04|Configuration type d'un serveur sous Ubuntu Server 20.04]], Focal Fossa * [[config_ubuntu_server-18.04|Configuration type d'un serveur sous Ubuntu Server 18.04]], Bionic Beaver * [[config_ubuntu_server-16.04|Configuration type d'un serveur sous Ubuntu Server 16.04]], Xenial Xerus * références, tutoriels,... * [[https://www.fosslinux.com/70065/install-ubuntu-server-22-04-lts.htm|How to install Ubuntu Server 22.04 LTS | FOSS Linux]] * [[https://ostechnix.com/install-ubuntu-server/|Install Ubuntu 22.04 LTS Server [Step By Step Guide] - OSTechNix]] * [[https://www.linuxtechi.com/install-ubuntu-server-22-04-step-by-step/|How to Install Ubuntu Server 22.04 LTS Step by Step]] * [[https://hibbard.eu/install-ubuntu-virtual-box/|How to Install Ubuntu Server on VirtualBox]] 11 Dec 2019, James Hibbard * [[https://doc.ubuntu-fr.org/serveur]] * [[https://forum.ubuntu-fr.org/viewtopic.php?id=1990066]] Installation Apache Mysql PHP phpmyadmin => LAMPP (+ vidéo) * [[https://blog.sodifrance.fr/installer-une-machine-virtuelle-avec-virtualbox/]] : installation d'une VM Ubuntu (serveur LAMP) avec VirtualBox sous Windows, avec processeur i5 et 8 Go RAM * commandes intéressantes * [[https://www.rosehosting.com/blog/list-all-installed-packages-with-apt-on-ubuntu/|Apt Get List Installed | List Installed Packages with Apt on Ubuntu]] Un serveur peut-être installé de différentes manières, notamment sur un ordinateur physique, ou sur un ordinateur virtuel. Cette deuxième manière de faire est particulièrement pratique pour se familiariser avec le fonctionnement d'un serveur, effectuer des tests, ..., raison pour laquelle on explique ci-après comment travailler avec le logiciel de virtualisation Virtual Box. ===== Installation de VirtualBox sous Linux (Ubuntu) ===== VirtualBox peut tout aussi bien être installé sur un système "hôte" de type Windows ou Mac OS. Et finalement, la gestion de la machine virtuelle créée ("guest") s'effectue le plus souvent à distance via un terminal permettant la connexion en SSH (terminal intégré à GNU/Linux ou Mac OS, client PuTTY sous Windows). La gestion peut alors s'effectuer sur le réseau local, ou via Internet, éventuellement par l'utilisation d'un VPN si le serveur n'est pas accessible directement sur le réseau public. * [[wp>fr:Oracle_VM_VirtualBox|Oracle VM VirtualBox]] * [[https://www.virtualbox.org/]] * [[https://www.virtualbox.org/wiki/Downloads]] * Linux + installation via ppa : [[https://www.virtualbox.org/wiki/Linux_Downloads]] * Tutoriels divers : * **[[https://linux.how2shout.com/commands-to-install-virtualbox-7-0-on-ubuntu-22-04-or-20-04/|Commands to Install VirtualBox 7.0 on Ubuntu 22.04 or 20.04]]** * [[https://computingforgeeks.com/install-virtualbox-on-ubuntu-linux/?expand_article=1|Install VirtualBox 7.0 on Ubuntu 22.04|20.04|18.04]] * [[https://www.skyminds.net/linux-installer-virtualbox-via-le-ppa-doracle/]] * [[https://linuxize.com/post/how-to-install-virtualbox-on-ubuntu-18-04/]] * [[https://phoenixnap.com/kb/install-virtualbox-on-ubuntu]] * [[https://www.numetopia.fr/installer-virtualbox-6-0-sur-ubuntu-ou-linux-mint/]] * [[https://www.linuxtechi.com/install-virtualbox6-ubuntu-18-04-centos-7/]] Installation testée en septembre 2023, via les commandes suivantes, adaptées de différentes sources : * indiquez le nom de la version Ubuntu lors de l'ajout de la source (repository) * remplacez le numéro 7.0 par une nouvelle version si existante sur virtualbox.org * remplacez la variable %%$%%USER par votre nom d'utilisateur Linux * ext pack : remplacer 7.0.10 en fonction de la version indiquée [[https://www.virtualbox.org/wiki/Downloads|ici]] sudo apt update && sudo apt upgrade -y && sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl sudo apt-get install build-essential dkms linux-source linux-headers-`uname -r` Pour Ubuntu 20.04 : echo deb [arch=amd64 signed-by=/usr/share/keyrings/virtualbox.gpg] http://download.virtualbox.org/virtualbox/debian focal contrib | sudo tee /etc/apt/sources.list.d/virtualbox.list curl -fSsL https://www.virtualbox.org/download/oracle_vbox_2016.asc | gpg --dearmor | sudo tee /usr/share/keyrings/virtualbox.gpg > /dev/null sudo apt-get update sudo apt-get install virtualbox-7.0 sudo usermod -G vboxusers -a $USER Pour le pack d'extension, il suffit de le télécharger, et de l'installer via le menu de virtualbox. ==== Mise à jour de VirtualBox ==== Si les sources sont identiques, et qu'il s'agit d'une mise à jour mineure, effectuer simplement : sudo apt upgrade Sinon, pour mettre à jour, simplement désinstaller, puis redéfinir des sources actualisées, puis réinstaller : Exécuter les commandes suivantes pour la désinstallation : sudo apt remove --purge virtualbox virtualbox-* sudo apt autoremove Redémarrer le système (sudo reboot, systemctl reboot). Définir ensuite les nouvelles sources si la version de Ubuntu est différente (mise à jour), puis : sudo apt update Ensuite reprendre l'installation. Lors du démarrage de VirtualBox, il est très probable qu'une nouvelle version du pack d'extension sera proposée. Suivre simplement les instructions, et chaîner cela à l'exécution de VirtualBox plutôt que de sauvegarder le pack d'extension. ===== Installation de VirtualBox sous Windows ===== * [[https://www.virtualbox.org/|Oracle VM VirtualBox]] * [[https://www.virtualbox.org/wiki/Downloads|Downloads – Oracle VM VirtualBox]] * [[https://pureinfotech.com/install-virtualbox-windows-10/|How to install VirtualBox on Windows 11, 10 - Pureinfotech]] * [[https://adamtheautomator.com/install-virtualbox-on-windows-10/|How to Install VirtualBox on Windows 10]] ===== Génération de clés SSH ===== L'[[http://doc.ubuntu-fr.org/ssh#authentification_par_un_systeme_de_cles_publiqueprivee|authentification par un système de clés publique/privée]] vous sera très utile pour gérer vos serveurs. Générez ces clés avec la commande suivante : ssh-keygen -t rsa Les clés publiques et privées sont stockées dans votre répertoire ~/.ssh. Les répertoires cachés (hidden) peuvent être visualisés dans votre gestionnaire de fichier (Nautilus, Nemo,...) en tapant ctrl-h. La clés privées ne doit JAMAIS être communiquée. Votre clé publique devra être placée dans le fichier ~/.ssh/authorized_keys des serveurs auxquels vous souhaitez accéder via la commande ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip_adress_or_dns_server (voir plus loin). Sous Windows, utiliser : * [[http://www.putty.org/|PuTTY]] pour communiquer en ligne de commande (client SSH), * [[https://winscp.net/eng/docs/introduction|WinSCP]] ou [[https://filezilla-project.org/|Filezilla]] pour accéder aux fichiers (clients SFTP); * [[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html|PuTTYgen]] pour générer les clés SSH Références : * [[http://the.earth.li/~sgtatham/putty/0.52/htmldoc/Chapter3.html#3.1.1]] (copier-coller sous PuTTY) * [[https://support.rackspace.com/how-to/generating-rsa-keys-with-ssh-puttygen/]] ===== Installation du serveur sous Ubuntu 22.04 ===== VM VirtualBox testée sur un PC sous Linux avec processeur i7. Le fonctionnement devrait être aussi OK sous Windows ou mac, et avec un processeur i5. Installation standard de Linux, Apache, MySQL, Php + outils. Base choisie : Ubuntu server. * [[http://www.ubuntu.com/download/server|téléchargement de Ubuntu server]] * Lancement de VirtuaBox et création d'une nouvelle machine virtuelle (VM). Par exemple : * Ubuntu-22.04.3_server (type Linux et version 64 bit) * 4096 Mo * 2 cpu * Disque dur virtuel (.vdi) 25 Go (dynamiquement alloué) * Ajustement (menu configuration) de quelques paramètres de la VM : * stockage : renseigner le fichier iso dans le lecteur CD/DVD virtuel * réseau : accès par pont (si problème avec wlan0, tester eth0) * Démarrer la VM. Le live-CD virtuel de Ubuntu propose le choix de la langue (prendre français) et la touche F3 permet de choisir le clavier (par exemple belge). Sélectionner "Installer Ubuntu Server". * Select a langage (choisir Français/French) * ("installer update available" → Update to the new installer) → option lors du test avec la 19.10 * Configurer le clavier (disposition belge/Belgian ou autre...) et variante éventuelle * Connections réseau → accepter la proposition détectée * Configurer le proxy → si c'est le cas, fournir l'adresse. Sinon "Terminé" * Configure Ubuntu archive mirror → modifier/indiquer si utile * Configuration du système de fichier → "Utiliser un disque entier" (option standard) * Choisir le disque où installer → disque virtuel proposé... * sommaire du système de fichier → "Terminé" + "Confirmer l'action" (à ce moment les données éventuellement existantes du disque virtuelle seront perdues * Configuration du profil : * nom complet de l'utilisateur (ex : Virtual User) * nom du serveur (ex : vmix) * nom d'utilisateur (ex : vmuser) * mot de passe (ex : vmuser_mdp) (CHOISISSEZ UN MOT DE PASSE SÛR) * confirmer le mot de passe * SSH Setup * cocher "Install OpenSSH server * (autres options non utilisées/modifiées) * Featured Server Snaps → "Terminé" sans en choisir, sauf en connaissance de cause * Fin d'installation et redémarrage du serveur (enlever ultérieurement le CD d'installation virtuel). * Le premier redémarrage permet de vérifier le login (user/mdp) et de relever l'IP du serveur par la commande "ip a" * mises à jour : * sudo apt-get update * sudo apt-get upgrade * redémarrage : sudo reboot * arrêt : sudo halt * sauvegarde de la VM par exportation * Connexion à partir d'une autre machine : ssh vmuser@ip_adress (remplacer ip_adress par la valeur relevée) * Clé SSH * générer sur le PC connecté une paire de clés privée/publique si non disponible (ex : ssh-keygen -o -b 4096 -t rsa) * copier la clé publique sur le serveur * ssh-copy-id -i ~/.ssh/id_rsa.pub vmuser@ip_adress * tester la connexion qui doit fonctionner sans mdp : ssh vmuser@ip_adress Problème réseau : pour forcer le dhcp, utiliser les commandes "sudo ip link set dev eth0 down" et "sudo dhclient eth0" //cf.// [[https://help.ubuntu.com/community/NetworkConfigurationCommandLine/Automatic|ici]]. Cette action doit être refaite chaque fois que l'IP n'est pas attribuée. ==== Création d'un compte admin de secours ==== * cat /etc/passwd → donne la liste des utilisateurs existants * sudo adduser rescue * (pwd : mdp_rescue) * sudo usermod -a -G sudo rescue ==== Serveur LAMP ==== * Références * [[https://doc.ubuntu-fr.org/lamp|Serveur web - LAMP]], acronyme pour Linux, Apache, MySQL|MariaDB, PHP (description globale) * [[https://phoenixnap.com/kb/how-to-install-lamp-stack-on-ubuntu]] * [[https://doc.ubuntu-fr.org/apache2]] configuration de Apache 2 (serveur web) * Serveur de base de données SGBD : soit MySQL, soit MariaDB, version alternative, sous licence GPL et 100% compatible avec MySQL * [[https://doc.ubuntu-fr.org/mysql]] configuration de MySQL * [[https://doc.ubuntu-fr.org/mariadb]] configuration de MariaDB * [[https://doc.ubuntu-fr.org/phpmyadmin]] phpMyAdmin est une interface web en PHP pour administrer à distance les SGBD MySQL * [[https://doc.ubuntu-fr.org/msmtp]] envoi d'emails par SMTP : solution idéale si vous avez besoin que votre serveur vous envoie les courriels de notifications sans avoir à mettre en place une solution lourde. * **sudo apt install apache2** * sudo apt install lynx → test dans ce navigateur texte dans une console sur le serveur [[http://127.0.0.1]] * test du serveur apache à partir d'un autre PC : [[http://ip_adress]] (serveur de pages web statiques) * **sudo apt install php libapache2-mod-php php-cli** * **sudo nano /var/www/html/phpinfo.php et ajouter ** comme seule ligne à ce fichier. Sauver et test dans un navigateur : [[http://ip_adress/phpinfo.php]] * La configuration de PHP se fait via un fichier php.ini localisé sous Jammy Jellyfish 22.04 ici : /etc/php/8.1/apache2/php.ini (7.2 pour Bionic Ubuntu 18.04) * Paquets PHP souvent utiles (des modules additionnels pourront être installés en fonction des logiciels installés sur le serveur ainsi que leurs extensions/plugins) : * **sudo apt install php-curl php-gd php-intl php-json php-mbstring php-xml php-zip** * Remarques * **php-mcrypt a été enlevé depuis php 7.2** (pour persister, voir [[https://computingforgeeks.com/install-php-mcrypt-extension-on-ubuntu/|ici]]) * [[https://doc.ubuntu-fr.org/tutoriel/lamp_repertoires_de_travail|Serveur LAMP - Créer un/des répertoires de travail]] + intérêt d'ajouter l'utilisateur au groupe www-data + [[https://www.cyberciti.biz/faq/ubuntu-add-user-to-group-www-data/|lien2]] * [[https://askubuntu.com/questions/1115979/apache-permissions-to-allow-both-user-and-web-server-to-edit-var-www]] * ajouter l'utilisateur vmuser au groupe www-data : **sudo usermod -a -G www-data vmuser** * **Un CMS sans base de données comme DokuWiki ne nécessite pas l'installation d'un SGBD (MySQL/MariaDB) comme expliqué ci-après !** * redémarrer néanmoins apache2 : sudo systemctl restart apache2 * sudo apt install php-mysql * installation soit de MySQL, soit de MariaDB (pour l'essentiel, suivre la documentation de MySQL) * sudo apt install mysql-server * **sudo apt install mariadb-server** * Test local de MySQL : * sudo mysql * SHOW DATABASES * Remarque : mysql_secure_installation (renseigné dans certains tutoriels) ne doit pas être utilisé * sudo service apache2 restart (restart Apache) ou sudo systemctl restart apache2 * Pour avoir un accès global aux bases de données depuis un même compte, la solution conseillée est de créer un nouvel utilisateur et de lui attribuer tous les privilèges : * sudo mysql → Puis dans la console MySQL : * CREATE USER 'nom_utilisateur_choisi'@'localhost' IDENTIFIED BY 'mot_de_passe_solide'; * GRANT ALL PRIVILEGES ON *.* TO 'nom_utilisateur_choisi'@'localhost' WITH GRANT OPTION; * FLUSH PRIVILEGES; * QUIT; * En remplaçant évidemment nom_utilisateur_choisi et mot_de_passe_solide dans ces requêtes * sudo service apache2 restart **ou** sudo systemctl restart apache2 * sudo service mysql restart **ou** sudo systemctl restart mysql ==== Adminer ==== * [[https://www.adminer.org/|Adminer]] remplace PhpMyAdmin * [[https://kinsta.com/fr/blog/adminer/|Comment utiliser Adminer pour gérer facilement les bases de données avec un seul fichier PHP]] * [[https://linuxconfig.org/using-adminer-to-manage-your-databases|Using Adminer to Manage your Databases - LinuxConfig.org]] * [[https://idroot.us/install-adminer-ubuntu-20-04/|How To Install Adminer on Ubuntu 20.04 LTS - idroot]] * [[https://www.linuxhowto.net/how-to-install-adminer-on-ubuntu-20-04-lts/|How to install Adminer on Ubuntu 20.04 LTS – linuxhowto.net]] * références adminer plus anciennes : * [[http://www.ubuntuboss.com/how-to-install-adminer-on-ubuntu-18-04/]] * [[https://websiteforstudents.com/manage-mariadb-mysql-databases-with-adminer-and-apache2/]] * [[https://idroot.us/install-adminer-ubuntu-18-04/]] * Installation : * sudo apt-get install adminer **ou mieux, utiliser la version la plus récente sur le site :** * sudo wget "http://www.adminer.org/latest.php" -O /var/www/html/adminer.php * Access Adminer at the following address : [[http://ip_adress/adminer.php]] ==== PhpMyAdmin (obsolete sous 20.04, ok en 18.04) ==== * Conservé pour mémoire et usage sous Ubuntu 18.04 * Poursuivre l'utilisation de phpmyadmin est possible, en respectant le nouveau mode d'identification du root de MySQL en sudo * [[https://doc.ubuntu-fr.org/phpmyadmin|phpMyAdmin]] (**déconseillé pour un site en production sans mesures de sécurité additionnelles comme .htaccess,...**) + références phpmyadmin/bionic * [[https://www.tecmint.com/install-lamp-with-phpmyadmin-in-ubuntu-18-04/|How to Install LAMP Stack with PhpMyAdmin in Ubuntu 18.04]] * [[https://www.osradar.com/how-to-install-the-latest-phpmyadmin-on-ubuntu-18-04/|How to install the latest PhpMyAdmin on Ubuntu 18.04? - OSRadar]] * [[https://www.itsmarttricks.com/install-lamp-stack-with-phpmyadmin-in-ubuntu-18-04-1/|How to Install LAMP Stack with PhpMyAdmin in Ubuntu 18.04.1 LTS]] * [[https://www.techrepublic.com/article/how-to-install-phpmyadmin-on-ubuntu-18-04/|How to install phpMyAdmin on Ubuntu 18.04 - TechRepublic]] * [[https://www.ostechnix.com/install-phpmyadmin-with-lamp-stack-on-ubuntu-18-04-lts/|Install phpMyAdmin With LAMP Stack On Ubuntu 18.04 LTS - OSTechNix]] * [[https://devanswers.co/installing-phpmyadmin-apache-ubuntu-18-04/|Installing phpMyAdmin for Apache on Ubuntu 18.04 | DevAnswers.co]] * sudo apt install phpmyadmin * outil de configuration * serveur web : apache2 * accepter la création d'une DB pour phpmyadmin (refuser autrement) * Faut-il configurer la DB avec dbconfig-common ? → * mot de passe de connexion MySQL pour phpmyadmin : phpmyadmin_mdp (CHOISISSEZ UN MOT DE PASSE SÛR) * Tester [[http://ip_adress/phpmyadmin]] * utilisateur : phpmyadmin - mdp : phpmyadmin_mdp * superutilisateur mysql/mariadb : 'nom_utilisateur_choisi' - mdp : 'mot_de_passe_solide' ==== Compléments d'installation du serveur ==== === Envoi d'emails (par exemple par DokuWiki) === * [[https://doc.ubuntu-fr.org/lamp#envoi_de_courriel]] * [[https://doc.ubuntu-fr.org/msmtp]] * sudo apt install msmtp msmtp-mta * Configuration pour l'envoi de courriels au niveau du système : sudo nano /etc/msmtprc * vérification (doc.ubuntu-fr) ls -la /usr/sbin/sendmail * test : echo 'message' | msmtp user@domain.com problème * [[https://forum.ubuntu-fr.org/viewtopic.php?id=2057384]] ?? Effacer le nom d'utilisateur et le mot de passe si le serveur est diffusé, et/ou rendre invalide le compte par défaut de msmtp pour éviter des envois erronés vers le serveur d'email !! === Configuration de Apache2 === * installer le module "rewrite" [[http://doc.ubuntu-fr.org/apache2]] * sudo a2enmod rewrite * sudo systemctl restart apache2 === non fait : === * Paquets : * (sudo apt-get install php-pear php-dev) → non fait * (sudo apt-get install unison) → non fait * (sudo apt-get install texlive-latex-base imagemagick ghostscript) → non fait * (sudo apt-get install graphviz graphviz-doc) → non fait * (sudo apt-get install gnuplot) → non fait (nécessaire pour l'extension dataplot) * autres paquets * cairo ?? * configuration ssl (https, certificats,...) [[https://doc.ubuntu-fr.org/tutoriel/securiser_apache2_avec_ssl]] ==== Migration, mise à jour du serveur... ==== Message d'erreur sur sudo do-release-update "There is no development version of an LTS available" → attendre (The -d switch is necessary to upgrade from Ubuntu 18.04 LTS as upgrades have not yet been enabled and will only be enabled after the first point release of 20.04 LTS) [[https://wiki.ubuntu.com/FocalFossa/ReleaseNotes#Upgrading_from_Ubuntu_18.04_LTS_or_19.10]] bizarre par rapport aux sorties 20.04.1 répertoriées sur [[https://releases.ubuntu.com/20.04/]] !!) * Régulièrement : * sudo apt-get update * sudo apt-get upgrade * Automatisation d'upgrade de sécurité (et autres) : unattended-upgrade * [[https://www.cyberciti.biz/faq/how-to-set-up-automatic-updates-for-ubuntu-linux-18-04/|How to set up automatic updates for Ubuntu Linux 18.04]] * [[https://guide.ubuntu-fr.org/server/automatic-updates.html]] * Mise à niveau de l'OS (par exemple Ubuntu server 20.04.1): * faire un backup du serveur ou de la VM (snapshot) * sudo apt-get update * sudo apt-get upgrade * sudo reboot * Installer l'outil Ubuntu d'update : sudo apt install update-manager-core * sudo do-release-upgrade * sudo reboot * vérifier la mise à niveau. Revenir en arrière si problème, refaire une sauvegarde/snapshot * Références : * [[https://webdock.io/en/docs/how-guides/upgrading-webdock-webservers]] * [[https://www.cyberciti.biz/faq/upgrade-ubuntu-18-04-to-20-04-lts-using-command-line/]] ===== Installation et gestion de logiciels sur un serveur LAMP ===== * [[wp>fr:Système_de_gestion_de_contenu|Système de gestion de contenus]] ou [[wp>Content_management_system|Content management system]] (CMS) * [[dokuwiki|DokuWiki]] * [[moodle|Moodle]] * [[h5p|H5P]] * Wordpress * limesurvey * ... ===== Virtualisation et containers sur le serveur ===== * [[https://fr.wikipedia.org/wiki/Proxmox_VE]] * [[https://fr.wikipedia.org/wiki/LXC]] * [[https://medium.com/geekculture/stop-using-virtual-box-on-linux-51e02739f812|Stop using Virtual Box on Linux - Use Virtual Machine Manager instead of Virtual Box]] Dre Tech Tips, Medium, 05/04/2022