Installer Mandriva chez Gandi

De Wiki de la communauté Mandriva.

Devant installer un serveur Mandriva dans l'infrastructure cloud de Gandi, je stock ici les éléments afin d'en faire profiter les utilisateurs heureux de Mandriva
Les connaissances nécessaires :
  • savoir ouvrir une console, passer en mode super-utilisateur ou avoir installé l'outil sudo
  • savoir taper des commandes et des options courantes
  • avoir des notions d'anglais (très recommandé)


Sommaire

Création et migration du serveur (ancienne version=2008.1)

Il y a quelques astuces pour vous simplifier la vie. Je pars du principe que vous avez une machine linux sous la main pour mettre en place votre serveur et que vous savez utiliser une console ...

  1. Editez votre fichier hosts pour y ajouter l'adresse ip et le nom de votre serveur, ce sera plus simple pour se connecter
    • sudo vi /etc/hosts
    • # Ajouter une ligne
    adresse_ip mon_serveur
  2. Utilisez l'authentification à base de clé RSA, voir l'article Ssh, il n'y a pas besoin de taper son mot de passe chaque fois
  3. Lorsque vous re-démarrez votre serveur, il est bon de savoir quand il est opérationnel, pour cela lancer un
    • ping mon_serveur
    Lorsque vous avez des réponses, votre serveur est opérationnel ;-)
    • Ctrl+C pour sortir du ping
    • ssh mon_serveur pour se re-connecter


Création en 2008.1

Création du serveur chez Gandi en version 2008.1, je ne lui ai pas donné de disque pour le moment.

Connexion au serveur en ssh, login en "su -" et changement du password root (passwd)

# Avant de lancer la mise à jour, mise en place de l'authentification par cle RSA
# Si vous ne changez pas le mod du dossier, cela ne fonctionne pas !
ssh mon_serveur
mkdir .ssh ; chmod 700 .ssh ; exit

# Copie de la cle publique
cd ; scp .ssh/id_rsa.pub mon_serveur:.ssh/authorized_keys2 ; ssh mon_serveur

Mise à jour de notre 2008.1

# Mise à jour de la version 2008.1
su -
# Changement du mot de passe root
passwd
# Suppression des médias en gardant le média gandi (indispensable)
vi /etc/urpmi/urpmi.cfg

# Ajout des medias 2008.1 via http://easyurpmi.zarb.org/ au choix du ftp
urpmi.addmedia --distrib ftp://ftp.free.fr/mirrors/ftp.mandriva.com/MandrivaLinux/official/2008.1/i586
# Mise à jour
urpmi --auto --auto-update

# Ajout de sudo, des locales française, des pages de man et ajout de mon utilisateur à sudo
urpmi --auto sudo locales-fr man-pages-fr ;  visudo

# Afficher tous les messages en français
vi /etc/sysconfig/i18n

# Le fichier est vide, copiez/collez l'ensemble des lignes suivantes
LANG=fr_FR.UTF-8
LANGUAGE=fr_FR.UTF-8:fr
LC_ADDRESS=fr_FR.UTF-8
LC_COLLATE=fr_FR.UTF-8
LC_CTYPE=fr_FR.UTF-8
LC_IDENTIFICATION=fr_FR.UTF-8
LC_MEASUREMENT=fr_FR.UTF-8
LC_MESSAGES=fr_FR.UTF-8
LC_MONETARY=fr_FR.UTF-8
LC_NAME=fr_FR.UTF-8
LC_NUMERIC=fr_FR.UTF-8
LC_PAPER=fr_FR.UTF-8
LC_TELEPHONE=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
SYSFONT=lat0-16

# Reboot de la machine
reboot

Pour savoir quand vous pourrez vous re-connectez, il suffit d'un "ping mon_serveur" et d'attendre que votre serveur réponde ;-)

Mise à jour vers 2009.0

# Il y a un pb avec la mise à jour futur du paquet rootcerts
sudo rm -rf /etc/ssl/certs

# Changement de liste de paquets
sudo vi /etc/urpmi/urpmi.cfg
sudo urpmi.addmedia --distrib ftp://ftp.free.fr/mirrors/ftp.mandriva.com/MandrivaLinux/official/2009.0/i586
sudo urpmi --auto --auto-update

# Trouver les nouveau fichiers de configuration
sudo find /etc -name "*rpmnew"

