Historique des versions
| Version |
Date |
Auteur |
Description |
| 0.1 (draft) |
22 Mars 2010 |
Renaud Guezennec |
Montage d’un serveur fanless, installation système, dĂ©ploiement des premiers services (ssh et apache2) et configuration rĂ©seau. |
Introduction
Faire du vrai internet, c’est facile. Ce tutorial prĂ©sente les Ă©tapes Ă effectuer. Vous comprendrez que vous en ĂŞtes pleinement capable:
Si vous savez lire, que vous êtes motivés et un minimum patient, vous y arriverez.
Pourquoi hĂ©berger son site soi-mĂŞme? Pour des raisons d’indĂ©pendance: Je souhaite ĂŞtre la seule personne capable couper ma machine du rĂ©seau. Je veux savoir oĂą sont stockĂ©s mes fichiers. Faite de votre internet un point intelligent du rĂ©seau.
N’utilisez pas internet comme un minitel 2.0.J’ai fais le choix de monter un serveur fanless (sans ventilateur), pour deux raisons principales:
- Le bruit : un ordinateur qui est destiné à fonctionner 24h/24 doit être silencieux.
- L’Ă©conomie d’Ă©nergie : mes choix techniques sont principalement vouĂ©s Ă rĂ©duire la consommation Ă©lectrique de l’appareil. Il existe des solutions bien plus performante que ma solution de ce point de vue, lĂ .
Matériel
Le matĂ©riel que j’ai choisi n’est pas vraiment la solution la plus Ă©conomique. Il est vrai qu’essayer de monter un serveur fanless n’est pas encore très facile; j’espère ouvrir un peu la voie.
On arrive dans des domaines assez inconnus. C’est très rare de trouver des cartes mères passives.
Les boitiers ont souvent un petit ventillo pour l’alimentation ou les disques. J’ai aussi souhaitĂ© avoir une capacitĂ© en disque importante, cette condition Ă©limine la plupart des solutions tout en un. Je n’avais pas envie d’avoir une boitier relier Ă un disque dur externe ou une clĂ© USB. Cependant, sachez que ces solutions existent!
Je vous communique les rĂ©fĂ©rences des diffĂ©rentes pièces que j’ai achetĂ©es.
Montage
Les pièces utiles:
le lecteur CD est vraiment optionnel, je n’en ai pas eu besoin.
La carte mère:
Le cĂ´tĂ© pratique, c’est que les cartes mères atom sont fournies avec le cpu dĂ©jĂ installĂ© et sĂ»rement soudĂ© Ă la carte. L’installation en est plus facile mais ça empèche toute Ă©volution matĂ©rielle par la suite.
le boitier:
Ce boitier est mal agencĂ©, je trouve. Il est gros pour pas grand chose. Le support disque dur n’accueille qu’un disque alors qu’il y a la place d’en mettre bien plus. C’est d’ailleur ce que j’ai fait.
Installation de la carte mère:
La première chose Ă dire, c’est que le montage ce n’est pas facile. J’ai dĂ©jĂ montĂ© pas mal d’ordinateurs. Celui-ci fut assez pĂ©nible. L’absence de documentation pour le boitier est vraiment un problème. La carte mère se colle directement sur le fond du boitier. Il n’y pas les habituelles chemises.
Les cables d’alimentations sont assez mal fichus. Ils sont trop long et surtout le socle du lecteur de CD gène Ă©normĂ©ment. Par chance, vous pouvez enlever les socles CD et disque. Faites-le pour vous dĂ©gager l’espace. Sans ça, le branchement des LED power/disque et des USB sera très compliquĂ©. Pour les disques, j’ai branchĂ© le premier sur le socle prĂ©vu Ă cet effet. Le deuxième repose sur un lit de polystirène sous le premier.
Après plusieurs tentatives, ça ne dĂ©marrĂ© pas. J’ai dĂ©branchĂ© le lecteur CD, vĂ©rifiĂ© certains branchements puis il a enfin dĂ©marrĂ©.
Installation du système et des services
Je suis un fidèle du système de paquet DEB, crĂ©er par/pour la distribution debian. J’utilise Ubuntu pour mon poste de travail mais pour un serveur, une vraie debian est bien mieux [Ce n’est que mon avis].
Dans les autres distributions pour faire un serveur, je dirais que Gentoo me parait un bon choix. (Elle reste cependant assez compliqué au premier abord.)
Comment installe-t-on un système debian?
Télécharger les bons fichiers
J’ai installĂ© Debian Lenny. Les images ont Ă©tĂ© tĂ©lĂ©chargĂ©es le 05/03/2010.
J’ai optĂ© pour un installation assez exotique. DĂ©marrer sur clĂ© USB qui embarque une image iso minimale (netinst).
L’image Ă copier sur la clĂ© s’appelle boot.img.gz
Une fois l’image tĂ©lĂ©chargĂ©e, il suffit de l’Ă©crire sur votre clĂ© usb (attention, ça Ă©crasera tout le reste) par la commande:
# zcat boot.img.gz /dev/sdX
(La commande sudo ne marche pas. Faite-le en root! C’est surement une histoire de droit de l’utilisateur sur les pĂ©riphĂ©riques).
Montez la clé:
# mount /dev/sdX /mnt
Deux images peuvent ĂŞtre utilisĂ©es: la “netinst” et la “businesscard”. J’ai choisi la netinst, elle est très lĂ©gère, l’installation est très minimaliste (Ă condition de choisir les bonnes options), cependant le système doit ĂŞtre sur internet pour l’installation.
Pour tĂ©lĂ©charger l’image netinst :
debian-504-i386-netinst.iso
Copier l’image dans la clĂ©:
# cp /chemin/vers/image/iso/debian-504-i386-netinst.iso /mnt/
Installer sa GNU/Debian
DĂ©marrer l’installation, rien de plus facile. Il suffit de brancher la clĂ© usb puis de dĂ©marrer la machine. On voit la still picture (le logo du fabriquant de la carte mère). Vint, en suite, l’Ă©cran de choix de la langue de l’installateur debian.
J’ai choisi anglais en langue et un clavier français. Après cet Ă©cran, le mini système GNU/Linux cherchera sur la clĂ© installĂ©ei, l’image iso Ă utiliser. L’installeur vous demandera de dĂ©finir les partitions. J’ai crĂ©e deux partitions sur le premier disque: le swap et le point de montage / . Mon swap fait 20 go, ça devrai ĂŞtre suffisant. Le deuxième disque est montĂ© sur /home. Après l’Ă©tape des disques, il faudra choisir le type d’installation. Par dĂ©faut, la version desktop est sĂ©lectionnĂ©. J’ai choisi l’installation du strict minimum. Il vous posera des questions pour dĂ©finir le mot de passe root et le login/password de votre utilisateur.
A l’aboutissement de l’installation, vous redĂ©marrez l’ordinateur en dĂ©branchant la clĂ© usb. Maintenant, votre ordinateur est fonctionnel. Nous pouvons lui installer les services et outils nĂ©cessaires pour le transformer en vrai serveur.
Installation des premiers services
Le service des services, le premier pas du voyage, c’est le serveur SSH. Afin d’administer son serveur Ă distante, plus besoin d’Ă©cran et de clavier. Ensuite, apache2 le serveur web, l’arme noble pour l’expression de vos libertĂ©s. PHP5 pour crĂ©er des sites cotĂ© serveur. Vim, l’Ă©diteur en ligne de commande que je prĂ©fère. Le serveur mysql avec son support php afin d’utiliser une base de donnĂ©es pour vos sites. En dernier lieu, php5-gd c’est un module assez utile pour php.
# apt-get install openssh-server
# apt-get install apache2
# apt-get install php5
# apt-get install vim
# apt-get install mysql-server php5-mysql
# apt-get install php5-gd
Sécurisation des premiers services
Configuration ssh server (la base d’une bonne sĂ©curitĂ©)
Editer en root, le fichier /etc/ssh/sshd_config.
Changer le port par dĂ©faut (22) par un port quelconque. C’est une sĂ©curitĂ© contre les attaques de force brute:
Port 22 en Port 9999
vous pouvez prendre n’importe quelle valeur comprise entre 1024 et 65536. (plus d’info)
DĂ©sactiver l’autorisation de login en root directement. Cela augmente la complexitĂ© pour forcer le passage. Les mĂ©chants devront trouver votre login et mot de passe. De plus, il est plus propre de se connecter en tant qu’utilisateur normal.
PermitRootLogin yes en PermitRootLogin no
Cette option est pour les utilisateurs avancĂ©s. Il vous faudra mettre dans votre serveur une clĂ© ssh. Cela rend l’authentification plus sĂ»re.
PasswordAuthentication yes en PasswordAuthentication no
Voici une copie de mon fichier de configuration:
# Package generated configuration file
# See the sshd(8) manpage for details
# What ports, IPs and protocols we listen for
Port 999
# Use these options to restrict which interfaces/protocols
# sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys
# in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts
# for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords
# (beware issues with some PAM modules and threads)
ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
X11Forwarding no
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
#MaxStartups 10:30:60
#Banner /etc/issue.net
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
Connexion & réseau
L’auto-hĂ©bergement nĂ©cessite certaines conditions Ă propos de votre connexion internet. Elle ne sont pas obligatoire mais cela facilite grandement la vie. Il faut une connexion en continue: type adsl ou (encore mieux) fibre optique, Ă©viter les contrats limitĂ©s Ă un volume de donnĂ©es transmis. Personnellement, je n’ai jamais utilisĂ© les “machinBox”. PrĂ©fĂ©rant acheter un modem/routeur configurable: j’utilise le Netgear DG834G et le Netgear DGN2000. Je suis très content de ses deux modèles. Il est facile d’ouvrir les ports et rediriger vers telle ou telle machine. Le contrĂ´le du DHCP permet une gestion Ă©lĂ©gante de votre rĂ©seau LAN.
Hypothèse: vous avez deux machines différentes dans votre LAN réliée à un routeur/modem.
La première des choses Ă faire est de s’assurer que le serveur recevra toujours la mĂŞme ip au sein du rĂ©seau LAN. Pour cela, il y a deux possibilitĂ©s:
- IP fixe dans le LAN
- Utilisation d’un serveur DHCP bien configurĂ©
Je dĂ©conseille la première solution. Elle nĂ©cessite la configuration de chaque poste, une mauvaise configuration peut entrainĂ© des conflits d’adresse IP. De plus, l’ajout d’une nouvelle machine vous obligera Ă configurer celle-ci.
La 2ème mĂ©thode est plus souple. Votre routeur/modem donne l’adresse IP pour chaque machine et pour fixer les adresses IP, il se fonde sur les adresses MAC.
L’adresse MAC est une sorte de numĂ©ro d’immatriculation de votre carte rĂ©seau. Il est “normalement” unique au monde. (Dans les faits, il peut ĂŞtre changer logiciellement donc…)
Il est donc possible d’obliger votre modem/routeur Ă donner l’adresse 192.168.0.3 Ă votre serveur, l’adresse 192.168.0.2 Ă votre pc de bureau et de spĂ©cifier que pour toutes autres machines, la plage 192.168.0.10 Ă 192.168.0.120 doit ĂŞtre utilisĂ©.
Pour Ă©viter les problèmes, je vous conseillerais de dĂ©sactiver le Wi-Fi de votre rĂ©seau. Ce n’est pas une technologie très sĂ»re.
La machine serveur reçoit toujours la mĂŞme ip ? Il est temps de passer Ă la redirection des ports. Les 1024 premiers ports sont rĂ©servĂ©s Ă des usages dĂ©finis. Par exemple, le port standard d’un serveur http est le 80: www.trucmuche.org et www.trucmuche.org:80 sont strictement identiques dans un navigateur.
Quelques autres ports/protocoles Ă connaitre (ou pas):
- https: 440
- FTP: 20 et 21
- ssh: 22
- smtp(mail) : 25
- DNS: 53
Nous voulons rendre accessible notre serveur sur la toile. Le port 80 doit renvoyer vers l’ip du serveur. Toutes les demandes sur le port 80 Ă l’adresse: 80.80.80.80 seront transmises vers l’ip 192.168.0.3.
La mĂŞme chose doit ĂŞtre faite pour chaque service qui tourne sur votre serveur et que vous voulez accessible depuis l’extĂ©rieur. Le ssh, par exemple, est maintenant sur le port 9999. Parametrez votre routeur/modem afin d’acheminer les connexions sur le port 9999 vers votre serveur. Pour rĂ©aliser le chapitre suivant, la redirection du port 53 est nĂ©cessaire.
Dynamique Name Server
C’est une partie que je maitrise moins. Je vais donc expliquer ce que j’ai compris. Vous avez achetĂ© un nom de domaine: trucmuche.org. vous voudriez maintenant qu’il pointe vers votre serveur homemade dans votre placard? Il y a en gros, deux solutions: GĂ©rer son DNS Ă la maison. ou le faire gĂ©rer par quelqu’un d’autre (probablement votre FAI ou votre registar).
Le premier cas est la solution la plus éducative et la plus souple: Si vous avez choisi cette option (comme moi), il faut installer bind9. Bind est le soft qui fait marcher internet. Il est le serveur DNS. Les DNS traduisent un nom de domaine en adresse ip.
Pour l’installer:
# apt-get install bind9
La configuration est bien plus complexe. Etudiont d’abord, la hiĂ©rarchie des fichiers de configuration.
homemade:~# ls -l /etc/bind/
total 48
-rw-r--r-- 1 root root 237 2009-12-20 21:21 db.0
-rw-r--r-- 1 root root 271 2009-12-20 21:21 db.127
-rw-r--r-- 1 root root 237 2009-12-20 21:21 db.255
-rw-r--r-- 1 root root 353 2009-12-20 21:21 db.empty
-rw-r--r-- 1 root root 270 2009-12-20 21:21 db.local
-rw-r--r-- 1 root root 2878 2009-12-20 21:21 db.root
-rw-r--r-- 1 root bind 907 2009-12-20 21:21 named.conf
-rw-r--r-- 1 root bind 240 2010-03-17 21:24 named.conf.local
-rw-r--r-- 1 root bind 572 2010-03-17 21:50 named.conf.options
-rw-r----- 1 bind bind 77 2010-03-17 21:05 rndc.key
-rw-r--r-- 1 root root 1317 2009-12-20 21:21 zones.rfc1918
Les fichiers de forme db.* sont des fichiers de configuration de zone dns; (nous verrons dans quelques instants, comment créer la zone pour trucmuche.org). Le fichier named.conf.options est le fichier de configuration du serveur. named.conf ne doit pas être modifier enfin sauf si vous êtes un super expert de la mort qui tue. Il convient de modifier named.conf.local pour ajouter notre zone.
Déclarons une zone sous la responsabilité de notre dns.
zone "trucmuche.org" {
type master;
file "/etc/bind/db.trucmuche.org";
};
Il y a deux type de zone: master (primaire) et slave (secondaire). Un nom de domaine est forcément attaché, au minimum, à deux serveurs dns: un seul primaire et un (ou plusieurs) secondaire. Le serveur primaire fait loi, les secondaires se mettront à jour par rapport à lui. Créer un fichier, /etc/bind/db.trucmuche.org Il doit contenir ceci:
$ORIGIN trucmuche.org.
$TTL 3h
@ IN SOA ns.trucmuche.org. gamemaster.trucmuche.org. (
2010031703
8H
2H
1W
1D )
@ IN NS ns.trucmuche.org.
@ IN MX 10 mail2.trucmuche.org.
@ IN A 80.80.80.80
ns IN A 80.80.80.80
mail2 IN A 80.80.80.80
wiki IN CNAME trucmuche.org.
forum IN CNAME trucmuche.org.
www IN CNAME trucmuche.org.
};
La première ligne n’est pas importante, elle dĂ©finit une variable Ă l’intĂ©rieur pour faciliter l’Ă©criture du fichier de conf. Le TTL est le temps de valider des informations de votre zone. Il convient de dĂ©finir une zone SOA.
- 2010031703 : Serial sorte de numero de version de la configuration, on utilise en gĂ©nĂ©ral la date du jour plus un champ 00 qu’on incrĂ©mente Ă chaque modification.
- 8H : Rafraichissement: le serveur secondaire se mettra Ă jour en respectant ce temps ci.
- 2H : retry : temps d’attente avant de rĂ©essayer quand une requĂŞte de mise Ă jour Ă Ă©chouer.
- 1W : Expire : Temps après lequel la zone est gelée si les dns secondaire ne peuvent se mettre à jour.
- 1D : Semblable Ă TTL.
@ IN NS ns.trucmuche.org.
Vous définissez le serveur de nom (DNS) qui définit la zone courante.
@ IN MX 10 mail2.trucmuche.org.
Vous définissez le serveur de mail principal de votre domaine.
@ IN A 80.80.80.80
Vous dĂ©finissez l’ip principale de votre domaine, N’oubliez pas remplacer 80.80.80.80 par votre ip fixe.
ns IN A 80.80.80.80
mail2 IN A 80.80.80.80
Définition des adresses ip pour votre serveur de nom et courriel.
wiki IN CNAME trucmuche.org.
forum IN CNAME trucmuche.org.
www IN CNAME trucmuche.org.
DĂ©finition de sorte d’alias, ainsi {wiki,forum,www}.trucmuche.org pointeront vers trucmuche.org. C’est apache (le serveur web) qui fera l’aiguillage.
Configuration Apache
Introduction
Apache, le serveur web du monde libre, le support de votre libertĂ© d’expression, votre megaphone du web. Pour le rendre fonctionnel et l’adapter Ă vos besoins, il est important de le configurer.
Les dossiers de configuration d’apache se trouve dans l’arborĂ©scence /etc/apache2/
-rw-r--r-- 1 root root 10104 2009-11-14 21:20 apache2.conf
drwxr-xr-x 2 root root 4096 2010-03-05 23:24 conf.d
-rw-r--r-- 1 root root 378 2009-11-14 21:20 envvars
-rw-r--r-- 1 root root 21 2010-03-07 12:59 httpd.conf
drwxr-xr-x 2 root root 4096 2010-03-05 23:24 mods-available
drwxr-xr-x 2 root root 4096 2010-03-07 14:42 mods-enabled
-rw-r--r-- 1 root root 513 2009-11-14 21:20 ports.conf
drwxr-xr-x 2 root root 4096 2010-03-19 00:04 sites-available
drwxr-xr-x 2 root root 4096 2010-03-19 00:05 sites-enabled
Dans l’ordre, le fichier apache2.conf dĂ©finit la configuration vitale du serveur. Il est dĂ©conseillĂ© d’y toucher.
Ce fichier définit le comportement par défaut du serveur: nombre de thread, les chemins et/ou nom de fichier pour modifier la configuration localement.
Le dossier conf.d contient des fichiers de configurations pour des points très spĂ©cifique d’apache.
envvars dĂ©finit des variables d’environnements, prĂ©sentement, le groupe et l’utilisateur sous lequel apache2 tourne. (Par dĂ©faut, www-data)
httpd.conf est partiquement vide. Nous allons utiliser des virtualhosts donc ce fichier ne prĂ©sente plus beaucoup d’intĂ©rĂŞt.
mods-available est un dossier regroupeant les fichiers de conf des modules disponibles pour apache. Un module permet d’Ă©tendre les fonctionnalitĂ©s d’apache. Php est intĂ©grĂ© dans apache sous la forme de module. Le support du ssl est aussi un module, il en existe beaucoup et vous pouvez mĂŞme crĂ©er le votre, si cela vous intĂ©resse.mods-enabled regroupe des liens symboliques vers les fichiers de configuration du module prĂ©sents dans mods-available. Il faut bien comprendre qu’un module prĂ©sent dans mods-available regroupe les modules activables et mods-enabled regroupe les modules activĂ©s. Pour activer un module, il suffit de placer les fichiers du module dans le dossier mods-enabled.
Dans le mĂŞme principe, les dossiers sites-available et sites-enabled sont rĂ©spectivement le dossier des sites internet disponibles et le des sites internet actifs. LĂ encore, il est bon de crĂ©er un fichier de configuration dans available et d’ajouter un lien dans enabled. Nous verrons dans la partie virtuals hosts, comment configurer son site ou plutĂ´t ses sites.
Utilisateur et droit
Il y a plusieurs moyens de gérer un serveur apache au niveau des droits. Cela dépend beaucoup de votre utilisation et de votre philosophie. Les différents choix:
- Votre serveur, c’est le votre. Il n’hebergera que votre site et rien d’autre.
- Votre serveur hĂ©bergera un gros site (par exemple le site d’une association, ou un site divisĂ© en plusieurs sous-domaines: forum, wiki et www). Ils seront gĂ©rĂ© par vous et une poignĂ©e d’Ă©lus.
- Vous voulez que chaque utilisateur de votre serveur aie un site web et un compte utilisateur.
Le cas #1
La situation la plus facile. Vous n’avez pas d’accès Ă ouvrir. Vous pouvez coder/mettre Ă jour votre site par ssh. Vous n’aurais pas besoin de FTP.
Je vous conseille de crĂ©er un dossier “trucmuche” dans /home/toto. Votre utilisateur (toto) aura tous les droits sur votre futur site et apache sera limitĂ©.
Render l’utilisateur www-data membre du groupe toto. Pour cela, Ă©diter le fichier /etc/group comme ceci.
# vi /etc/group
Ajouter www-data Ă la fin de la ligne toto:
toto:x:1000:www-data
Assurez-vous que le groupe toto ait les droits de lecture sur l’ensemble des sous-dossiers et fichiers prĂ©sents dans /home/toto/trucmuche. Si vous voulez permettre Ă votre site uploader des fichiers, le serveur aura besoin des droits en Ă©criture sur le rĂ©pertoire de destination. C’est un effort de codage sur votre site. Cette configuration est propre et minimaliste.
Si cette vision vous convient sauter directement Ă la section Cas 1 : virtual host
Si vous cherchez une solution plus puissante et moins minimaliste, vous pouvez lire les sections suivantes.
Le cas #2
C’est dĂ©jĂ plus risquĂ©. Je vous conseillerais de crĂ©er un utilisateur webmaster et de crĂ©er un dossier dans /home/webmaster/ par site web: [/home/webmaster/www,/home/webmaster/wiki,/home/webmaster/forum]. En termes de droits, il suffit de rendre www-data membre du groupe webmaster:
# vi /etc/group
Ajouter www-data Ă la fin de la ligne webmaster:
webmaster:x:1001:www-data
Si vous déployez des outils libres, comme un CMS, un wiki et un forum. Il vous suffira de créer des comptes administrateurs dans ces outils.
Si vous voulez donner un accès plus direct. Il est possible de mettre en place un FTP ou bien de donner les identifiants de webmaster.
[Il est encore plus intelligent de crĂ©er un utilisateur pour chaque “Ă©lu” et de rendre ces utilisateurs membre du groupe webmaster. Les fichiers devront ĂŞtre modifiable par les membres du groupe. Cependant, il vous sera plus facile de connaitre l’identitĂ© d’une personne responsable d’une bĂ©tise/erreur].
Si cette description répond à votre besoin aller directement à la section Cas 2 : virtual host
Le cas #3
Le plus complèxe des trois Ă mettre en place. Vous voulez que chaque utilisateur dispose d’un dossier particulier dans leur home (html_public ou www). Ils auront un accès direct au serveur par ssh ou FTP. Chaque utilisateur aura une base de donnĂ©es. Ce cas est assez frĂ©quent dans les universitĂ©s et/ou hĂ©bergeurs. Pour des raisons de sĂ©curitĂ©s, je vous conseillerais de ne pas donner d’accès ssh.
Cette configuation est relativement complexe, je vous conseillerais de jouer un peu avec les cas précédents. Afin de bien, vous faire la main sur les fichiers de configuration apache et autres.
La gestion des droits est délicate. Il y a plusieurs approches:
- Rendre tout le monde membre du groupe d’apache [www-data]
- l’opposĂ©; n’ajouter personne mais les fichiers devront ĂŞtre accessible en lecture pour tous le monde.
- Le troisième cas, Ă©xĂ©cuter apache avec les droits d’un autre utilisateur (voir la section Cas 3 : virtual host)
les virtuals hosts
Ces cas typiques sont des exemples. N’hesitez pas Ă mĂ©langer les solutions techniques.
Un site unique (cas 1)
La première chose à faire est de créer un dossier dans votre home /home/toto/monsite/.
$ mkdir /home/toto/monsite
Il faut ensuite créer un lien de
/var/www/
vers
/home/toto/monsite/
. Pour cela, tapez la commande suivante dans un terminal (root):
# cd /var/www
# ln -s /home/toto/monsite site
N’oubliez pas de vĂ©rifier les droits du groupe.
Ouvrez le fichier /etc/apache2/site-enabled/000-default pour y mettre ceci :
[Les lignes commençant par # sont des commentaires, je les utilise pour expliquer]
<VirtualHost 192.168.0.3:80>
ServerAdmin toto@trucmuche.org
ServerName trucmuche.org
DocumentRoot /var/www/site1/
#nous définissons le dossier racine du site.
<Directory /var/www/site1>
Options Indexes FollowSymLinks
# Indexes : autorise apache à générer des indexes.
# nous autorisons apache Ă suivre les liens symboliques.
# Important car /var/www/site1/ est un lien symbolique
# vers /home/toto/monsite/
AllowOverride All
# Nous autorisons Apache Ă changer sa configuration
# si un fichier .htaccess existe dans le dossier
# /var/www/site1
Order allow,deny
# Ordre de description des règles
allow from all
# Autorise tout le monde
# (pas besoin de règle d'interdiction)
# Vous pouvez ajouter une plage d'ip interdite
# avec une ligne du genre Deny from XXX.XXX.XXX.XXX/XXX
</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
# Configuration par défaut des logs
# A savoir:
# Niveau de log: avertissement (warm).
# [debug, info, notice, warn, error, crit]
# Fichier d'enregistrement des logs dans:
# /var/log/apache2/access.log
# La signature du serveur est activée.
Alias /phpMyAdmin/ "/var/www/phpMyAdmin/"
<Directory "/var/www/phpMyAdmin/">
AllowOverride None
Order allow,deny
Deny from all
Allow from 192.168.0.0/24
#on restrint l'accès au gestionnaire de base de données.
#Seule les adresses de type 192.168.0.XXX seront acceptées.
</Directory>
</VirtualHost>
Un gros site avec sous-domaine (cas 2)
Je vais prendre, dans cet exemple, trois sous-domaines : www, wiki et forum qui afficheront respectivement la page principale du site, un wiki et un forum. La première étape consiste à créer 3 fichiers de configuration dans /etc/apache2/sites-available (en root).
# cd /etc/apache2/sites-available
# touch wiki.trucmuche.org
# touch forum.trucmuche.org
# touch www.trucmuche.org
Il convient ensuite d’installer les diffĂ©rents logiciels. A titre d’exemple, je vous explique la marche Ă suivre pour installer mediawiki, fluxbb et drupal.
Positionnez-vous, d’abord, dans le rĂ©pertoire de votre utilisateur webmaster (Il faut ĂŞtre l’utilisateur webmaster).
Téléchargement des logiciels et installation:
$ cd /home/webmaster
$ wget http://download.wikimedia.org/mediawiki/1.15/mediawiki-1.15.1.tar.gz
$ wget http://fluxbb.org/download/releases/1.4-rc1/fluxbb-1.4-rc1.tar.gz
$ wget http://ftp.drupal.org/files/projects/drupal-6.16.tar.gz
$ tar -xzvf drupal-6.16.tar.gz
$ mv drupal-6.16/ drupal
$ tar -xzvf fluxbb-1.4-rc1.tar.gz
$ mv fluxbb-1.4-rc1/ forum
$ tar -xzvf mediawiki-1.15.1.tar.gz
$ mv mediawiki-1.15.1/ wiki
Après cette étape, vous devriez avoir les dossiers : wiki, forum et drupal dans /home/webmaster
Il faut maintenant faire la configuration du serveur apache pour qu’il aille chercher les fichiers au bon endroit.
Commençons par drupal (qui sera www.trucmuche.org): Éditez le ficher : /etc/apache2/sites-available/www.trucmuche.org qui est normalement vide.
<VirtualHost *:80>
ServerName www.trucmuche.org
#definition du sous-domaine
ServerAdmin webmaster@trucmuche.org
DocumentRoot /var/www/webmaster/drupal
<Directory /home/www/webmaster/drupal>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/trucmuche/trucmuche.log combined
# Nous spécialisons le log de sortie pour clarifier les logs.
</VirtualHost>
Il faut faire la mĂŞme chose pour le wiki et le forum:
<VirtualHost *:80>
ServerName wiki.trucmuche.org
ServerAdmin webmaster@trucmuche.org
DocumentRoot /var/www/webmaster/wiki
<Directory /home/www/webmaster/wiki>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/trucmuche/wiki.trucmuche.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName forum.trucmuche.org
ServerAdmin webmaster@trucmuche.org
DocumentRoot /var/www/webmaster/forum
<Directory /home/www/webmaster/forum>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/trucmuche/forum.trucmuche.log combined
</VirtualHost>
Pour finaliser la configuration, il faut créer des liens symboliques dans /etc/apache2/sites-enabled/
# cd /etc/apache2/sites-enabled/
# ln -s ../sites-available/forum.trucmuche.org forum.trucmuche.org
# ln -s ../sites-available/wiki.trucmuche.org wiki.trucmuche.org
# ln -s ../sites-available/www.trucmuche.org www.trucmuche.org
L’usine Ă site (cas 3)
Je ne donnerai pas de fichier de configuration Apache dans cette section. Je vous conseillerais de regarder du côté des hotes virtuels dynamiques et/ou de la commande suEXEC.
Activer et configurer certains modules : url_rewrite et php5.
Les modules url_rewrite et php sont très utilisés. Ils apportent des fonctionnalités bien appréciables.
Pour les activer, il suffit de faire un lien de leurs fichiers de mods-available vers mods-enabled. [Il est possible qu’ils soient dĂ©jĂ activĂ©s par dĂ©faut.]
# cd /etc/apache2/mods-enabled/
# ln -s ../mods-available/php5.load php5.load
# ln -s ../mods-available/php5.load php5.conf
# ln -s ../mods-available/rewrite.load rewrite.load
Si vous voulez jouer avec la configuration de php5: éditer le fichier /etc/php5/apache2/php.ini.
Pour utiliser url_rewrite, il suffit d’activer le mode rewrite dans un .htaccess en spĂ©cifiant les règles de réécriture.
Installer une solution mail: Smtp + imap + spamAssassin
Section en cours d’Ă©criture.
Script de sauvegarde & crontab
Il est important d’assurer la pĂ©rĂ©nitĂ© de ses donnĂ©es. C’est pourquoi, il est très fortement conseillĂ© de mettre, en production, un serveur uniquement si un système de sauvegarde et restauration est fonctionnel. Les Ă©lĂ©ments Ă mettre dans une sauvegarde sont:
- La hiérarchie de dossiers et fichiers du site/des sites
- Un dump des bases de données
- Les fichiers de configuration (si vous estimez que les modifications sont importantes)
- Le dossier /home (dans le cas ou des utilisateurs ont des données autres que leur site web.)
#!/bin/sh
HOST='ftp.somewhere.fr'
USERFTP='toto@somewhere.fr'
USER=toto
PASSWDFTP='bidule'
PASSWDSQL='bidule'
DATE=`date +%d`
DRUPALFILE=/home/$USER/script/backup-drupal-file-$DATE.sql
WIKIFILE=/home/$USER/script/backup-wiki-file-$DATE.sql
FORUMFILE=/home/$USER/script/backup-forum-file-$DATE.sql
ARCHIVE=/home/$USER/monsite-$DATE.tar.gz
#tar le dossier /home/toto/monsite
tar -czvf $ARCHIVE /home/$USER/monsite
#dump de postgresql
export PGPASSWORD=passwordPostgresql
pg_dump -f $DRUPALFILE -U $USER drupal
#dump de mysql
mysqldump --set-charset -u $USER -p$PASSWDSQL wiki > $WIKIFILE
mysqldump --set-charset -u $USER -p$PASSWDSQL forum > $FORUMFILE
ftp -n $HOST <<END_SCRIPT
quote USER $USERFTP
quote PASS $PASSWD
send $DRUPALFILE backup_drupal_$DATE.sql
send $WIKIFILE backup_wiki_$DATE.sql
send $FORUMFILE backup_forum_$DATE.sql
send $ARCHIVE monsite-$DATE.tar.gz
quit
END_SCRIPT
exit 0
VoilĂ , un exemple de script de sauvergarde. Il exporte deux bases de donnĂ©es mysql et d’une postgresql dans des fichiers .sql. Il fait aussi une archive du dossier /home/toto/monsite. Tous les fichiers ont le numero du jour du le mois (Ca fait une rotation de sauvegarde de 30 jours en moyennes). Les sauvegardes sont envoyer par FTP sur un autre serveur. Bien entendu, rien ne vous empĂŞche d’amĂ©liorer ça. Vous trouverez des multitudes de scripts pour vous aider.
Il faut ensuite executer ce script de façon régulière. Crontab est là pour vous sauver. Tapez la commande suivantes pour ajouter une règle.
# crontab -e
Ajouter la ligne suivante dans le fichier.
0 0 * * * sh /home/toto/script/sauvegarde.sh
La sauvegarde se fera tous les jours Ă minuit.
Foire Aux Questions
Mon serveur semble ne pas marcher Ă l’extĂ©rieur de mon rĂ©seau local.
Vérifiez bien la configuration de votre routeur. Les connexions entrantes sur le port 80 (http) doivent être redirigées vers votre serveur.
Je n’arrive pas Ă uploader des fichiers.
C’est probablement un problème de droit en Ă©criture sur le serveur. Apache doit pouvoir Ă©crire dans le rĂ©pertoire de partage choisi. (chmod g+w et chown user:www-data)
Plus d’informations