floss:server_lamp_install

Installation d'un serveur LAMP

Le serveur sera installé dans une machine virtuelle (invitée) sous VirtualBox, avec la configuration de deux CMS (Wordpress et Dokuwiki) et d'outils pour la gestion de groupes de personnes ayant différents rôles :

Pour les “novices” ou peu habitués de la ligne de commande, le serveur fonctionne uniquement dans ce mode, soit dans sa console, soit via ssh qui ouvre un terminal à partir d'un poste distant (sur la machine hôte par exemple). Les copier-coller fonctionne, mais avec la touche “shift” en plus : shift-ctrl-c pour copier, shift-ctrl-v pour coller.

Suggestion : une fois le serveur installé, n'utilisez la console dans la machine invitée que pour vous authentifier, exécuter la commande 'ip a' pour connaître l'IP et arrêter la machine. OpenSSH étant installé, il vous sera beaucoup plus facile de la contrôler à distance, tout comme vous le feriez pour un serveur dédié dans un datacenter payant.

Pour les noms d'utilisateurs et mots de passe utilisés sur vos serveurs, évitez l'utilisation de noms d'utilisateur et mots de passe personnels.

Pour installer la version la plus récente, suivre les instructions de la page https://www.skyminds.net/linux-installer-virtualbox-via-le-ppa-doracle/ :

sudo apt-get install build-essential dkms linux-source linux-headers-`uname -r`
echo "deb http://download.virtualbox.org/virtualbox/debian `lsb_release -sc` contrib" | sudo tee -a /etc/apt/sources.list.d/virtualbox.list && wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add - && sudo apt-get update && sudo apt-get install virtualbox-5.1

(remplacer 5.2 par une nouvelle version si existante sur virtualbox.org)

sudo usermod -G vboxusers -a $USER

