
Après avoir lu mon précédent billet nécessaire au bon déroulement de celui-ci, voyons comment installer les logiciels serveur les plus communément utilisés pour publier un ou plusieurs sites web. Dans la prochaine partie, nous verrons comment configurer un serveur de messagerie (IMAP, SMTP, XMPP et autres).
Tout d’abord nous commencerons par installer tout d’un coup pour ensuite configurer chaque élément étape par étape. Inutile d’en dire plus sur ce point là, ouvrez une session distante sur votre serveur via SSH, et entrez ceci :
sudo apt-get install apache2 mysql-server phpmyadmin php5 libapache2-mod-php5 php5-mysql
Cette commande installera tout à la suite, ce qui est relativement pratique. Il suffit de laisser des espaces entre les noms des paquets à traiter. Durant l’installation, MySQL devra être configuré : en effet, ce dernier vous demandera de renseigner un mot de passe pour l’administrateur de la base de donnée (root), que vous devrez mémoriser ! Ensuite, PhpMyAdmin vous redemandera ce mot de passe pour pouvoir s’installer. Notez qu’il vaut mieux en définir un fort pour plus de sécurité. Si vous n’avez pas d’idée de phrase de passe, lisez ce billet vous expliquant comment installer pwgen pour en générer aléatoirement.
Ensuite, allons-y pour la configuration de nos installations !
1. Configuration d’Apache
Apache est un logiciel relativement long à configurer et il peut sembler compliqué. En fait, c’est tout le contraire, une fois qu’on a compris son fonctionnement (et avec l’habitude), il devient très facile à administrer. Commençons par créer des alias afin d’accéder plus simplement à la configuration de Apache, ici mais aussi dans le futur :
- Ouvrez le fichier .bashrc (nano .bashrc) ;
- Descendez tout en bas du fichier ;
- Ajoutez-y les lignes suivantes :
# Apache aliases
alias a2restart='sudo /etc/init.d/apache2 restart'
alias a2reload='sudo /etc/init.d/apache2 reload'
alias a2conf='sudo nano /etc/apache2/apache2.conf'
alias a2sites='sudo nano /etc/apache2/sites-enabled/000-default'
alias a2ssl='sudo nano /etc/apache2/sites-enabled/ssl'
Puis quittez en enregistrant (CTRL + O) et reconnectez-vous au serveur pour que les nouveaux paramètres soient pris en compte.
Parfait ! Maintenant il ne nous reste plus qu’à entrer a2conf pour accéder à la configuration (n’est-ce pas plus simple que d’entrer à chaque fois : sudo nano /etc/apache2/apache2.conf ?). Une fois dans le fichier, nous allons ajouter à la fin cette ligne :
ServerName example.com
La première autorise la lecture des .htaccess par le serveur, quasi-nécessaires pour installer un CMS tel que WordPress, la seconde défini le nom d’hôte principal de notre machine, nécessaire quand on veut héberger plusieurs sites sur la même bécane. Bien entendu, ne laissez pas example.com, mais remplacez-le par un nom de domaine qui vous appartient. Si vous hébergez de nombreux sites, je vous conseille de lui allouer un joli domaine rien qu’à lui. Ne cherchez pas vers les solutions payantes, j’ai déjà rédigé un billet sur dot.tk qui en fourni gratuitement et sans aucune limite !
Il est temps d’activer certains modules pour rendre notre Apache plus extensible et plus rapide (notamment avec la compression des pages). Entrez simplement ceci :
sudo a2enmod rewrite deflate headers expires
Nous avons ainsi activé les modules rewrite pour réécrire les URLs, deflate permettant de servir des fichiers 8 fois plus légers, headers pour pouvoir définir des entêtes HTTP personnalisé et expires pour fixer des dates d’expiration des fichiers mis en cache. Maintenant, il est temps de revenir à notre configuration pour paramétrer ces modules : entrez a2conf et descendez en bas du fichier. Nous allons ajouter ceci :
# We activate the gzip compression for everything that is served
<IfModule mod_deflate.c>
<FilesMatch ".(js|css|php|svg|html|htm|xhtml|txt|xml)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
# We set a high expire value to static and big files
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif « access plus 30 days »
ExpiresByType image/jpg « access plus 30 days »
ExpiresByType image/jpeg « access plus 30 days »
ExpiresByType image/png « access plus 30 days »
ExpiresByType image/bmp « access plus 30 days »
ExpiresByType image/x-icon « access plus 30 days »
ExpiresByType image/svg+xml « access plus 30 days »
ExpiresByType text/css « access plus 30 days »
ExpiresByType application/x-javascript « access plus 30 days »
</IfModule>
# We set a special http header for some files
<IfModule mod_headers.c>
<FilesMatch « .(gif|jpg|jpeg|png|bmp|ico|svg|css|js)$ »>
Header set Cache-Control « max-age=2592000, public »
</FilesMatch>
</IfModule>
Aussi, si vous souhaitez bloquer les attaques (violentes parfois) de bots sur votre serveur qui peuvent survenir, jetez un coup d’œil à ce tutoriel pour installer le mod_evasive.
Ouf ! Nous en sommes à la moitié de la mise en place d’Apache ! Je vous recommande de recharger la configuration du serveur web en redémarrant l’HTTPd : a2restart. Vérifiez que celui-ci s’est bien relancé et qu’il ne vous a indiqué aucune erreur ! Sinon, tentez de les comprendre et de les corriger avant de passer à la suite (n’accumulons pas les ennuis !). Dans le cas où vous n’arriviez pas à les résoudre, demandez-moi en commentaire, je devrai savoir vous répondre.
Bon, passons au plus important : configurer les hôtes virtuels. Mais tout d’abord, qu’est-ce qu’un hôte virtuel ? Considérons que vous ayez plusieurs sites à héberger sur une même machine : vous avez monblog.fr, mesphotos.fr, monasso.org, monentreprise.com. Comment le serveur peut-il diriger les requêtes provenant de monblog.fr vers le dossier contenant votre blog, et de même pour les autres sites ? Vous avez tout compris : les hôtes virtuels servent à dire au serveur où se trouvent vos sites !
Entrez la commande a2sites, qui va vous ouvrir un fichier contenant les hôtes virtuels. Effacez tout, ça sera plus simple, nous allons prendre de bonnes bases. Ensuite, collez le code suivant :
# BEGIN EXAMPLE VIRTUAL HOST
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /home/user/example.com/www
<Directory /home/user/example.com/www>
Options FollowSymLinks MultiViews
Order allow,deny
allow from all
</Directory>
</VirtualHost>
# END EXAMPLE VIRTUAL HOST
Prenez ce code comme base pour chaque hôte virtuel, en en ajoutant des nouveaux à la suite des anciens. Prenez soin de remplacer www.example.com par votre domaine exact (même le www compte !), ainsi que le chemin d’accès absolu au dossier contenant votre site.
Lorsque vous avez terminé avec cela, enregistrez le fichier, fermez-le, puis redémarrez Apache : a2restart. Si vous souhaitez pouvoir utiliser le HTTPS sur vos sites (utile pour les zones d’administration), consultez la page de la documentation Ubuntu-fr consacrée à SSL avec Apache.
Nous en avons (enfin) terminé avec Apache, passons à des choses plus légères à configurer (oui, le gros est déjà fait !).
2. Configuration de PHP
PHP est essentiel à tout serveur web. C’est aussi un logiciel que nous n’avons pas besoin de configurer énormément après une installation : il est déjà fonctionnel !
Cependant, il y a un petit point sur lequel j’aimerai revenir : le poids maximal des envois de fichiers, qui est, par défaut très réduit (2 Mio à ma connaissance). Il faudrait le monter au moins à 32 Mio, voire plus. Entrez donc cette commande :
sudo nano /etc/php5/apache2/php.ini
Ensuite, utilisez les touches CTRL + W pour chercher « upload_max_filesize » et y mettre 32M en valeur, puis « post_max_size » avec la même valeur, 32M.
Si vous avez le malheur d’être chez un fournisseur d’accès Internet qui bloque le port 25 (comme Orange) permettant à la fonction mail de PHP de fonctionner, lisez ce tutoriel. Sinon, installez juste sendmail et le mail() de PHP marchera !
C’est tout, redémarrez Apache pour recharger votre configuration (a2restart, je pense que vous savez maintenant !), et hop, c’est magique, PHP se recharge aussi !
3. Configuration de MySQL
Au tout début de l’article, nous avons installé MySQL, mais pas que : PhpMyAdmin faisait aussi partie du lot. Cet excellente application web va vous permettre de gérer graphiquement depuis tout navigateur web (même Internet Explorer, si si !) vos bases de données et utilisateurs MySQL.
Pour y accéder, depuis n’importe quel hôte pointant vers votre serveur (même une IP), entrez « /phpmyadmin/ » (comme http://www.example.com/phpmyadmin/). Un identifiant vous sera demandé : renseignez « root« , avec le mot de passe fourni à l’installation. Et hop, vous débarquez sur un joli panel tout plein d’onglets : nous allons créer des utilisateurs MySQL avec des bases de données pour nos sites.
Cliquez sur l’onglet « Privilèges » afin de créer un nouvel utilisateur par site, en prenant soin de lui attribuer un mot de passe compliqué et de créer une base de donnée portant le même nom que l’utilisateur (une coche est prévue à cet effet).
C’est à peu près tout, essayez tout de même de vous familiariser avec l’interface de PhpMyAdmin : videz des tables, importez des bases de données depuis un fichier, faites des backups…
4. Réglages sur le routeur
Si vous passez par un routeur de type box (Freebox, Livebox, etc…), il va falloir le configurer pour qu’il accepte les connexions entrantes depuis l’Internet sur certains ports et les rediriger à la bonne adresse : celle de votre serveur.
Sur une Livebox, l’adresse du panel est 192.168.1.1. Une fois identifié, allez dans Serveurs LAN (Livebox de type Sagem), puis ouvrez les ports nécessaire au serveur web : le port 80 et éventuellement le 443. Si vous souhaitez pouvoir accéder à votre machine via SSH par le Net, ouvrez le port 22. Pour plus d’informations concernant ces ouvertures de ports, consultez cet article.
Pour tester si les ouvertures de port marchent, demandez à un ami de pointer vers votre IP ou votre nom de domaine. Normalement il aura une réponse. Dans le cas contraire, vérifiez vos paramètres.
4. Les trucs en plus
Au tout début de ce dossier, nous avons créé des alias pour nous simplifier la vie avec Apache, ici nous allons en refaire, mais cette fois pour Aptitude, le gestionnaire de paquets de Ubuntu Server. Certaines commandes vont vous permettre de mettre facilement à jour votre système, d’autres le nettoyer ou le purger. Ouvrez donc le fichier .bashrc (nano .bashrc dans votre dossier personnel), puis à la fin, collez :
# Aptitude aliases
alias update='sudo apt-get update'
alias upgrade='sudo apt-get upgrade'
alias dist-upgrade='sudo apt-get dist-upgrade'
alias clean='sudo apt-get autoclean'
alias remove='sudo apt-get autoremove --purge'
Ceci fait, enregistrez puis reconnectez-vous à votre session. Pour tester la mise à jour de la liste de paquets, entrez simplement update. Si des mises à jour système sont disponibles, entrez upgrade ou dist-upgrade selon le niveau d’importance. Pour nettoyer un système « sale » après la suppression de logiciels, utilisez remove et enfin, pour purger le cache d’Aptitude utilisez clean.
Une chose est quasi-indispensable sur un serveur web : un script de backups qui s’exécute à intervalles réguliers et qui vous pond des archives que vous récupérez via SSH pour les stocker en lieu sûr. Vous avez de la chance, je met à votre disposition un tout fait et qui marche plutôt bien, moyennant une petite configuration. Tout d’abord, récupérez le tarball contenant le script à ce lien, et ensuite :
- Décompressez l’archive ;
- Créez un répertoire backups dans votre dossier personnel ;
- Placez le script backup.sh dans le dossier backups ;
- Créez 3 dossiers : web, sql, conf dans backups ;
- Installez les xz-utils (sur le serveur et sur votre ordinateur client) ;
- Créez un utilisateur MySQL depuis PhpMyAdmin nommé backup et ayant tous les droits sur les autres bases de données ;
- Dans backup.sh, entrez le nom d’utilisateur UNIX après unixuser et le mot de passe de l’utilisateur backup après sqlpwd ;
- Testez votre script en réalisant un premier backup : ./backups/backup.sh et vérifiez les messages d’erreur ;
- Automatisez la tâche, tous les dimanches par exemple : crontab -e
Et dans le fichier qui s’ouvre, entrez :
30 23 * * 1 /home/user/backups/backup.sh >> /dev/null
Remplacez user par votre nom d’utilisateur UNIX. Ceci fait, fermez le fichier après avoir sauvegardez et redémarrez cron :
sudo restart cron
Les backups seront automatiquement réalisés tous les lundis à 23h 30, magique n’est-ce pas ?
Si vous souhaitez installer des scripts sur votre serveur, jetez un coup d’œil à KOLoad, Jappix et Poku, trois de mes projets qui peuvent vous servir !
Et voilà, nous y sommes : vous avez un serveur web fonctionnel prêt à vous obéir (si si, il est sous vos ordres !). Comme le dit l’expression, on n’est jamais mieux servi que par soi-même !
Cet article a été rédigé par Vanaryon le 21 février 2010 sur www.vanaryon.eu; ce site étant clos et avec l’accord de Vanaryon, le contenu a été recopié ici afin de le pérenniser.
Poster un Commentaire