Hi there. If it's the first time you come here, maybe you want to read a short site presentation. If you're interested in editing, you can check how to create a page and how to edit a page to get started right away! You may also want to make an account, so your name will be linked to your contributions.

If you already have an account, you should log in now.

User:Patheticcockroach/Installation serveur Ubuntu 8.04

From Wiki4Games
Jump to: navigation, search
Cette page est un backup de ma contribution sur http://www.wikiovh.com/index.php/Ubuntu_8.04:nue-vers-hebergement

Prérequis: ce guide nécessite d'être connecté en root (ou d'avoir les droits root) sur votre serveur. On supposera également que la distribution vient juste d'être installée.

Première connexion au serveur

Changement du mot de passe root

Pour changer le mot de passe, on utilisera la commande:

passwd

Mise à jour de la distribution

Commençons par ajouter les repositories de dotdeb.org, qui fournit les derniers binaries de PHP et MySQL:

  • On ouvre le fichiers qui liste les sources:
nano /etc/apt/sources.list
  • On y joute les lignes suivantes et on sauve:
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

Puis on réalise une mise à jour de la distribution:

apt-get update && apt-get -y upgrade

On vérifie que tout a bien été upgradé:

apt-get upgrade

Si certains packages ont été oubliés (ce qui est volontier le cas avec openssh-client et openssh-server), on pourra prendre le risque, si l'installation est neuve, de forcer leur mise à jour, avec par exemple:

apt-get install openssh-client

Résoudre le problème du perl: warning: Setting locale failed.