# Si besoin de comparer utilisez diff, comme par exemple
sudo diff /etc/ssh/sshd_config.rpmnew /etc/ssh/sshd_config

## Acceptation de tous les changements sauf UN
sudo mv /etc/ssh/sshd_config /etc/ssh/sshd_config-2008.1 ; sudo mv /etc/ssh/sshd_config.rpmnew /etc/ssh/sshd_config
sudo mv /etc/login.defs /etc/login.defs-2008.1 ; sudo mv /etc/login.defs.rpmnew /etc/login.defs 
sudo mv /etc/securetty /etc/securetty-2008.1 ; sudo mv /etc/securetty.rpmnew /etc/securetty
sudo mv /etc/services /etc/services-2008.1 ; sudo mv /etc/services.rpmnew /etc/services
sudo mv /etc/sysctl.conf /etc/sysctl.conf-2008.1 ; sudo mv /etc/sysctl.conf.rpmnew /etc/sysctl.conf

# Ne pas toucher au fichier des groupes
sudo mv /etc/group.rpmnew /etc/group-2009.0

# Relancer le serveur
sudo reboot


Mise à jour vers 2009.1

# Changement de la liste des paquets
sudo vi /etc/urpmi/urpmi.cfg
sudo urpmi.addmedia --distrib ftp://ftp.free.fr/mirrors/ftp.mandriva.com/MandrivaLinux/official/2009.1/i586
sudo urpmi --auto --auto-update

# Trouver les nouveau fichiers de configuration
sudo find /etc -name "*rpmnew"
sudo mv /etc/group.rpmnew /etc/group-2009.1

# Mise à l'heure française de notre serveur, ce n'est pas utile de le mettre à l'heure par NTP, c'est le serveur XEN qui est à l'heure !
sudo rm /etc/localtime ; sudo ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime

# reboot
sudo reboot
# Vérifiez la date et l'heure de votre serveur
date

# Il arrive qu'il ne soit pas à l'heure, pourquoi ? Je ne sais !
# Une solution à l'aide des paquets NTP donnée par Rudy du support technique Gandi :
sudo urpmi --auto ntp
sudo sysctl -w xen.independent_wallclock=1
sudo ntpdate ntp.gandi.net
sudo sysctl -w xen.independent_wallclock=1

# Contrôle du résultat (Nickel, merci Rudy !)
date
# Une fois que votre serveur est à l'heure, vérifiez son nom
# Nom FQDN (Fully Qualified Domain Name)
hostname -f
# Nom de votre machine
hostname -a

# Si vous n'obtenez pas mon_serveur.mon_domaine.tld' à la première question
# et mon_serveur à la seconde, il faut faire quelques chose

# Editez le fichier de configuration de votre réseau et la table des hosts
sudo vi /etc/sysconfig/network

# Il faut ces deux lignes, remplacez mon_xx par vos valeurs
HOSTNAME=mon_serveur
DOMAINNAME=mon_domaine.tld

# Vérifiez que votre fichier hosts est correct
sudo vi /etc/hosts

# Vous devriez trouver ce pavé (w.x.y.z étant l'adresse IP de votre serveur)
# --- Gandi DHCP Script ---
w.x.y.z mon_serveur.mon_domaine.tld mon_serveur
# --- End ---

# Si ce n'est pas le cas faites la correction nécessaire

# Relancez le test et vérifiez que vous avez bien positionné le reverse DNS dans l'interface de Gandi
hostname -f ; hostname -a

Mise à jour vers 2000.0

A ce jour 27 avril 2010 à 19:58 (UTC) et après contact avec le support technique de Gandi, il ne faut pas mettre à jour vers 2010.0, en effet la gestion des périphériques ayant changée, il faut faire une mise à jour du kernel ! Si cette mise à jour n'est pas faite, gros pb au re-démarrage ... Voir plus loin ! D'après mon interlocuteur, Mandriva 2010.0 arrivera nativement à la fin du mois de mai 2010.

# Migration vers la 2010.0
sudo vi /etc/urpmi/urpmi.cfg
sudo urpmi.addmedia --distrib ftp://ftp.free.fr/mirrors/ftp.mandriva.com/MandrivaLinux/official/2010.0/i586
sudo urpmi.addmedia --distrib ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2010.0/i586
sudo urpmi --auto --auto-update

