====== Configuration type d'un serveur sous Ubuntu 18.04 Bionic Beaver ======
* 06/01/2020 Ubuntu server 19.10 Eoan Ermine : [[http://releases.ubuntu.com/19.10/]] : [[http://releases.ubuntu.com/19.10/ubuntu-19.10-live-server-amd64.iso|64-bit PC (AMD64) server install image]] (utile pour l'intérêt des nouveautés, avec possibilité de mise à jour proche vers la 20.04 LTS)
* 09/07/2020 Ubuntu server 18.04.4 Bionic Beaver (**Long Term Support**) : [[https://ftp.belnet.be/ubuntu-releases/]]
* références, tutoriels,...
* [[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]]
===== Installation de VirtualBox sous Linux (Ubuntu) =====
* [[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://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/]]
* [[https://kifarunix.com/how-to-upgrade-virtualbox-5-2-to-virtualbox-6-0-on-ubuntu-16-04/]]
Installation testée en janvier 2020, 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 6.1 par une nouvelle version si existante sur virtualbox.org
* remplacez la variable %%$%%USER par votre nom d'utilisateur Linux
* ext pack : remplacer 6.1.0 en fonction de la version indiquée [[https://www.virtualbox.org/wiki/Downloads|ici]]
sudo apt-get install build-essential dkms linux-source linux-headers-`uname -r`
sudo add-apt-repository "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian bionic contrib"
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
sudo apt-get update
sudo apt-get install virtualbox-6.1
sudo usermod -G vboxusers -a $USER
wget https://download.virtualbox.org/virtualbox/6.1.0/Oracle_VM_VirtualBox_Extension_Pack-6.1.0.vbox-extpack
ou :
version=$(VBoxManage --version|cut -dr -f1|cut -d'_' -f1) && wget -c http://download.virtualbox.org/virtualbox/$version/Oracle_VM_VirtualBox_Extension_Pack-$version.vbox-extpack && VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-$version.vbox-extpack --replace && rm *.vbox-extpack
==== 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.
===== 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 18.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. Un test préalable avec la version 19.10 aboutit à des difficultés, donc à une balance coût/bénéfice peu intéressante.
* [[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-18.04_server (type Linux et version 64 bit)
* 2048 Mo
* Disque dur virtuel (.vdi) 10 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 upgrade
* sudo apt-get update
* 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**
* test du serveur apache : [[http://ip_adress]] (serveur de pages web statiques)
* **sudo apt install php libapache2-mod-php**
* **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 Bionic (Ubuntu 18.04) ici : /etc/php/7.2/apache2/php.ini
* 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
* [[https://www.adminer.org/|Adminer]] remplace phpmyadmin dans la version 19.10. Il semblerait qu'il y aura un retour à phpmyadmin avec la version 20.04. Poursuivre l'utilisation de phpmyadmin semble donc pertinent, en respectant le nouveau mode d'identification du root de MySQL en sudo
* [[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 !**
* 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
* [[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'
* Adminer (pour mémoire, remplacement possible de phpMyAdmin) :
* sudo apt-get install adminer **ou** 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]]
* références adminer :
* [[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/]]
==== 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
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 ??
==== Migration, mise à jour du serveur... ====
* Régulièrement :
* sudo apt-get update
* sudo apt-get upgrade
* Mise à niveau de l'OS (par exemple Ubuntu server 20.04.1):
* FIXME
* Références :
* [[https://webdock.io/en/docs/how-guides/upgrading-webdock-webservers]]
===== 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)
* Wordpress
* [[dokuwiki|DokuWiki]]
* ...