Ces instructions[1] concernent la version anglaise. Pour la version française, peut-être que le problème n'existe pas. Ou s'il existe[2], les noms des locales doivent être adaptés (probablement du genre "fr_FR.UTF-8".

On remarque (en tous cas dans la version anglaise) de désagréables messages durant l'installation, ressemblant à ceci:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "en_GB.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Pour les supprimer (pour la version anglais, encore une fois):

  • Editer /etc/default/locale, le contenu du fichier doit être:
LANG=en_US.UTF-8
  • Editer /etc/environment, le contenu du fichier doit être, après la ligne commençant par PATH que l'on ne touchera pas:
LANG="LANG=en_US.UTF-8"
LANGUAGE="en_US:en"
  • Editer /etc/locale.def, le contenu du fichier doit être:
en_US ISO-8859-1
en_US.UTF-8 UTF-8

Maintenant on applique:

locale-gen

Et on reboote (il existe peut-être une solution moins radicale, mais je ne l'ai pas trouvée):

reboot

Après le redémarrage, un petit:

dpkg-reconfigure locales

devrait montrer qu'il n'y a plus d'erreurs.

Webmin

Pour plus de simplicité, nous utiliserons Webmin pour nous aider à configurer le reste du serveur. Tout d'abord, nous devons installer un certain nombre de packages requis par Webmin:

apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl

Puis, aller sur http://www.webmin.com/download.html et copier l'URL de téléchargement de Webmin version "Debian package". Puis coller l'URL dans la console, après un wget, par exemple, pour la version 1.430:

wget http://prdownloads.sourceforge.net/webadmin/webmin_1.430_all.deb

Pour installer, utiliser la commande dpkg:

dpkg -i webmin_1.430_all.deb

Webmin est installé! Pour s'y connecter, utiliser l'URL https://[nom_ou_IP_du_serveur]:10000/ Le login est "root" et le mot de passe le même que celui du compte root SSH. Pour changer le mot de passe:

/usr/share/webmin/changepass.pl /etc/webmin root [nouveau mot de passe]

Le changement de mot de passe peut prendre quelques minutes avant d'être effectif.

PHP

Installation

apt-get install php5 php5-gd

Pour installer en plus l'interpréteur en ligne de commande (utile, par exemple, pour utiliser des scripts PHP en cron jobs):

apt-get install php5-cli

Configuration

NB: nous finaliserons la configuration de PHP lors de la configuration d'Apache.
Ouvrir Webmin (s'il était déjà ouvert, cliquer dans le menu sur "Refresh Modules"), puis aller dans "Others" → "PHP Configuration". Le module demande de préciser le chemin des fichiers de configuration: entrer:

/etc/php5/apache2/php.ini=Configuration for mod_php
/etc/php5/cli/php.ini=Configuration for command-line scripts
/etc/php5/cgi/php.ini=Configuration for scripts run via CGI

Appliquer la configuration recommandée de PHP (cela évite notamment certain soucis avec phpBB ou Moodle[3]):

cp /usr/share/doc/php5-common/examples/php.ini-recommended /etc/php5/apache2/php.ini


Apache

Installation

apt-get install apache2

En allant sur http://[nom_ou_IP_du_serveur], on obtient la page test d'Apache ("It works!"), qui est localisé dans /var/www. Nous réserverons ce répertoire pour des tests et pour l'administration du serveur (par exemple, pour phpMyAdmin).

Configuration

Configuration générale

Dans Webmin, aller dans "Servers" → "Apache Webserver". Puis choisir l'onglet "Global configuration", puis "Edit Config Files": cette page fournit une interface confortable pour éditer tout les fichiers de configuration d'Apache. Nous éditerons d'abord /etc/apache2/apache2.conf:

  • pour que PHP fonctionne avec Apache, ajouter au début:
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
DirectoryIndex index.html index.htm index.php
  • pour diminuer au maximum les informations envoyées par Apache à propos du serveur (système d'exploitation, modules, etc), remplacer:
ServerTokens Full

par:

ServerTokens Prod

Remplacer également:

ServerSignature On

par:

ServerSignature Off
  • Pour empêcher l'affichage de la liste des fichiers quand un dossier ne contient pas de page index (telle que définie par la directive DirectoryIndex), on ajoutera à la suite:
Options -Indexes

L'user et le group utilisé par Apache est par défaut www-data. Il n'est pas nécessaire de le changer. Si toutefois vous le souhaitez, vous pouvez les modifier en éditant /etc/apache2/envvars:

nano /etc/apache2/envvars

Les virtual hosts

Ils sont définis dans /etc/apache2/sites-available/default (éditable dans le module Apache de Webmin). La configuration par défaut est:

NameVirtualHost *
<VirtualHost *>
        ServerAdmin [email protected]
        
        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Gardons à l'esprit que nous voulons garder en l'état /var/www/ pour l'administration uniquement. On remplacera les AllowOverride None par des AllowOverride All, on désactivera les Indexes et la ServerSignature. Enfin, on désactive la documentation. On obtient donc:

NameVirtualHost *
<VirtualHost *>
        ServerAdmin [email protected]
        
        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/>
                #Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature Off

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        #Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Nous configurerons d'autres virtual hosts (les plus utiles = ceux pour les sites à héberger!) plus loin, quand nous aurons apris à ajouter un domaine dans BIND.

MySQL

Installation

apt-get install mysql-server

Pendant l'installation, il se peut que MySQL demande de choisir un mot de passe root. Si ce n'est pas le cas, aucun mot de passe n'est nécessaire pour accéder au compte route (ce qui, on s'en doute, n'est pas franchement recommandé!). Pour configurer le mot de passe root:

mysqladmin -u root password [mot de passe voulu]

NB: pour changer le mot de passe root:

mysqladmin -u root -p password [nouveau mot de passe]

(mysqladmin demande alors de s'identifier en entrant l'ancien mot de passe).

Et enfin, pour que PHP et MySQL fonctionnent ensemble:

apt-get install php5-mysql

ProFTPd

Installation

apt-get install proftpd

Choisir "standalone" pendant l'installation.

Configuration

Dans Webmin, aller dans "Servers" → "ProFTPD Server". Choisir "Edit Config Files" et éditer le fichier /etc/proftdp/proftpd.conf:

  • Si notre serveur ne supporte pas l'IPv6, on le désactive en remplaçant:
UseIPv6                            on

par:

UseIPv6                            off
  • Pour améliorer considérablement la rapidité de connexion à ProFTPd, on ajoutera[4]:
# Trying to improve connection speed...
IdentLookups  off
UseReverseDNS off

Maintenant, revenir au menu principal de la configuration de ProFTPD dans Webmin et choisir "Files and Directories". A Limit users to directories cocher "Home directory". Sauver.

phpMyAdmin

Téléchargement et décompression

Comme nous l'avons signalé plus haut, nous nous sommes réservé le dossier /var/www pour nos outils d'administrations. C'est donc ici que nous mettrons phpMyAdmin. Dans la console:

cd /var/www

Allons sur http://www.phpmyadmin.net/home_page/downloads.php et choisissons une version qui nous convient. Par exemple la version stable sans traductions, "english.tar.gz":

wget http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-2.11.8.1-english.tar.gz?download

On décompresse:

tar -zxpf phpMyAdmin-2.11.8.1-english.tar.gz

On fait un peu de rangement (utiliser la commande "ls" pour trouver le nom du dossier créé par phpMyAdmin, dans ce cas c'est phpMyAdmin-2.11.8.1-english):

mv phpMyAdmin-2.11.8.1-english pmadmin

Configuration

Rendons-nous maintenant sur http://[nom du serveur]/pmadmin/. Nous obtenons un message d'erreur qui nous invite à utiliser le script de configuration (en cas de problème pour trouver le lien, le script se trouve à l'URL: http://[nom du serveur]/pmadmin/scripts/setup.php). Nous obtenons (encore!) un message d'erreur, qui nous demande de créer un dossier "config" accessible en écriture... obtempérons donc (toujours dans la même console):

cd pmadmin
mkdir config
chown www-data config

Et voilà, retournons dans le script de configuration:

  • Dans "Servers", cliquer sur "Add"
  • On laissera tout par défaut sauf:
    • Authentication type: choisir http. Ainsi, à chaque connection à phpMyAdmin, il faudra entrer les paramètres de connexion d'un utilisateur MySQL.
    • User for config auth: vider le champ.
    • Connection type: libre choix, je préfère mysql à mysqli par frilosité envers certaines nouveautés dont les avantages me sont obscurs.
  • Cliquer sur "Add" (en vert, tout en bas).
  • Dans "Configuration", cliquer sur "Save".

Retour à la console (toujours la même):

cd config
cp config.inc.php ..

Voilà, nous pouvons maintenant retourner sur http://[nom du serveur]/pmadmin/, et utiliser le login "root" et le mot de passe root de MySQL pour accéder aux bases de données avec phpMyAdmin.

Postfix

Cette rubrique est imparfaite: la "configuration" réalisée permet d'envoyer des e-mails, mais pas d'en recevoir. Merci de la compléter si vous pouvez.

Installation

apt-get install postfix

Pendant l'installation, on configurera Postfix en "Internet Site", et on laissera le "System mail name" à sa valeur par défaut (c'est-à-dire le nom du serveur).

Ajouter un site web dans tout ça

A partir de l'installation que nous venons de réaliser, nous allons configurer le serveur pour héberger un de nos domaines (NB: il s'agit d'une suggestion de structure, il est tout à fait possible de s'organiser différement).

Création d'un utilisateur

Dans Webmin: "System" → "Users and Groups". Cliquer sur "Create a new user." Laisser les réglages par défaut sauf:

  • Username: indiquer un nom d'utilisateur. Nous mettrons wiki4games.
  • Password: cliquer sur "normal password" puis entrer un mot de passe.
  • Copy template files to home directory?: choisir no.

Cliquer sur "Create" pour valider. Nous obtenons un nouvel utilisateur "wiki4games", dont l'ID est 1000 (peu important...), dont le groupe est "users", et dont le dossier principal est "/home/wiki4games".

Création de dossiers pour notre site

Afin de simplifier la gestion des droits des dossiers, nous allons nous connecter en SSH avec l'utilisateur qu'on vient de créer. On se retrouve donc directement dans /home/wiki4games. Créons des dossiers pour héberger wiki4games.com et un sous domaine test5.wiki4games.com:

mkdir www
mkdir sd
cd sd
mkdir test5

Envoi d'un fichier sur notre site

Créons par exemple le fichier index.php contenant:

<?php
phpinfo();
?>

Avec un client FTP, se connecter au serveur (hôte: [nom du serveur]; port: 21; login: wiki4games; mot de passe: [le mot de passe de wiki4games]), et envoyer index.php dans le sous-dossier www.

Configuration de BIND

Dans Webmin, aller dans "Servers" → "BIND DNS Server". Cliquer sur "Create master zone.":

  • Domain name / Network: indiquer le nom de domaine. Nous mettrons wiki4games.com.
  • Email address: entrer une address e-mail. C'est obligatoire, bien que (à ma connaissance) parfaitement inutile.

Laisser les autres paramètres par défaut, nous les éditerons manuellement. Cliquer sur "Create". Nous allons maintenant éditer manuellement la configuration du domaine. Cliquer sur "Edit Records File". Le contenu du fichier ressemble à:

$ttl 38400
wiki4games.com. IN      SOA     [nom du serveur]. [nom avant @ de l'e-mail].[domaine de l'e-mail]. (
                        1219596591
                        10800
                        3600
                        604800
                        38400 )
wiki4games.com. IN      NS      [nom du serveur].

Remplaçons tout cela par:

$ttl 5m
@       IN      SOA     [nom du serveur]. [nom avant @ de l'e-mail].[domaine de l'e-mail]. (
                        2008032807 ; serial
                        3h ; secondary refresh
                        3m ; secondary retry
                        2w ; secondary expire
                        3h ; default record cache time
                        )
@       IN      NS      [nom du serveur].
@       IN      MX      10 mail

@       IN      A       [IP du serveur]
mail    IN      A       [IP du serveur]
www     IN      A       [IP du serveur]
test5   IN      A       [IP du serveur]

NB: sauf pour les lignes commençant par @, on aurait pu remplacer, par exemple "test5 IN A [IP du serveur]" par "test5 IN CNAME @"

Un petit tour dans le manager...

Dans le manager, indiquer [nom du serveur] en DNS primaire et ns.kimsufi.com (cette valeur est différente pour les serveurs non-kimsufi, commencer par activer le service de DNS secondaire, le nom du serveur y sera mentionné) en DNS secondaire. Il faut également activer le service de DNS secondaire pour le domaine sur le serveur dédié: Accueil → Serveur dédié → [nom du serveur] → Services → DNS secondaire. NB: si vous obtenez une erreur du type "wiki4games.com realNameserver n'est pas défini à [nom du serveur]", cela signifie que ce nom de domaine est déjà rattaché à un autre dédié, et il faut d'abord le désactiver dans cet autre dédié. Voilà, et pour patienter pendant la propagation (au fait, avez-vous bien pensé à redémarrer tous les services que vous avez configuré? BIND, Apache, ProFTPD, etc doivent tous être redémarrer à chaque fois que vous voulez appliquer de nouveau paramètres), un dernier paramètrage, celui d'Apache.

Les virtual hosts d'Apache

Retour dans Webmin. "Servers" → "Apache Webserver" → "Global configuration" → "Edit Config Files" et éditer le fichier /etc/apache2/sites-available/default. A la fin, ajouter (par exemple):

<VirtualHost *>
ServerName wiki4games.com
DocumentRoot "/home/wiki4games/www/"
<Directory "/home/wiki4games/www/">
allow from all
Options -Indexes
</Directory>
</VirtualHost>

<VirtualHost *>
ServerName wiki4games.com
DocumentRoot "/home/wiki4games/www/"
<Directory "/home/wiki4games/www/">
allow from all
Options -Indexes
</Directory>
</VirtualHost>

<VirtualHost *>
ServerName test5.wiki4games.com
DocumentRoot "/home/wiki4games/sd/test5"
<Directory "/home/wiki4games/sd/test5">
allow from all
Options -Indexes
</Directory>
</VirtualHost>

Epilogue

Nous nous rendons maintenant sur notre domaine.

  • Si nous n'obtenons qu'un timeout, les DNS ne sont pas propagés... attendons quelques heures.
  • Si nous obtenons "It works!", vous avez oublié de redémarrer Apache!
  • Si nous obtenons une page "phpinfo()" qui affiche en gros la version de PHP et en petit une abominable mais très utile liste de paramètres et de modules, c'est tout bon... Il n'y a plus qu'à uploader le vrai site, créer d'autres sous-domaines, etc.

Que manque-t-il dans ce guide?

A part, forcément, de nombreux détails pour aller plus loin, qui devront être précisés dans des pages spécifiques pour chacun des logiciels installés, ce guide oublie:

  • la configuration d'un serveur e-mail correct (le serveur que nous venons de configurer ne sait pas recevoir d'e-mails, seulement en envoyer)
  • la sécurité: on a mis le minimum, mais il manque quand même fail2ban et peut-être quelques réglages plus fins

...et peut-être d'autres choses importantes(?), mais cette petite liste n'est qu'une piste pour compléter le guide et pour informer ceux qui l'ont suivi des quelques carences qu'il leur reste à gérer (ou pas ;)).

Liens utiles

  • Pingability, pour tester la configuration des DNS. Les résultats sont assez didactiques.

Références

  1. perl: warning: Setting locale failed on Ubuntu forums
  2. A peine sortie, déjà dispo: Ubuntu 8.04 LTS
  3. Moodle installation on Ubuntu Gutsy 7.10 gives blank pages - after install EVERY page is blank!
  4. Proftpd-user very slow connection and ftp