# Il a des choix à faire, je prends le choix 1 par défaut !
# Paquets orphelins :
sudo urpme --auto-orphans

# Trouver les nouveau fichiers de configuration
sudo find /etc -name "*rpmnew"
# Pas de nouveau fichiers 

# reboot
sudo reboot

# Impossible de se connecter sur le port 22
# Arret de la machine par l'interface et relance, toujours pas de connection sur le port 22 !
# Accès par la console GANDI

La solution ici : http://www.linuxquestions.org/questions/linux-networking-3/sshd-fatal-daemon-failed-no-such-device-279664/

# Suppression du fichier 
sudo rm /dev/null
# Recréation du device /null
sudo mknod /dev/null c 1 3 ; sudo chmod a+w /dev/null
# Relancer le service et vérifier que cela fonctionne
sudo service sshd restart ;  sudo service sshd status


Création et migration du serveur (nouvelle version=2010.0)

Pre-requit

Gestion du DNS

Vous êtes chez Gandi, donc vous avez certainement réserver un domaine.

  1. Il faut ajouter un enregistrement de type A avec son nom de serveur, et l'adresse IP dans l'interface de votre domaine.
  2. Il faut mettre en place le reverse DNS : cliquer sur l'adresse IP v4 dans le gestionnaire des interfaces Gandi et saisir le nom complet de votre serveur.

Sur son ordinateur de bureau

  1. Editez votre fichier hosts pour y ajouter l'adresse ip et le nom de votre serveur, ce sera plus simple pour se connecter
    • sudo vim /etc/hosts
    • # Ajouter une ligne
    adresse_ip mon_serveur
  2. Utilisez l'authentification à base de clé RSA, voir l'article Ssh, il n'y a pas besoin de taper son mot de passe chaque fois
    Petit memento des commandes à passer :
    • ssh mon_serveur
    • mkdir .ssh ; chmod 700 .ssh ; exit
    • scp ~/.ssh/id_dsa.pub mon_serveur:.ssh/authorized_keys ; ssh mon_serveur

Astuce pour connaître l'état de son serveur

Lorsque vous re-démarrez votre serveur, il est bon de savoir quand il est opérationnel, pour cela lancer un

  • ping mon_serveur
Lorsque vous avez des réponses, votre serveur est opérationnel ;-)
  • Ctrl+C pour sortir du ping
  • ssh mon_serveur pour se re-connecter

Création en 2010.0

Création du serveur chez Gandi en version 2010.0, je ne lui ai pas donné de disque pour le moment.

# Se mettre en super user
su -
# Je supprime tous les médias sauf celui de gandi (102 dd)
vim /etc/urpmi/urpmi.cfg
# Ajout des medias 2010.0 via http://easyurpmi.zarb.org/ au choix du ftp (si vous souhaitez utiliser une autre source)
urpmi.addmedia --distrib ftp://ftp.free.fr/mirrors/ftp.mandriva.com/MandrivaLinux/official/2010.0/i586
# Je supprime les média non-free dont je n'ai pas besoin (mettre 'ignore' au bon endroit)
vi /etc/urpmi/urpmi.cfg ; urpmi.update -a
# Mise à jour
urpmi --auto-update
# Ajout de sudo, des locales française, des pages de man et ajout du groupe "wheel" à SUDO et ajout de mon utilisateur au groupe "wheel"
urpmi --auto sudo locales-fr man-pages-fr p7zip ; visudo ; vim /etc/group
# Afficher tous les messages en français
vim /etc/sysconfig/i18n
# Le fichier est vide, copiez/collez l'ensemble des lignes suivantes
LANG=fr_FR.UTF-8
LANGUAGE=fr_FR.UTF-8:fr
LC_ADDRESS=fr_FR.UTF-8
LC_COLLATE=fr_FR.UTF-8
LC_CTYPE=fr_FR.UTF-8
LC_IDENTIFICATION=fr_FR.UTF-8
LC_MEASUREMENT=fr_FR.UTF-8
LC_MESSAGES=fr_FR.UTF-8
LC_MONETARY=fr_FR.UTF-8
LC_NAME=fr_FR.UTF-8
LC_NUMERIC=fr_FR.UTF-8
LC_PAPER=fr_FR.UTF-8
LC_TELEPHONE=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
SYSFONT=lat0-16
# Reboot de la machine
reboot

Migration en 2010.1

ATTENTION : Ne pas migrer en 2010.1 !