(remplacez la dernière variable par votre nom d'utilisateur Linux).

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

Adapter le numéro de version

sudo dpkg -l | grep virtualbox
sudo apt-get purge virtualbox-5.1

L'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) 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 (voir plus loin).

Sous Windows, utiliser :
  • PuTTY pour communiquer en ligne de commande (client SSH),
  • WinSCP ou Filezilla pour accéder aux fichiers (clients SFTP);
  • PuTTYgen pour générer les clés SSH

Références :

Installation standard de Linux, Apache, MySQL, Php + outils. Base choisie : Ubuntu server

  • Lancement de VirtuaBox et création d'une nouvelle machine virtuelle (VM). Par exemple :
    • Ubuntu-18.04.1_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 French)
    • Choix de votre situation géographique (Belgique, ou ailleurs…)
    • Configurer le clavier (disposition belge ou autre…) et variante éventuelle
  • Renseigner des paramètres :
    • nom de la machine (ex : vmix)
    • nom complet de l'utilisateur (ex : Virtual User)
    • nom d'utilisateur (ex : vmuser)
    • mot de passe (ex : vmuser_mdp) (CHOISISSEZ UN MOT DE PASSE SÛR)
    • choisir de chiffrer ou non, renseigner la timezone
    • partitionnement : choisir “assisté, utiliser un disque entier”
    • appliquer les changements sur les disques (virtuels)
    • renseigner si nécessaire un serveur mandataire (proxy)
    • choisir “Installer les mises à jour de sécurité automatiquement”
    • Sélection de logiciels à installer (utiliser la barre d'espacement pour sélectionner et les flèches haut-bas pour se déplacer)
      • openSSH server
      • LAMP server (à moins d'installer séparément après)
    • Définir un mot de passe superutilisateur de MySQL (ex : vmmysqladmin)
    • installer GRUB sur le secteur d'amorçage
    • Fin d'installation et redémarrage du serveur (enlever ultérieurement le CD d'installation virtuel). Vérifier votre login (user/mdp) et relevez l'IP du serveur par la commande “ip a”
    • mises à jour :
      • sudo apt-get upgrade
      • sudo apt-get update
    • redémarrage : sudo reboot
Problème réseau : pour forcer le dhcp, utiliser les commandes “sudo ip link set dev eth0 down” et “sudo dhclient eth0” cf. ici. Cette action doit être refaite chaque fois que l'IP n'est pas attribuée.
  • Tentez de vous connecter à votre serveur vituel via ssh à partir de votre machine hôte pas la commande “ssh vmuser@ip” ou ip est l'adresse ip de votre serveur virtuel (machine invitée). Vous pouvez aussi connecter le système de fichier virtuel via votre navigateur de fichier.
  • création d'un utilisateur administrateur “de secours” : sudo adduser rescueadmin suivi de sudo usermod -a -G sudo rescueadmin
  • à partir d'une autre machine sous Linux, ajout de la clé publique SSH : “ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<ipaddress>”
    • ajout de la clé publique sous Windows : FIXME
  • test du serveur web (apache) : tapez “http://ip/” dans un navigateur

php

  • test de php : sudo nano /var/www/html/phpinfo.php et ajouter <?php phpinfo(); ?> comme seule ligne à ce fichier. Sauver et test dans un navigateur : http://ip/phpinfo.php
  • fichier de configuration de php dans /etc/php5/apache2/php.ini FIXME
  • Installation complémentaire (utilité incertaine par rapport à l'installation standard)
    sudo apt-get install php libapache2-mod-php php-pear php-gd php-mcrypt php-curl php-dev php-zip php-mysql php-xml
  • Ensuite : sudo service apache2 restart

FIXME (cf ref comme ceci) oucela

Groupe www-data

ajouter vmuser au groupe www-data :

sudo usermod -a -G www-data vmuser

phpmyadmin

Gestion via interface web des base de données :

sudo apt-get install phpmyadmin

SI ré-installation :

sudo dpkg-reconfigure phpmyadmin

(choisir le serveur web à reconfigurer : apache2)

  • le mot de passe superutilisateur de MySQL sera demandé (vmmysqladmin par exemple)
  • user : phpmyadmin
  • mot de passe de connexion : vmuser_phpmyadmin_mdp
  • mise à jour du fichier de configuration
    • sudo nano /etc/apache2/apache2.conf
    • ajouter à la fin la ligne “Include /etc/phpmyadmin/apache.conf”
    • sauvegarder, quitter nano
    • sudo service apache2 restart

Référence utilisée : Documentation officielle de FusionDirectory, admin_installation

cf aussi (?) https://www.morot.fr/installation-de-fusiondirectory-depuis-les-sources-sous-ubuntu-14-04/

    • Vérification du FQDN
      • “cat /etc/hostname” pour vérifier le hostname (vmix)
      • “cat /etc/hosts” pour vérifier le FQDN. Pour modifier, éditer le fichier (cf ref) pour que les premières lignes soient par exemple :
127.0.0.1 localhost.localdomain localhost
127.0.1.1 vm.be vmix
  • sudo apt-get install slapd (mot de passe de l'administrateur ldap : adminopenldap)
  • sudo apt-get install ldap-utils
  • sudo dpkg-reconfigure slapd
    • omettre la configuration… –> No
    • base DN : vm.be
    • nom de l'organisation : vm
    • mdp = adminvmbe
    • module HDB
    • Faut-il supprimer la base de données à la purge du paquet ? –> No
    • déplacer l'ancienne base de données ? –> yes
    • Faut-il autoriser le protocole LDAPv2 ? –> No
  • sudo /etc/init.d/slapd status → slapd is running
    • sinon : “sudo /etc/init.d/slapd start”
  • Ubuntu 14.04 : il manque un paquet en dépôt. Télécharger http://ftp.ubuntu.com/ubuntu/pool/universe/s/smarty-gettext/smarty-gettext_1.1.0-1_all.deb sur le serveur, et installer via “sudo dpkg -i smarty-gettext_1.1.0-1_all.deb”
  • pour y arriver, il faut éventuellement faire ceci :
    • sudo apt install smarty3 gettext
    • sudo apt-get -f install
  • Ubuntu 14.04 : il est nécessaire d'installer le paquet php5-imap : “sudo apt-get install php5-imap”
  • activer avec “sudo php5enmod imap”
  • relancer apache : “sudo /etc/init.d/apache2 restart”
  • Ubuntu 14.04 : ajouter des dépôts via “sudo nano /etc/apt/sources.list”
# fusiondirectory repository
deb http://repos.fusiondirectory.org/debian-jessie jessie main
# fusiondirectory debian-extra repository
deb http://repos.fusiondirectory.org/debian-extra stable main
  • sudo apt update
  • apt-cache search fusiondirectory | more
  • gpg –keyserver keys.gnupg.net –recv-key 62B4981F
  • gpg –export -a “Fusiondirectory Archive Manager contact@fusiondirectory.org” > FD-archive-key
  • sudo apt-key add FD-archive-key (par rapport à la doc : !!! ajouter sudo !!!)
  • sudo apt-get install fusiondirectory-schema schema2ldif
  • sudo fusiondirectory-insert-schema
  • sudo fusiondirectory-insert-schema -l
  • aptitude search fusiondirectory-plugin
  • sudo aptitude install fusiondirectory-plugin-systems fusiondirectory-plugin-systems-schema
  • sudo fusiondirectory-insert-schema -i /etc/ldap/schema/fusiondirectory/systems-fd.schema /etc/ldap/schema/fusiondirectory/systems-fd-conf.schema
  • sudo apt-get install fusiondirectory
  • suivre les instructions de la page web pour installer un fichier : “echo -n rohnfpdec99himh1d2osf2gsr6 > /var/cache/fusiondirectory/fusiondirectory.auth”
  • next
  • Sélectionner le langage (french)
  • Vérification de php
    • ajout : sudo apt install php-mdb2
  • next
  • Paramètres de connexion :
    • DN : cn=admin pwd = adminvmbe
En cas de problème, pensez à redémarrer la machine virtuelle !
  • Step 5 : Schema checking of LDAP directory
Si erreur “Schema check failed”, l'insertion de schéma peut être à refaire via “sudo fusiondirectory-insert-schema”
  • Step 6 : Generic settings
  • Step 7 : Customization of special parameters (timezone à changer)
  • Step 8 : Tweaking of some core behaviour
  • LDAP inspection
    • migrate
    • admin avec pwd : fd-admin fd-admin_mdp
    • migrate
    • refaire “check again”
  • Finish - write the configuration file
    • télécharger fusiondirectory.conf et le placer dans /etc/fusiondirectory/ Pour cela, on peut le placer temporairement dans /home/vmuser ensuite “sudo cp fusiondirectory.conf /etc/fusiondirectory/”
    • sudo fusiondirectory-setup –check-config
    • Checking FusionDirectory's config file
    • /etc/fusiondirectory/fusiondirectory.conf exists…
    • /etc/fusiondirectory/fusiondirectory.conf is not set properly, do you want to fix it ?: [Yes/No]?
    • yes
    • sudo fusiondirectory-setup –check-config
    • Rights on /etc/fusiondirectory/fusiondirectory.conf are correct :
      • -rw-r—– 1 root www-data 1170 Jun 25 08:09 fusiondirectory.conf
  • Ecran de logon avec fd-admin !!

sudo fusiondirectory-setup –check-config → Checking FusionDirectory's config file

  • accéder à http://ip/phpmyadmin et s'authentifier avec le code superutilisateur (user=root, pwd=vmmysqladmin)
  • activer l'onglet “Utilisateurs”, cliquer sur “Ajouter un utilisateur”
  • dans le champ suivant “Entrez une valeur:”, tapez “wordpress” (un bon choix)
  • dans le champ client, optez pour “local” et la valeur “localhost”
  • pour le mot de passe, choisissez “Entrez une valeur:”, tapez “mdp_wp” (remplacez par un bon mot de passe)
  • cochez la case “Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base”
  • en bas de la page, cliquez sur “Exécuter”. La DB de wordpress est créée ! vous pouvez quitter phpmyadmin.
  • on peut se placer dans un répertoire temporaire : “mkdir tempo”, “cd tempo”
  • wget http://wordpress.org/latest.tar.gz (téléchargement de la dernière version)
  • tar -xzvf latest.tar.gz (décompression de l'archive)
  • mv wordpress blog (on renomme wordpress en blog, par exemple)
  • On rentre dans le répertoire : “cd blog”
  • on crée le fichier de configuration à partir de l'exemple fourni : “cp wp-config-sample.php wp-config.php”
  • on édite le fichier de configuration wordpress configuration : nano wp-config.php
  • dans la section suivante, remplacez 'database_name_here' par 'wordpress', 'username_here' par 'wordpress' et 'password_here' par 'mdp_wp' comme définis lors de la création de la DB. Sauvez et quittez l'éditeur nano
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');

/** MySQL database username */
define('DB_USER', 'username_here');

/** MySQL database password */
define('DB_PASSWORD', 'password_here');

FIXME : il faut aussi générer des clés de salage avec ce générateur et les placer dans le fichier wp-config.php !

  • cd ..
  • sudo mv blog /var/www/html
  • cd /var/www/html
  • changement de propriétaire et groupe vers www-data : “sudo chown -R www-data:www-data /var/www/html/blog”
  • “cd /var/www/html/blog” puis changement des droits d'accès
    • fichiers : sudo find . ! -type d -exec chmod 660 {} \;
    • répertoires : sudo find . -type d -exec chmod 770 {} \;
  • N.B. : les propriétaire et groupe ont tout, le reste du monde rien. D'autres utilisent 644 et 755 : tout au propriétaire et tout sauf l'écriture au groupe et au reste du monde. Dans des cas spécifiques où l'utilisateur n'a pas les droits d'administration, des fichiers peuvent avoir comme propriétaire l'utilisateur, mais www-data comme groupe. il est nécessaire de maintenir le groupe pour les créations en utilisant les guid (set guid actif). Utiliser alors 0660 et 2770 plutôt que 660 et 770.
  • dans un navigateur : “http://ip/blog/wp-admin/install.php
  • choisissez la langue d'installation
  • Donnez un titre à votre blog, un identifiant administrateur (vous en créerez un autre comme simple utilisateur ou éditeur,…) et un identifiant, ainsi qu'une adresse de messagerie
  • exécutez l'installation et connectez-vous ensuite. Vous arrivez dans le tableau de bord de votre site WordPress installé !
  • Si l'IP de la VM change, il est nécessaire de modifier 2 paramètres de Worpress via phpmyadmin : WP_HOME et WP_SITEURL.

Installation de Dokuwiki (https://www.dokuwiki.org/install:upgrade) :

  • serveur LAMP installé
  • accès ssh (y compris clés)
  • noms et localisations connus des fichiers de configurations, répertoires et fichiers des sites, bases de données (avec noms d'utilisateurs et mots de passe)
  • un autre serveur accessible pour le backup distant (remote server)

À partir du répertoire home de l'utilisateur administrateur, créer un répertoire backups, un script (vide) backup.sh et une répertoire pour les fichiers files :

mkdir backups
cd backups
touch -a backup.sh
chmod u+x backup.sh
mkdir files
#!/bin/sh

THESITE=""
THEDB="wordpress"
THEDBUSER="wordpress"
THEDBPW="mdp_wp"
THEDATE=`date +%F-%T`

# backup de la base de données
mysqldump -u $THEDBUSER -p${THEDBPW} $THEDB | gzip > ~/${THESITE}backups/files/dbbackup_${THEDB}_${THEDATE}.bak.gz

# backup des fichiers du site
tar -czf ~/${THESITE}backups/files/sitebackup_${THESITE}_${THEDATE}.tar.gz /var/www/${THESITE}

# éliminer les fichier vieux de plus de 5 jours
find /backups/files/site* -mtime +5 -exec rm {} \;
find /backups/files/db* -mtime +5 -exec rm {} \;
  • Il s'agit de mettre le script backup.sh rendu exécutable dans le cron : utiliser la commande d'édition du cron (tâches automatiques) "crontab -e", vous pouvez par exemple démarrer la sauvegarde chaque jour à 04h25 par la ligne :
    • 25 4 * * * /home/username/backups/backup.sh 

En mode “push”, voici que qu'il faut ajouter au script :

# synchronisation par rsync (push)
rsync -a ~/backups/files user@machine_distante:/Path/To/Backup/offsite_backup_name

Mode “pull” : …

Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus
  • floss/server_lamp_install.txt
  • Dernière modification : 2022/07/21 18:43
  • de villersd