Table des matières
But et infos sur ce howto
Le but de ce howto interactif est l'installation et la configuration de l'incontournable trio Apache MySQL PHP, Perl (ou encore Python, que nous ne décrivons pas ici) sur une Debian Etch 4.0, afin d'avoir un serveur personnel ou professionnel. Ce serveur peut être utilisé pour mettre en ligne des sites, blogs, wiki, CMS, partager des documents, pour développer, ou simplement faire des essais. Apache est le serveur de référence sur le web, sa configuration se fait directement par modification de fichiers texte ou avec votre navigateur web au travers de Webmin. La gestion des bases de données MySQL peut se faire avec phpMyAdmin et la gestion de la machine serveur peut se faire à distance via le protocole sécurisé SSH.
Ce howto a aussi comme but d'aider les personnes désirant hébérger leurs propre sites web sur une machine PC, pouvant provenir de la récupération, afin de partager, publier, etc, sur la toile et à moindre frais. Pour des machines peut puissantes il existe d'autres serveur web tels que LightTPD, disponible sur Debian, et installé par défaut sur la petite distribution SliTaz. Matériels et système
Apache à l'avantage de pouvoir s'installer sur toutes sortes de machines, pour un petit serveur à la maison pour un petit site ou pour tester, il suffit d'un ordinnateur avec 64 MB de mémoire vive (RAM) pour qu'il fonctionne, pour mettre en ligne un site ou un blog nous vous conseillons 128 MB de mémoire au minimum. Pour des essais et du développement,nous avons installé des serveur sur nos portables (768 MB de RAM), nous développons ensuite sous les environnement graphiques Blackbox, Xfce et Gnome cela ne ralenti pas la machine, Apache est tellement stable et bien intégré à Debian que c'est ensuite un réel plaisir de travailler. A propos d'un serveur plus important avec un plus grand trafique, la plus part des machines réçentes devrais faire l'affaire, par exemple un serveur muni d'un Pentium 4, CPU de 3 GHz avec 1,5 GB de RAM, ou de vrai serveur comme Xeon. Il existe aussi des serveur DualCore avec 2 processeur et mémoires allant de 4GB à plusieurs dizaine de GB de RAM.
Le système d'exploitation que nous vous conseillons d'utiliser est la version stable de Debian GNU/Linux, version 4.0 nom de code Etch. L'installation de base du système suffi, sans interface graphique, mais vous pouvez aussi faire cela depuis Gnome, KDE, pour tester ou développer. Si vous avez fait une installation à partir de cédéroms Debian, il vous faudra peut-être ajouter des « dépôts » pour APT au fichier: /etc/apt/sources.list. Nous utiliserons aptitude pour l'installation des paquets, c'est le gestionnaire de paquets qui gére le mieux les dépendances.
Avant de commencer et si ce n'est pas déjà fait. Nous vous conseillons de mettre à jour la liste des paquets et de suivre par la mise des paquets installés sur votre système avec la commande:
# aptitude update && aptitude upgrade
Installez les librairies de bases:
# apt-get install build-essential
Installation de base d'Apache 2
Commençons par l'installation de notre nouveau serveur web Apache 2:
# aptitude install apache2
Dans le cas ou vous n'avez installé que la base de debian, vous pouvez encore installer GNU Nano et/ou mc, pour éditer les fichier de configuration, ainsi que le navigateur web en mode texte Lynx:
# aptitude install nano lynx
Pour vérifier la réussite de l'installation et le bon fonctionnement d'Apache, Vous pouvez ouvrir votre navigateur web préféré et vous rendre à l'adresse http://localhost/. Si tout c'est bien passé vous devriez être accueilli par la page de test de l'installation d'Apache. Votre nouveau serveur est aussi accessible depuis le nom de machine (hostname) ou avec l'adresse IP. Pour utiliser Lynx en ligne de commande depuis un terminal:
$ lynx http://localhost/
ou:
$ lynx http://hostname/
Certains modules sont populaires voire incontournables, activons-les:
# a2enmod deflate # a2enmod headers # a2enmod rewrite
userdir - Répertoire public des utilisateur
Ce passage n'est pas obligatoire, mais c'est utile de le savoir. Apache propose aux utilisateurs du système d'avoir un espace public pour mettre des documents web en général. Ce répertoire est assez réstrictif, ce qui est bien, et root n'y a pas le droit. Le module userdir d'Apache utilise les fichiers de configuration: userdir.conf et userdir.load tous deux situé dans /etc/apache2/mods-available/. Pour que le module fonctionne, il faut créer des liens symboliques de ces fichiers, vers le répertoire /etc/apache2/mods-enable. A noter que vous pouvez facilemnt changer le nom du répertoire utilisateur à utiliser en éditant le fichier de configuration userdir.conf. Pour que le module ne fonctionne plus, il faut détruire les liens puis redémarrer Apache2.
Pour utiliser le module userdir, il faut créer les liens pour le module avec l'utilisateur root et créer un répertoire public_html dans le dossier personnel d'un utilisateur du système, tel que: /home/user/public_html. Le répertoire public est ensuite accessible depuis l'url de la machine suivi de ~/user:
$ su # ln -s /etc/apache2/mods-available/userdir.conf \ /etc/apache2/mods-enabled/userdir.conf # ln -s /etc/apache2/mods-available/userdir.load \ /etc/apache2/mods-enabled/userdir.load # /etc/init.d/apache2 reload
Dans la version 2.2 d'apache, il faut activer le module userdir, tapez:
root [/var/www] > a2enmod userdir
Ainsi vous pourrez accéder au contenu de l'espace web /home/NOMUSER/www/ à partir de l'adresse http://www.votredomaine.com/~NOMUSER/
En tant que simple utilisateur vous pouvez tester le bon fonctionnement du module en créant un répertoire public_html:
# exit $ mkdir $HOME/public_html $ lynx http://localhost/~user/
Stopper la redirection dans /apache2-default
Afin de ne pas être redirigé sur la page de test il faut modifier le fichier /etc/apache2/site-available/default, en ajoutant # devant la ligne 17 (RedirectMatch ^/$ /apache2-default/) pour commenter la ligne. A noter que ce même fichier peut servir d'exemple pour configuer de futur hôtes virtuels. Vous pouvez modifier ce fichier texte dans un terminal avec Nano ou graphiquement avec Gedit par exemple:
# nano /etc/apache2/sites-available/default ou: # gedit /etc/apache2/sites-available/default &
Pour que vos modifications soient effectives il faut qu'Apache les prennent en compte avec la commande reload, qui permet de relancer le serveur:
# /etc/init.d/apache2 reload
Pour vérifier la bonne prise en compte des modifications apportées: http://localhost/ Votre serveur est désormait fonctionnel, le propriétaire des fichiers est le group se nomment www-data, la racine du serveur est dans /var/www, et les fichiers de log sont dans: /var/log/apache2. Les fichiers de configuration sont dans /etc/apache2 avec le fichier de configuration pricipale du serveur: apache2.conf. Pour administrer votre serveur vous pouvez directement modifier les fichiers texte de configuration d'apache en local ou via SSH.
Fichiers index
Il faut spécifier à Apache les fichiers qu'il doit considérer comme des fichiers index et qui seront donc automatiquement appelés.
Pour faire plus propre, nous mettrons tous nos ajouts en terme de configuration dans le fichier httpd.conf automatiquement chargé par apache2.
root [/var/www] > nano /etc/apache2/httpd.conf
Ajoutez la ligne suivante en spécifiant les types de fichier index à prendre en compte:
DirectoryIndex index.html index.htm index.xhtml index.php
Créer les fichiers vHosts apache
Rendez-vous dans le répertoire /etc/apache2/sites-enabled puis créer le fichier vHost (Pour rester clair, il est conseillé de faire un fichier vHost par domaine):
root [/etc/apache2/sites-enabled] > nano monsite.com
Et entrez les lignes suivantes:
lignes trouvées sur internet:
<VirtualHost *> ServerAdmin postmaster [ at ] monsite.com ServerName www.monsite.com ServerAlias *.monsite.com DocumentRoot /var/www/monsite.com/ <Directory /var/www/monsite.com/> Options -Indexes FollowSymLinks MultiViews AllowOverride All </Directory> ServerSignature Off </VirtualHost>
(Remplacez le [ at ] par un @ naturellement)
Lignes perso qui fonctionne sur Debian lenny:
<VirtualHost *:80> Alias /monsite/ "/var/www/monsite/" <Directory /var/www/monsite/> Options -Indexes FollowSymLinks MultiViews AllowOverride All </Directory> ServerSignature Off </VirtualHost>
Sauvegardez et quittez.
Explications
- ServerAdmin S'il y'a un problème, le serveur écrit un message à cette adresse.
- ServerName Le nom doit domaine que vous souhaitez associer au serveur. Il doit être dans les DNS du serveur. Si aucun nom n'est spécifié, alors le serveur tente de déduire un nom en procédant à un “lookup inverse” à partir de l'adresse IP.
- ServerAlias Cette instruction permet d'ajouter d'autres domaines ou sous domaines qui prendront en compte le même fichier vHost.
- DocumentRoot Le répertoire sur lequel apache redirigera les addresses spécifiées plus haut.
- Directory Cette instruction permet d'ajouter des options et règles au répertoire web. Les options: -Indexes → Permet de désactiver le listing des fichiers si un utilisateur entre le nom d'un dossier sans index dans votre répertoire web. FollowSymLinks → Active le suivis des liens symboliques dans ce répertoire. MultiViews → Permet de dire à apache de chercher s'il existe des fichiers du même nom dans le répertoire en cas d'erreur 404.
Notre vHost est disponible mais il n'est pour le moment pas activé. Pour l'activer, il faut créer un lien symbolique dans le répertoire des sites activés d'apache:
root [/etc/apache2/sites-enabled] > a2ensite monsite.com
Et enfin, comme apache2 n'a pas pris en compte nos modifications, on le restart:
# /etc/init.d/apache2 reload
C'est l'heure du test !
Tapez votre nom de domaine dans votre navigateur web favoris:
It works!
Même résultat que tout à l'heure, le domaine pointe bien sur le serveur mais pas sur le bon répertoire.
C'est normal, il faut commenter une ligne dans le vHost par défaut:
root [/etc/apache2/sites-enabled] > nano /etc/apache2/sites-enabled/000-default
#RedirectMatch ^/$ /apache2-default/
Ajoutez un # devant RedirectMatch (Ligne 17) pour ne pas être redirigé systématiquement sur le répertoire apache2-default/
On re reboot !
# /etc/init.d/apache2 reload
Et on re test:
Bienvenue sur mon nouveau site!
Ca marche !
Installation de PHP 5 et du module apache2
Installation de PHP en version 5, ainsi que du module pour Apache 2.
# aptitude install php5 libapache2-mod-php5
Apache est relancé automatiquement pendant l'installation pour que les modifications soient prisent en compte. Pour vérifier le bon fonctionnent du module, vous pouvez créer un fichier phpinfo.php à la racine du serveur, en utilisant Nano. Recopiez le code php et quitter/enregistrer avec la combinaison ctrl x en nommant le fichier comme bon vous semble mais avec l'extension .php, et valider avec <ENTER>:
# nano /var/www/phpinfo.php <?php phpinfo(); ?>
Vous pouvez maintenant allez à l'url de la page. Si vous l'avez nommée phpinfo.php et que vous l'avez mise à la racine de votre serveur web, elle devrait être accessible depuis l'url: http://localhost/phpinfo.php.
Votre serveur reconnaît maintenant les fichiers portant l'extension .php. Vous pouvez nommer la page qui s'ouvre par défaut, par index.php et insérer des scripts PHP un peu partout dans vos page web. Vous serez encore peut-être intéressé par installer quelques modules pour php. Le module php5-gd pour manipuler les images avec PHP, utilisé par exemple, par les Blogs pour générer des miniarure quand on upload une image. Dans la catégorie images il y a aussi le module php5-imagick offrant le support d'ImageMagick. Pour obtenir une liste de paquets disponibles en relation avec php5.
# aptitude search php5
Installation de MySQL 5.0 et de phpMyAdmin
Nous allons installer la version 5.0 du serveur de base de données MySQL disponnible dans Debian Etch 4.0, ainsi que le module php5-mysql et afin de pouvoir gérer les bases de données depuis un navigateur web, nous installerons phpMyAdmin.
# aptitude install mysql-server-5.0 php5-mysql phpmyadmin
Debconf vous posera quelques questions, il faut ensuite configurer le mot de passe root, pour cela nous utiliserons phpMyAdmin. Loguez-vous avec root et sans mot de passe pour cette unique fois via l'url: http://localhost/phpmyadmin/. Vous avez maintenant un serveur web fonctionnel avec PHP et un serveur MySQL.
Aucune surprise particulière, penser toute fois à définir un mot de passe “root” (il n'y en a pas par défaut):
# aptitude install mysql-client mysql-server # mysqladmin password QSDbq92DNb # cat >~/.my.cnf [client] user = root pass = QSDbq92DNb <Ctrl+D> # chmod 600 ~/.my.cnf
Les bonnes idées concernant mysql.ini:
- Désactiver le “binlog” (réellement utile que pour la réplication)
- Activer le “slowlog” (avec les queries sans index)
- Désactiver InnoDB, on vous le demandera s'il est nécessaire
- Ne pas toucher les paramètres de “tuning” sans consulter un DBA
Diagnostics:
- # netstat -tnlp|grep mysql (écoute sur 127.0.0.1 par défaut)
- # mysql
Installation de Perl et du module apache2
Ce module ne sert pas à grand chose si l'on utilise pas des scripts Perl. La présentation de libapache2-mod-perl2, provenant du paquet du même nom, dit que l'utilisation de scripts Perl peut augmenter de 400% à 2000% la rapidité d'un site web. Après installation, il existe de nombreuses possibilité pour configurer Perl et Apache, comme les script cgi par exemple. Pour installer le module Perl2 d'Apache2:
# aptitude install libapache2-mod-perl2
Pour information les scripts Perl commence toujours par #!/usr/bin/perl. Sur Debian, vous pouvez directemnet utiliser les fichier .php, car dans le fichier de configuration d'apache2 (apache2.conf) la ligne DirectoryIndex (202 du fichier original) comporte les valeurs qu'il faut:
DirectoryIndex index.html index.php index.php index.php index.xhtml
OpenSSH - Administration à distance et sécurisée
Si vous utilisez toujours telnet au lieu de SSH, vous devriez remédier à cela. SSH devrait être utilisé pour toutes les connexions distantes à la place de telnet. Il faut éviter les mots de passe en clair, et utiliser uniquement les protocoles qui utilisent la cryptographie. Si vous n'utilisé plus que SSH vous pouvez alors désinstallez telnet et apprendre à sécuriser le démon OpenSSH.
Pour devenir root, il faut éviter de se connecter au système en utilisant SSH en tant que root et préférer l'utilisation de méthodes alternatives tel que su ou sudo. Le fichier de configuration /etc/ssh/sshd_config peut-être modifié pour encore accroître la sécurité du système.
Pour ce connecter au serveur avec le nom de machine, on peut utiliser le nom de domaine, ou encore l'adrese IP:
$ ssh user@nomDeMachine
En spécifiant le port et le dossier dans lequel on arrive, SSH utilise le port 22 par défaut:
$ ssh user@nomDeMachine:22/home/user/public_html
Le paquet OpenSSH fournit aussi divers utilitaires pour le transfert de fichiers sécurisé tels que scp et sftp. Une fois connecté via SSH, vous pouvez utiliser les commandes d'administration disponibles sur tous les systèmes d'exploitations GNU/linux.
Administartion avec Webmin
Pour administrer votre serveur vous pouvez aussi utiliser Webmin et son module correspondant. Webmin propose un interface web qui permet la configuration d'Apach, Bind, Postfix, Proftpd ou encore du serveur SSH. L'installation de Webmin peut se faire avec la commande: # aptitude install webmin, l'interface web et ensuite accessible via https et le port 10000 de la machine, exemple: https://NomDeMachine:10000/.