# Suppression des médias en gardant le média gandi (indispensable)
sudo vim /etc/urpmi/urpmi.cfg
# Ajout des medias 2010.1 via http://easyurpmi.zarb.org/ au choix du ftp
sudo urpmi.addmedia --distrib ftp://ftp.free.fr/mirrors/ftp.mandriva.com/MandrivaLinux/official/2010.1/i586
# Ignorer les medias non-free
sudo vim /etc/urpmi/urpmi.cfg
# Mise à jour (le système demande des choix, je prends le choix '1' pour tous)
sudo urpmi --auto-update
# Reboot de la machine
reboot

Sécurisation

A faire (todo)


Installation des paquets de base Web, Php, Mysql, Ftp

Mon idée est d'installer à la main le plus possible de chose pour en comprendre le fonctionnement, mais il y a une autre solution : utiliser un des meta-paquetages suivants : (je vous recopie ici la doc)

sudo urpmi --auto task-??

# Avec au choix
task-lamp        - Metapackage for the Linux, Apache, MySQL, PHP and Perl server
task-lamp-extras - Metapackage for the Linux, Apache, MySQL, PHP/Perl/Python extras​
task-lamp-perl   - Metapackage for the Linux, Apache, MySQL, Perl server​
task-lamp-php    - Metapackage for the Linux, Apache, MySQL, PHP server​
task-lamp-python - Metapackage for the Linux, Apache, MySQL, Python server​
task-mds         - Metapackage for the Mandriva Directory Server


Préparation de l'installation des services

# Pour le serveur web, nous créons un utilisateur système apache avec aucune possibilité de login
sudo adduser --system --comment "Utilisateur système pour le serveur web" --home-dir /var/www --shell /sbin/nologin apache

# Si besoin édition des fichier passwd et group
sudo vi /etc/passwd ; sudo vi /etc/group

# Installation de tous les paquets pour nos besoins
sudo urpmi --auto p7zip lighttpd php-fcgi mysql php-mysql php-mcrypt php-mbstring proftpd

Serveur Web : lighttpd et gestion du php

# Création du dossier pour les fichiers pid de processus
sudo mkdir /var/run/lighttpd ; sudo chown apache:apache /var/run/lighttpd

# Déplacement du dossier /var/www dans le disque de données et attribution du bon propriétaire des fichiers
sudo mv /var/www /srv/xvdb ; sudo ln -s /srv/xvdb/www /var/www ; sudo chown -R apache:apache /var/www /var/www/

# Mettez à jour la configuration de lighttpd en fonction de la page Lighttpd
sudo vi /etc/lighttpd/lighttpd.conf

# Démarrer le serveur, tester son fonctionnement et faire en sorte qu'il démarre tout seul au boot
sudo service lighttpd start ; sudo service lighttpd status ; sudo chkconfig lighttpd on

# Créer une page web de test voire la page Lighttpd et changer le propriétaire
sudo chown apache:apache /var/www/html/index.html


Serveur de pages web : cherokee

// Le paquet cherokee installe un utilisateur systeme apache, donc pas besoin de l'installer 

// Installer le serveur  (le paquet rrdtool est facultatif)
sudo urpmi cherokee rrdtool

// Créer un dossier pour les logs
sudo mkdir /var/log/cherokee ; sudo chown apache:apache /var/log/cherokee

// Indiquer à cherokee où mettre les log (modifier les lignes 30 & 34) ou le faire en mode graphique
sudo vi /etc/cherokee/cherokee.conf

// Je préfère que le dossier 'document_root soit dans /var/www/html (le modifier dans la configuration)
sudo mkdir /var/www/html
cd /var/www ;sudo mv images index.html  html

// Déplacement du dossier /var/www dans le disque de données et attribution du bon propriétaire des fichiers (si besoin)
sudo mv /var/www /srv/xvdb ; sudo ln -s /srv/xvdb/www /var/www ; sudo chown -R apache:apache /var/www

// Configurer le serveur à l'aide de la commande suivante :
// Il ne faut pas oublier de configurer cherokee pour qu'il utilise l'utilisateur apache pour travailler.
sudo cherokee-admin -b mon_ip
// Pour configurer le serveur utiliser un navigateur et pointer l'url sur http://mon_ip:9090/

// Démarrer le serveur, tester son fonctionnement et faire en sorte qu'il démarre tout seul au boot
sudo service cherokee start ; sudo service cherokee status ; sudo chkconfig cherokee on

ATTENTION : Après la mise en place de ces paquets, la commande sudo urpmi --auto-update indique qu'un certain nombre de paquets sont orphelins.

C'est faux ! Ne lancer pas la commande sudo urpme --auto-orphans ! C'est le paquet cherokee qui est en cause.

Serveur de bases de données : MySQL

# Déplacement du dossier /var/lib/mysql dans le disque de données
sudo mv /var/lib/mysql /srv/xvdb ; sudo ln -s /srv/xvdb/mysql /var/lib/mysql ; sudo chown mysql:mysql /var/lib/mysql

# Si nous avons des applications distantes qui accèdent à la base de données, il faut mettre à jour le fichier de configuration
sudo vi /etc/my.cnf

# Pour permettre l'accès distant, il faut commenter la directive skip-networking, peut-être ligne 47

# Démarrer le serveur, tester son fonctionnement et faire en sorte qu'il démarre tout seul au boot
sudo service mysqld start ; sudo service mysqld status ; sudo chkconfig mysqld on
#<todo> Il y a plein de Warning </todo>

# Sécurisation de MySQL
sudo /usr/bin/mysql_secure_installation

Installation de phpMyAdmin =

Il a deux façons de faire, à vous de choisir :

  1. L'installer derrière votre serveur web à la page http://mon_serveur.tld/mysql/
  2. L'installer en sous domaine http://mysql.mon_serveur.tld

Pour la première solution, il suffit de d'installer les fichiers dans /var/www/html ; pour la seconde il faut installer les fichier dans /var/www et paramétrer lighttpd. La première ne nécessite pas ou peux de paramétrage, je choisie la seconde.

# Récupération de la dernière version de phpMyAdmin sur leur serveur http://www.phpmyadmin.net/home_page/downloads.php A jour en date du 4 octobre 2010 à 08:16 (UTC)
cd /var/www ;sudo wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.3.7/phpMyAdmin-3.3.7-all-languages.7z

# Extraction du fichier et supression de l'archive
sudo 7za x phpMyAdmin-3.3.7-all-languages.7z ; sudo rm -f phpMyAdmin-3.3.7-all-languages.7z

# Création du lien, du fichier de configuration et attribution du propriétaire
sudo ln -s phpMyAdmin-3.3.7-all-languages mysql ; sudo cp mysql/config.sample.inc.php mysql/config.inc.php ; sudo chown -R apache:apache phpMyAdmin-3.3.7-all-languages mysql

# Terminer la configuration de phpMyAdmin en vous basant sur cette page MySQL
sudo vi /var/www/mysql/config.inc.php

# Modifier le fichier /etc/lighttpd/lighttpd.conf pour obtenir le sous domaine, voire Lighttpd
sudo vi /etc/lighttpd/lighttpd.conf

// Si vous utiliser cherokee, il faut créer un vserveur pour accéder à phpMyAdmin

Post-configuration pour le serveur ftp

# Afin de ne pas permettre à nos utilisateurs de remonter dans le serveur, il faut configurer notre serveur ftp
sudo vi /etc/proftpd.conf

# Dé-commenter la ligne DefaultRoot, ligne 67 (indicative)

# Démarrer le serveur, tester son fonctionnement et faire en sorte qu'il démarre tout seul au boot
sudo service proftpd start ; sudo service proftpd status ; sudo chkconfig proftpd on

Le mail et le groupware

Le gestionnaire de courrier Postfix

# Ajout de postfix
sudo urpmi postfix

# Edition du fichier de configuration
sudo /etc/postfix/main.cf

##### A Ajouter dans le fichier de configuration
# Noms d'hote et de domaine de la machine
myhostname = mon_serveur.mon_domaine.tld
mydomain = mon_domaine.tld
myorgin = $mydomain

Le groupware Horde

# Télécharger la dernière version; l'extraire et la supprimer
cd /var/www ; sudo wget ftp://ftp.horde.org/pub/horde/horde-latest.tar.gz ; sudo tar xzvf horde-latest.tar.gz ; sudo rm -f horde-latest.tar.gz

# Création du lien et changement de propriétaire
sudo ln -s horde-3.3.8 horde ; sudo chown -R apache:apache horde horde-3.3.8

# Ajout d'un sous-domaine (idem mysql)