{"id":21,"date":"2010-03-22T13:51:16","date_gmt":"2010-03-22T13:51:16","guid":{"rendered":"http:\/\/liberty.fdn.fr\/?p=21"},"modified":"2025-08-17T20:13:05","modified_gmt":"2025-08-17T20:13:05","slug":"sauto-heberger-avec-un-serveur-fanless-sur-un-systeme-gnudebian","status":"publish","type":"post","link":"http:\/\/renaudguezennec.eu\/index.php\/2010\/03\/22\/sauto-heberger-avec-un-serveur-fanless-sur-un-systeme-gnudebian\/","title":{"rendered":"S&#8217;auto-h\u00e9berger avec un serveur Fanless sur un syst\u00e8me GNU\/Debian."},"content":{"rendered":"<div id=\"moz-reader-content\">\n<div id=\"readability-page-1\" class=\"page\">\n<div id=\"millieu\" class=\"divmilieu\">\n<h3>Historique des versions<\/h3>\n<table style=\"height: 158px;\" width=\"552\">\n<tbody>\n<tr>\n<th>Version<\/th>\n<th>Date<\/th>\n<th>Auteur<\/th>\n<th>Description<\/th>\n<\/tr>\n<tr>\n<td>0.1 (draft)<\/td>\n<td>22\u00a0Mars\u00a02010<\/td>\n<td>Renaud\u00a0Guezennec<\/td>\n<td>Montage d&#8217;un serveur fanless, installation syst\u00e8me, d\u00e9ploiement des premiers services (ssh et apache2) et configuration r\u00e9seau.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ul>\n<li><a href=\"\/#intro\">Introduction<\/a><\/li>\n<li><a href=\"\/#hardware\">Mat\u00e9riel<\/a><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"\/#montage\">Montage<\/a><\/li>\n<li><a href=\"\/#debian\">Installation du syst\u00e8me et des services<\/a><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"\/#download\">T\u00e9l\u00e9charger les bons fichiers<\/a><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"\/#install\">Installer sa GNU\/Debian<\/a><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"\/#services\">Installation des premiers services<\/a><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"\/#secu\">S\u00e9curisation des premiers services<\/a><\/li>\n<li><a href=\"\/#network\">Connexion &amp; r\u00e9seau<\/a><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"\/#dns\">DNS<\/a><\/li>\n<li>\u00a0\u00a0\u00a0\u00a0<a href=\"\/#apache\">Configuration Apache<\/a><\/li>\n<li><a href=\"\/#crontab\">Script de sauvegarde &amp; crontab<\/a><\/li>\n<li><a href=\"\/#faq\">Foire Aux Questions<\/a><\/li>\n<li><a href=\"\/#more\">Plus d&#8217;informations<\/a><\/li>\n<\/ul>\n<h2 id=\"intro\">Introduction<\/h2>\n<p>Faire du vrai internet, c&#8217;est facile. Ce tutorial pr\u00e9sente les \u00e9tapes \u00e0 effectuer. Vous comprendrez que vous en \u00eates pleinement capable:<br \/>\nSi vous savez lire, que vous \u00eates motiv\u00e9s et un minimum patient, vous y arriverez.<\/p>\n<p>Pourquoi h\u00e9berger son site soi-m\u00eame? Pour des raisons d&#8217;ind\u00e9pendance: Je souhaite \u00eatre la seule personne capable couper ma machine du r\u00e9seau. Je veux savoir o\u00f9 sont stock\u00e9s mes fichiers. Faite de votre internet un point intelligent du r\u00e9seau.<br \/>\nN&#8217;utilisez pas internet comme un <a href=\"http:\/\/www.fdn.fr\/minitel.avi\">minitel 2.0<\/a>.J&#8217;ai fais le choix de monter un serveur fanless (sans ventilateur), pour deux raisons principales:<\/p>\n<ul>\n<li>Le bruit : un ordinateur qui est destin\u00e9 \u00e0 fonctionner 24h\/24 doit \u00eatre silencieux.<\/li>\n<li>L&#8217;\u00e9conomie d&#8217;\u00e9nergie : mes choix techniques sont principalement vou\u00e9s \u00e0 r\u00e9duire la consommation \u00e9lectrique de l&#8217;appareil. Il existe des solutions bien plus performante que ma solution de ce point de vue, l\u00e0.<\/li>\n<\/ul>\n<h2 id=\"hardware\">Mat\u00e9riel<\/h2>\n<p>Le mat\u00e9riel que j&#8217;ai choisi n&#8217;est pas vraiment la solution la plus \u00e9conomique. Il est vrai qu&#8217;essayer de monter un serveur fanless n&#8217;est pas encore tr\u00e8s facile; j&#8217;esp\u00e8re ouvrir un peu la voie.<br \/>\nOn arrive dans des domaines assez inconnus. C&#8217;est tr\u00e8s rare de trouver des cartes m\u00e8res passives.<br \/>\nLes boitiers ont souvent un petit ventillo pour l&#8217;alimentation ou les disques. J&#8217;ai aussi souhait\u00e9 avoir une capacit\u00e9 en disque importante, cette condition \u00e9limine la plupart des solutions tout en un. Je n&#8217;avais pas envie d&#8217;avoir une boitier relier \u00e0 un disque dur externe ou une cl\u00e9 USB. Cependant, sachez que ces solutions existent!<\/p>\n<p>Je vous communique les r\u00e9f\u00e9rences des diff\u00e9rentes pi\u00e8ces que j&#8217;ai achet\u00e9es.<\/p>\n<h3 id=\"montage\">Montage<\/h3>\n<h4>Les pi\u00e8ces utiles:<\/h4>\n<p><a href=\"http:\/\/renaudguezennec.eu\/prog\/tutorial\/15\/DSCN1200.JPG\"><img decoding=\"async\" src=\"http:\/\/renaudguezennec.eu\/prog\/tutorial\/15\/miniature\/mini_DSCN1200.JPG\" alt=\"ensemble des composants\" \/><\/a>le lecteur CD est vraiment optionnel, je n&#8217;en ai pas eu besoin.<\/p>\n<h4>La carte m\u00e8re:<\/h4>\n<p><a href=\"http:\/\/renaudguezennec.eu\/prog\/tutorial\/15\/DSCN1205.JPG\"><img decoding=\"async\" src=\"http:\/\/renaudguezennec.eu\/prog\/tutorial\/15\/miniature\/mini_DSCN1205.JPG\" alt=\"carte m\u00e8re\" \/><\/a>Le c\u00f4t\u00e9 pratique, c&#8217;est que les cartes m\u00e8res atom sont fournies avec le cpu d\u00e9j\u00e0 install\u00e9 et s\u00fbrement soud\u00e9 \u00e0 la carte. L&#8217;installation en est plus facile mais \u00e7a emp\u00e8che toute \u00e9volution mat\u00e9rielle par la suite.<\/p>\n<h4>le boitier:<\/h4>\n<p><a href=\"http:\/\/renaudguezennec.eu\/prog\/tutorial\/15\/DSCN1206.JPG\"><img decoding=\"async\" src=\"http:\/\/renaudguezennec.eu\/prog\/tutorial\/15\/miniature\/mini_DSCN1206.JPG\" alt=\"boitier\" \/><\/a>Ce boitier est mal agenc\u00e9, je trouve. Il est gros pour pas grand chose. Le support disque dur n&#8217;accueille qu&#8217;un disque alors qu&#8217;il y a la place d&#8217;en mettre bien plus. C&#8217;est d&#8217;ailleur ce que j&#8217;ai fait.<\/p>\n<h4>Installation de la carte m\u00e8re:<\/h4>\n<p>La premi\u00e8re chose \u00e0 dire, c&#8217;est que le montage ce n&#8217;est pas facile. J&#8217;ai d\u00e9j\u00e0 mont\u00e9 pas mal d&#8217;ordinateurs. Celui-ci fut assez p\u00e9nible. L&#8217;absence de documentation pour le boitier est vraiment un probl\u00e8me. La carte m\u00e8re se colle directement sur le fond du boitier. Il n&#8217;y pas les habituelles chemises.<\/p>\n<p><a href=\"http:\/\/renaudguezennec.eu\/prog\/tutorial\/15\/DSCN1208.JPG\"><img decoding=\"async\" src=\"http:\/\/renaudguezennec.eu\/prog\/tutorial\/15\/miniature\/mini_DSCN1208.JPG\" alt=\"installation\" \/><\/a>Les cables d&#8217;alimentations sont assez mal fichus. Ils sont trop long et surtout le socle du lecteur de CD g\u00e8ne \u00e9norm\u00e9ment. Par chance, vous pouvez enlever les socles CD et disque. Faites-le pour vous d\u00e9gager l&#8217;espace. Sans \u00e7a, le branchement des LED power\/disque et des USB sera tr\u00e8s compliqu\u00e9. Pour les disques, j&#8217;ai branch\u00e9 le premier sur le socle pr\u00e9vu \u00e0 cet effet. Le deuxi\u00e8me repose sur un lit de polystir\u00e8ne sous le premier.<br \/>\nApr\u00e8s plusieurs tentatives, \u00e7a ne d\u00e9marr\u00e9 pas. J&#8217;ai d\u00e9branch\u00e9 le lecteur CD, v\u00e9rifi\u00e9 certains branchements puis il a enfin d\u00e9marr\u00e9.<\/p>\n<h2 id=\"debian\">Installation du syst\u00e8me et des services<\/h2>\n<p>Je suis un fid\u00e8le du syst\u00e8me de paquet DEB, cr\u00e9er par\/pour la distribution debian. J&#8217;utilise Ubuntu pour mon poste de travail mais pour un serveur, une vraie debian est bien mieux [Ce n&#8217;est que mon avis].<br \/>\nDans les autres distributions pour faire un serveur, je dirais que Gentoo me parait un bon choix. (Elle reste cependant assez compliqu\u00e9 au premier abord.)<br \/>\nComment installe-t-on un syst\u00e8me debian?<\/p>\n<h3 id=\"download\">T\u00e9l\u00e9charger les bons fichiers<\/h3>\n<p>J&#8217;ai install\u00e9 Debian Lenny. Les images ont \u00e9t\u00e9 t\u00e9l\u00e9charg\u00e9es le 05\/03\/2010.<br \/>\nJ&#8217;ai opt\u00e9 pour un installation assez exotique. D\u00e9marrer sur cl\u00e9 USB qui embarque une image iso minimale (netinst).<\/p>\n<p>L&#8217;image \u00e0 copier sur la cl\u00e9 s&#8217;appelle <a href=\"http:\/\/ftp.nl.debian.org\/debian\/dists\/lenny\/main\/installer-i386\/current\/images\/hd-media\/boot.img.gz\">boot.img.gz<\/a><br \/>\nUne fois l&#8217;image t\u00e9l\u00e9charg\u00e9e, il suffit de l&#8217;\u00e9crire sur votre cl\u00e9 usb (attention, \u00e7a \u00e9crasera tout le reste) par la commande:<\/p>\n<pre class=\"code\"># zcat boot.img.gz \/dev\/sdX\r\n<\/pre>\n<p>(La commande sudo ne marche pas. Faite-le en root! C&#8217;est surement une histoire de droit de l&#8217;utilisateur sur les p\u00e9riph\u00e9riques).<\/p>\n<p>Montez la cl\u00e9:<\/p>\n<pre class=\"code\"># mount \/dev\/sdX \/mnt\r\n<\/pre>\n<p>Deux images peuvent \u00eatre utilis\u00e9es: la &#8220;netinst&#8221; et la &#8220;businesscard&#8221;. J&#8217;ai choisi la netinst, elle est tr\u00e8s l\u00e9g\u00e8re, l&#8217;installation est tr\u00e8s minimaliste (\u00e0 condition de choisir les bonnes options), cependant le syst\u00e8me doit \u00eatre sur internet pour l&#8217;installation.<\/p>\n<p class=\"readability-styled\">Pour t\u00e9l\u00e9charger l&#8217;image netinst :<\/p>\n<p><a href=\"http:\/\/cdimage.debian.org\/debian-cd\/5.0.4\/i386\/iso-cd\/debian-504-i386-netinst.iso\">debian-504-i386-netinst.iso<\/a><br \/>\nCopier l&#8217;image dans la cl\u00e9:<\/p>\n<pre class=\"code\"># cp \/chemin\/vers\/image\/iso\/debian-504-i386-netinst.iso \/mnt\/\r\n<\/pre>\n<h3 id=\"install\">Installer sa GNU\/Debian<\/h3>\n<p>D\u00e9marrer l&#8217;installation, rien de plus facile. Il suffit de brancher la cl\u00e9 usb puis de d\u00e9marrer la machine. On voit la still picture (le logo du fabriquant de la carte m\u00e8re). Vint, en suite, l&#8217;\u00e9cran de choix de la langue de l&#8217;installateur debian.<\/p>\n<p><a href=\"http:\/\/renaudguezennec.eu\/prog\/tutorial\/15\/DSCN1211.JPG\"><img decoding=\"async\" src=\"http:\/\/renaudguezennec.eu\/prog\/tutorial\/15\/miniature\/mini_DSCN1211.JPG\" alt=\"langue\" \/><\/a>J&#8217;ai choisi anglais en langue et un clavier fran\u00e7ais. Apr\u00e8s cet \u00e9cran, le mini syst\u00e8me GNU\/Linux cherchera sur la cl\u00e9 install\u00e9ei, l&#8217;image iso \u00e0 utiliser. L&#8217;installeur vous demandera de d\u00e9finir les partitions. J&#8217;ai cr\u00e9e deux partitions sur le premier disque: le swap et le point de montage \/ . Mon swap fait 20 go, \u00e7a devrai \u00eatre suffisant. Le deuxi\u00e8me disque est mont\u00e9 sur \/home. Apr\u00e8s l&#8217;\u00e9tape des disques, il faudra choisir le type d&#8217;installation. Par d\u00e9faut, la version desktop est s\u00e9lectionn\u00e9. J&#8217;ai choisi l&#8217;installation du strict minimum. Il vous posera des questions pour d\u00e9finir le mot de passe root et le login\/password de votre utilisateur.<\/p>\n<p>A l&#8217;aboutissement de l&#8217;installation, vous red\u00e9marrez l&#8217;ordinateur en d\u00e9branchant la cl\u00e9 usb. Maintenant, votre ordinateur est fonctionnel. Nous pouvons lui installer les services et outils n\u00e9cessaires pour le transformer en vrai serveur.<\/p>\n<h3 id=\"services\">Installation des premiers services<\/h3>\n<p>Le service des services, le premier pas du voyage, c&#8217;est le serveur SSH. Afin d&#8217;administer son serveur \u00e0 distante, plus besoin d&#8217;\u00e9cran et de clavier. Ensuite, apache2 le serveur web, l&#8217;arme noble pour l&#8217;expression de vos libert\u00e9s. PHP5 pour cr\u00e9er des sites cot\u00e9 serveur. Vim, l&#8217;\u00e9diteur en ligne de commande que je pr\u00e9f\u00e8re. Le serveur mysql avec son support php afin d&#8217;utiliser une base de donn\u00e9es pour vos sites. En dernier lieu, php5-gd c&#8217;est un module assez utile pour php.<\/p>\n<pre class=\"code\"># apt-get install openssh-server\r\n# apt-get install apache2\r\n# apt-get install php5\r\n# apt-get install vim\r\n# apt-get install mysql-server php5-mysql\r\n# apt-get install php5-gd\r\n<\/pre>\n<h3 id=\"secu\">S\u00e9curisation des premiers services<\/h3>\n<h4>Configuration ssh server (la base d&#8217;une bonne s\u00e9curit\u00e9)<\/h4>\n<p>Editer en root, le fichier <span class=\"filename\">\/etc\/ssh\/sshd_config.<\/span><br \/>\nChanger le port par d\u00e9faut (22) par un port quelconque. C&#8217;est une s\u00e9curit\u00e9 contre les attaques de force brute:<br \/>\n<span class=\"filename\">Port 22<\/span> en <span class=\"filename\">Port 9999<\/span><br \/>\nvous pouvez prendre n&#8217;importe quelle valeur comprise entre 1024 et 65536. (<a href=\"http:\/\/fr.wikipedia.org\/wiki\/Port_%28logiciel%29\">plus d&#8217;info<\/a>)<br \/>\nD\u00e9sactiver l&#8217;autorisation de login en root directement. Cela augmente la complexit\u00e9 pour forcer le passage. Les m\u00e9chants devront trouver votre login et mot de passe. De plus, il est plus propre de se connecter en tant qu&#8217;utilisateur normal.<br \/>\n<span class=\"filename\">PermitRootLogin yes<\/span> en <span class=\"filename\">PermitRootLogin no<\/span><br \/>\nCette option est pour les utilisateurs avanc\u00e9s. Il vous faudra mettre dans votre serveur une cl\u00e9 ssh. Cela rend l&#8217;authentification plus s\u00fbre.<br \/>\n<span class=\"filename\">PasswordAuthentication yes<\/span> en <span class=\"filename\">PasswordAuthentication no<\/span><\/p>\n<p>Voici une copie de mon fichier de configuration:<\/p>\n<pre class=\"code\"># Package generated configuration file\r\n# See the sshd(8) manpage for details\r\n\r\n# What ports, IPs and protocols we listen for\r\nPort 999\r\n# Use these options to restrict which interfaces\/protocols \r\n# sshd will bind to\r\n#ListenAddress ::\r\n#ListenAddress 0.0.0.0\r\nProtocol 2\r\n# HostKeys for protocol version 2\r\nHostKey \/etc\/ssh\/ssh_host_rsa_key\r\nHostKey \/etc\/ssh\/ssh_host_dsa_key\r\n#Privilege Separation is turned on for security\r\nUsePrivilegeSeparation yes\r\n\r\n# Lifetime and size of ephemeral version 1 server key\r\nKeyRegenerationInterval 3600\r\nServerKeyBits 768\r\n\r\n# Logging\r\nSyslogFacility AUTH\r\nLogLevel INFO\r\n\r\n# Authentication:\r\nLoginGraceTime 120\r\nPermitRootLogin no\r\nStrictModes yes\r\n\r\nRSAAuthentication yes\r\nPubkeyAuthentication yes\r\n#AuthorizedKeysFile\t%h\/.ssh\/authorized_keys\r\n\r\n# Don't read the user's ~\/.rhosts and ~\/.shosts files\r\nIgnoreRhosts yes\r\n# For this to work you will also need host keys\r\n# in \/etc\/ssh_known_hosts\r\nRhostsRSAAuthentication no\r\n# similar for protocol version 2\r\nHostbasedAuthentication no\r\n# Uncomment if you don't trust ~\/.ssh\/known_hosts \r\n# for RhostsRSAAuthentication\r\n#IgnoreUserKnownHosts yes\r\n\r\n# To enable empty passwords, change to yes (NOT RECOMMENDED)\r\nPermitEmptyPasswords no\r\n\r\n# Change to yes to enable challenge-response passwords\r\n# (beware issues with some PAM modules and threads)\r\nChallengeResponseAuthentication no\r\n\r\n# Change to no to disable tunnelled clear text passwords\r\nPasswordAuthentication no\r\n\r\n# Kerberos options\r\n#KerberosAuthentication no\r\n#KerberosGetAFSToken no\r\n#KerberosOrLocalPasswd yes\r\n#KerberosTicketCleanup yes\r\n\r\n# GSSAPI options\r\n#GSSAPIAuthentication no\r\n#GSSAPICleanupCredentials yes\r\n\r\nX11Forwarding no\r\nX11DisplayOffset 10\r\nPrintMotd no\r\nPrintLastLog yes\r\nTCPKeepAlive yes\r\n#UseLogin no\r\n\r\n#MaxStartups 10:30:60\r\n#Banner \/etc\/issue.net\r\n\r\n# Allow client to pass locale environment variables\r\nAcceptEnv LANG LC_*\r\n\r\nSubsystem sftp \/usr\/lib\/openssh\/sftp-server\r\n\r\nUsePAM yes\r\n<\/pre>\n<h2 id=\"network\">Connexion &amp; r\u00e9seau<\/h2>\n<p>L&#8217;auto-h\u00e9bergement n\u00e9cessite certaines conditions \u00e0 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, \u00e9viter les contrats limit\u00e9s \u00e0 un volume de donn\u00e9es transmis. Personnellement, je n&#8217;ai jamais utilis\u00e9 les &#8220;machinBox&#8221;. Pr\u00e9f\u00e9rant acheter un modem\/routeur configurable: j&#8217;utilise le <a href=\"http:\/\/www.ldlc.com\/fiche\/PB00019332.html\">Netgear DG834G<\/a> et le <a href=\"http:\/\/www.ldlc.com\/fiche\/PB00076651.html\">Netgear DGN2000<\/a>. Je suis tr\u00e8s content de ses deux mod\u00e8les. Il est facile d&#8217;ouvrir les ports et rediriger vers telle ou telle machine. Le contr\u00f4le du DHCP permet une gestion \u00e9l\u00e9gante de votre r\u00e9seau LAN.<\/p>\n<p>Hypoth\u00e8se: vous avez deux machines diff\u00e9rentes dans votre LAN r\u00e9li\u00e9e \u00e0 un routeur\/modem.<\/p>\n<p>La premi\u00e8re des choses \u00e0 faire est de s&#8217;assurer que le serveur recevra toujours la m\u00eame ip au sein du r\u00e9seau LAN. Pour cela, il y a deux possibilit\u00e9s:<\/p>\n<ul>\n<li>IP fixe dans le LAN<\/li>\n<li>Utilisation d&#8217;un serveur DHCP bien configur\u00e9<\/li>\n<\/ul>\n<p>Je d\u00e9conseille la premi\u00e8re solution. Elle n\u00e9cessite la configuration de chaque poste, une mauvaise configuration peut entrain\u00e9 des conflits d&#8217;adresse IP. De plus, l&#8217;ajout d&#8217;une nouvelle machine vous obligera \u00e0 configurer celle-ci.<br \/>\nLa 2\u00e8me m\u00e9thode est plus souple. Votre routeur\/modem donne l&#8217;adresse IP pour chaque machine et pour fixer les adresses IP, il se fonde sur les adresses MAC.<br \/>\nL&#8217;adresse MAC est une sorte de num\u00e9ro d&#8217;immatriculation de votre carte r\u00e9seau. Il est &#8220;normalement&#8221; unique au monde. (Dans les faits, il peut \u00eatre changer logiciellement donc&#8230;)<br \/>\nIl est donc possible d&#8217;obliger votre modem\/routeur \u00e0 donner l&#8217;adresse 192.168.0.3 \u00e0 votre serveur, l&#8217;adresse 192.168.0.2 \u00e0 votre pc de bureau et de sp\u00e9cifier que pour toutes autres machines, la plage 192.168.0.10 \u00e0 192.168.0.120 doit \u00eatre utilis\u00e9.<br \/>\nPour \u00e9viter les probl\u00e8mes, je vous conseillerais de d\u00e9sactiver le Wi-Fi de votre r\u00e9seau. Ce n&#8217;est pas une technologie tr\u00e8s s\u00fbre.<\/p>\n<p>La machine serveur re\u00e7oit toujours la m\u00eame ip ? Il est temps de passer \u00e0 la redirection des ports. Les 1024 premiers ports sont r\u00e9serv\u00e9s \u00e0 des usages d\u00e9finis. Par exemple, le port standard d&#8217;un serveur http est le 80: www.trucmuche.org et www.trucmuche.org:80 sont strictement identiques dans un navigateur.<br \/>\nQuelques autres ports\/protocoles \u00e0 connaitre (ou pas):<\/p>\n<ul>\n<li>https: 440<\/li>\n<li>FTP: 20 et 21<\/li>\n<li>ssh: 22<\/li>\n<li>smtp(mail) : 25<\/li>\n<li>DNS: 53<\/li>\n<\/ul>\n<p>Nous voulons rendre accessible notre serveur sur la toile. Le port 80 doit renvoyer vers l&#8217;ip du serveur. Toutes les demandes sur le port 80 \u00e0 l&#8217;adresse: 80.80.80.80 seront transmises vers l&#8217;ip 192.168.0.3.<br \/>\nLa m\u00eame chose doit \u00eatre faite pour chaque service qui tourne sur votre serveur et que vous voulez accessible depuis l&#8217;ext\u00e9rieur. Le ssh, par exemple, est maintenant sur le port 9999. Parametrez votre routeur\/modem afin d&#8217;acheminer les connexions sur le port 9999 vers votre serveur. Pour r\u00e9aliser le chapitre suivant, la redirection du port 53 est n\u00e9cessaire.<\/p>\n<h3 id=\"dns\">Dynamique Name Server<\/h3>\n<p>C&#8217;est une partie que je maitrise moins. Je vais donc expliquer ce que j&#8217;ai compris. Vous avez achet\u00e9 un nom de domaine: trucmuche.org. vous voudriez maintenant qu&#8217;il pointe vers votre serveur homemade dans votre placard? Il y a en gros, deux solutions: G\u00e9rer son DNS \u00e0 la maison. ou le faire g\u00e9rer par quelqu&#8217;un d&#8217;autre (probablement votre FAI ou votre registar).<br \/>\nLe premier cas est la solution la plus \u00e9ducative 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.<\/p>\n<p>Pour l&#8217;installer:<\/p>\n<pre class=\"code\"># apt-get install bind9\r\n<\/pre>\n<p class=\"readability-styled\">La configuration est bien plus complexe. Etudiont d&#8217;abord, la hi\u00e9rarchie des fichiers de configuration.<\/p>\n<pre class=\"code\">homemade:~# ls -l \/etc\/bind\/\r\ntotal 48\r\n-rw-r--r-- 1 root root  237 2009-12-20 21:21 db.0\r\n-rw-r--r-- 1 root root  271 2009-12-20 21:21 db.127\r\n-rw-r--r-- 1 root root  237 2009-12-20 21:21 db.255\r\n-rw-r--r-- 1 root root  353 2009-12-20 21:21 db.empty\r\n-rw-r--r-- 1 root root  270 2009-12-20 21:21 db.local\r\n-rw-r--r-- 1 root root 2878 2009-12-20 21:21 db.root\r\n-rw-r--r-- 1 root bind  907 2009-12-20 21:21 named.conf\r\n-rw-r--r-- 1 root bind  240 2010-03-17 21:24 named.conf.local\r\n-rw-r--r-- 1 root bind  572 2010-03-17 21:50 named.conf.options\r\n-rw-r----- 1 bind bind   77 2010-03-17 21:05 rndc.key\r\n-rw-r--r-- 1 root root 1317 2009-12-20 21:21 zones.rfc1918\r\n<\/pre>\n<p>Les fichiers de forme db.* sont des fichiers de configuration de zone dns; (nous verrons dans quelques instants, comment cr\u00e9er la zone pour trucmuche.org). Le fichier named.conf.options est le fichier de configuration du serveur. named.conf ne doit pas \u00eatre modifier enfin sauf si vous \u00eates un super expert de la mort qui tue. Il convient de modifier named.conf.local pour ajouter notre zone.<\/p>\n<p>D\u00e9clarons une zone sous la responsabilit\u00e9 de notre dns.<\/p>\n<pre class=\"code\">zone \"trucmuche.org\" {\r\n\ttype master;\r\n\tfile \"\/etc\/bind\/db.trucmuche.org\";\r\n};\r\n<\/pre>\n<p>Il y a deux type de zone: master (primaire) et slave (secondaire). Un nom de domaine est forc\u00e9ment attach\u00e9, au minimum, \u00e0 deux serveurs dns: un seul primaire et un (ou plusieurs) secondaire. Le serveur primaire fait loi, les secondaires se mettront \u00e0 jour par rapport \u00e0 lui. Cr\u00e9er un fichier, <span class=\"filename\">\/etc\/bind\/db.trucmuche.org<\/span> Il doit contenir ceci:<\/p>\n<pre class=\"code\">$ORIGIN trucmuche.org.\r\n$TTL 3h\r\n@       IN      SOA     ns.trucmuche.org. gamemaster.trucmuche.org. (\r\n                                2010031703\r\n                                8H\r\n                                2H\r\n                                1W\r\n                                1D )\r\n\r\n@       \tIN  NS  ns.trucmuche.org.\r\n\r\n@       \tIN  MX  10   mail2.trucmuche.org.\r\n\r\n@  \t\t\tIN\tA\t80.80.80.80\r\n\r\n\r\nns\t\t\tIN\tA\t80.80.80.80\r\nmail2   \tIN\tA   80.80.80.80\r\nwiki    \tIN\tCNAME\ttrucmuche.org.\r\nforum       IN  CNAME   trucmuche.org.\r\nwww         IN  CNAME   trucmuche.org.\r\n};\r\n<\/pre>\n<p>La premi\u00e8re ligne n&#8217;est pas importante, elle d\u00e9finit une variable \u00e0 l&#8217;int\u00e9rieur pour faciliter l&#8217;\u00e9criture du fichier de conf. Le TTL est le temps de valider des informations de votre zone. Il convient de d\u00e9finir une zone SOA.<\/p>\n<ul>\n<li>2010031703 : Serial sorte de numero de version de la configuration, on utilise en g\u00e9n\u00e9ral la date du jour plus un champ 00 qu&#8217;on incr\u00e9mente \u00e0 chaque modification.<\/li>\n<li>8H : Rafraichissement: le serveur secondaire se mettra \u00e0 jour en respectant ce temps ci.<\/li>\n<li>2H : retry : temps d&#8217;attente avant de r\u00e9essayer quand une requ\u00eate de mise \u00e0 jour \u00e0 \u00e9chouer.<\/li>\n<li>1W : Expire : Temps apr\u00e8s lequel la zone est gel\u00e9e si les dns secondaire ne peuvent se mettre \u00e0 jour.<\/li>\n<li>1D : Semblable \u00e0 TTL.<\/li>\n<\/ul>\n<p><span class=\"filename\"> @ IN NS ns.trucmuche.org. <\/span><br \/>\nVous d\u00e9finissez le serveur de nom (DNS) qui d\u00e9finit la zone courante.<br \/>\n<span class=\"filename\"> @ IN MX 10 mail2.trucmuche.org. <\/span><br \/>\nVous d\u00e9finissez le serveur de mail principal de votre domaine.<br \/>\n<span class=\"filename\"> @ IN A 80.80.80.80 <\/span><br \/>\nVous d\u00e9finissez l&#8217;ip principale de votre domaine, N&#8217;oubliez pas remplacer 80.80.80.80 par votre ip fixe.<\/p>\n<pre class=\"code\">ns \t\tIN\tA   80.80.80.80\r\nmail2   \tIN\tA   80.80.80.80\r\n<\/pre>\n<p>D\u00e9finition des adresses ip pour votre serveur de nom et courriel.<\/p>\n<pre class=\"code\">wiki    \tIN\tCNAME\ttrucmuche.org.\r\nforum       IN  CNAME   trucmuche.org.\r\nwww         IN  CNAME   trucmuche.org.\r\n<\/pre>\n<p>D\u00e9finition de sorte d&#8217;alias, ainsi {wiki,forum,www}.trucmuche.org pointeront vers trucmuche.org. C&#8217;est apache (le serveur web) qui fera l&#8217;aiguillage.<\/p>\n<h3 id=\"apache\">Configuration Apache<\/h3>\n<h4>Introduction<\/h4>\n<p>Apache, le serveur web du monde libre, le support de votre libert\u00e9 d&#8217;expression, votre megaphone du web. Pour le rendre fonctionnel et l&#8217;adapter \u00e0 vos besoins, il est important de le configurer.<br \/>\nLes dossiers de configuration d&#8217;apache se trouve dans l&#8217;arbor\u00e9scence <span class=\"filename\">\/etc\/apache2\/<\/span><\/p>\n<pre class=\"code\">-rw-r--r-- 1 root root 10104 2009-11-14 21:20 apache2.conf\r\ndrwxr-xr-x 2 root root  4096 2010-03-05 23:24 conf.d\r\n-rw-r--r-- 1 root root   378 2009-11-14 21:20 envvars\r\n-rw-r--r-- 1 root root    21 2010-03-07 12:59 httpd.conf\r\ndrwxr-xr-x 2 root root  4096 2010-03-05 23:24 mods-available\r\ndrwxr-xr-x 2 root root  4096 2010-03-07 14:42 mods-enabled\r\n-rw-r--r-- 1 root root   513 2009-11-14 21:20 ports.conf\r\ndrwxr-xr-x 2 root root  4096 2010-03-19 00:04 sites-available\r\ndrwxr-xr-x 2 root root  4096 2010-03-19 00:05 sites-enabled\r\n<\/pre>\n<p>Dans l&#8217;ordre, le fichier <span class=\"filename\">apache2.conf<\/span> d\u00e9finit la configuration vitale du serveur. Il est d\u00e9conseill\u00e9 d&#8217;y toucher.<br \/>\nCe fichier d\u00e9finit le comportement par d\u00e9faut du serveur: nombre de thread, les chemins et\/ou nom de fichier pour modifier la configuration localement.<br \/>\nLe dossier <span class=\"filename\">conf.d<\/span> contient des fichiers de configurations pour des points tr\u00e8s sp\u00e9cifique d&#8217;apache.<br \/>\n<span class=\"filename\">envvars<\/span> d\u00e9finit des variables d&#8217;environnements, pr\u00e9sentement, le groupe et l&#8217;utilisateur sous lequel apache2 tourne. (Par d\u00e9faut, www-data)<\/p>\n<p><span class=\"filename\">httpd.conf<\/span> est partiquement vide. Nous allons utiliser des virtualhosts donc ce fichier ne pr\u00e9sente plus beaucoup d&#8217;int\u00e9r\u00eat.<br \/>\n<span class=\"filename\">mods-available<\/span> est un dossier regroupeant les fichiers de conf des modules disponibles pour apache. Un module permet d&#8217;\u00e9tendre les fonctionnalit\u00e9s d&#8217;apache. Php est int\u00e9gr\u00e9 dans apache sous la forme de module. Le support du ssl est aussi un module, il en existe beaucoup et vous pouvez m\u00eame cr\u00e9er le votre, si cela vous int\u00e9resse.<span class=\"filename\">mods-enabled<\/span> regroupe des liens symboliques vers les fichiers de configuration du module pr\u00e9sents dans mods-available. Il faut bien comprendre qu&#8217;un module pr\u00e9sent dans mods-available regroupe les modules activables et mods-enabled regroupe les modules activ\u00e9s. Pour activer un module, il suffit de placer les fichiers du module dans le dossier mods-enabled.<\/p>\n<p>Dans le m\u00eame principe, les dossiers <span class=\"filename\">sites-available<\/span> et <span class=\"filename\">sites-enabled<\/span> sont r\u00e9spectivement le dossier des sites internet disponibles et le des sites internet actifs. L\u00e0 encore, il est bon de cr\u00e9er un fichier de configuration dans available et d&#8217;ajouter un lien dans enabled. Nous verrons dans la partie <a href=\"http:\/\/renaudguezennec.eu\/#virtual\">virtuals hosts<\/a>, comment configurer son site ou plut\u00f4t ses sites.<\/p>\n<h4>Utilisateur et droit<\/h4>\n<p class=\"readability-styled\">Il y a plusieurs moyens de g\u00e9rer un serveur apache au niveau des droits. Cela d\u00e9pend beaucoup de votre utilisation et de votre philosophie. Les diff\u00e9rents choix:<\/p>\n<ol>\n<li><a href=\"http:\/\/renaudguezennec.eu\/#un\">Votre serveur, c&#8217;est le votre. Il n&#8217;hebergera que votre site et rien d&#8217;autre.<\/a><\/li>\n<li><a href=\"http:\/\/renaudguezennec.eu\/#deux\">Votre serveur h\u00e9bergera un gros site (par exemple le site d&#8217;une association, ou un site divis\u00e9 en plusieurs sous-domaines: forum, wiki et www). Ils seront g\u00e9r\u00e9 par vous et une poign\u00e9e d&#8217;\u00e9lus.<\/a><\/li>\n<li><a href=\"http:\/\/renaudguezennec.eu\/#trois\">Vous voulez que chaque utilisateur de votre serveur aie un site web et un compte utilisateur.<\/a><\/li>\n<\/ol>\n<h5 id=\"un\">Le cas #1<\/h5>\n<p>La situation la plus facile. Vous n&#8217;avez pas d&#8217;acc\u00e8s \u00e0 ouvrir. Vous pouvez coder\/mettre \u00e0 jour votre site par ssh. Vous n&#8217;aurais pas besoin de FTP.<br \/>\nJe vous conseille de cr\u00e9er un dossier &#8220;trucmuche&#8221; dans <span class=\"filename\">\/home\/toto<\/span>. Votre utilisateur (toto) aura tous les droits sur votre futur site et apache sera limit\u00e9.<br \/>\nRender l&#8217;utilisateur www-data membre du groupe toto. Pour cela, \u00e9diter le fichier \/etc\/group comme ceci.<\/p>\n<pre class=\"code\"># vi \/etc\/group\r\n<\/pre>\n<p>Ajouter www-data \u00e0 la fin de la ligne toto:<\/p>\n<pre class=\"code\">toto:x:1000:www-data<\/pre>\n<p>Assurez-vous que le groupe toto ait les droits de lecture sur l&#8217;ensemble des sous-dossiers et fichiers pr\u00e9sents dans \/home\/toto\/trucmuche. Si vous voulez permettre \u00e0 votre site uploader des fichiers, le serveur aura besoin des droits en \u00e9criture sur le r\u00e9pertoire de destination. C&#8217;est un effort de codage sur votre site. Cette configuration est propre et minimaliste.<\/p>\n<p>Si cette vision vous convient sauter directement \u00e0 la section <a href=\"http:\/\/renaudguezennec.eu\/#virtualun\">Cas 1 : virtual host<\/a><br \/>\nSi vous cherchez une solution plus puissante et moins minimaliste, vous pouvez lire les sections suivantes.<\/p>\n<h5 id=\"deux\">Le cas #2<\/h5>\n<p>C&#8217;est d\u00e9j\u00e0 plus risqu\u00e9. Je vous conseillerais de cr\u00e9er un utilisateur webmaster et de cr\u00e9er un dossier dans <span class=\"filename\">\/home\/webmaster\/<\/span> par site web: [<span class=\"filename\">\/home\/webmaster\/www<\/span>,<span class=\"filename\">\/home\/webmaster\/wiki<\/span>,<span class=\"filename\">\/home\/webmaster\/forum<\/span>]. En termes de droits, il suffit de rendre www-data membre du groupe webmaster:<\/p>\n<pre class=\"code\"># vi \/etc\/group\r\n<\/pre>\n<p>Ajouter www-data \u00e0 la fin de la ligne webmaster:<\/p>\n<pre class=\"code\">webmaster:x:1001:www-data<\/pre>\n<p>Si vous d\u00e9ployez des outils libres, comme un CMS, un wiki et un forum. Il vous suffira de cr\u00e9er des comptes administrateurs dans ces outils.<br \/>\nSi vous voulez donner un acc\u00e8s plus direct. Il est possible de mettre en place un FTP ou bien de donner les identifiants de webmaster.<br \/>\n[Il est encore plus intelligent de cr\u00e9er un utilisateur pour chaque &#8220;\u00e9lu&#8221; et de rendre ces utilisateurs membre du groupe webmaster. Les fichiers devront \u00eatre modifiable par les membres du groupe. Cependant, il vous sera plus facile de connaitre l&#8217;identit\u00e9 d&#8217;une personne responsable d&#8217;une b\u00e9tise\/erreur].<\/p>\n<p>Si cette description r\u00e9pond \u00e0 votre besoin aller directement \u00e0 la section <a href=\"http:\/\/renaudguezennec.eu\/virtualdeux\">Cas 2 : virtual host<\/a><\/p>\n<h5 id=\"trois\">Le cas #3<\/h5>\n<p>Le plus compl\u00e8xe des trois \u00e0 mettre en place. Vous voulez que chaque utilisateur dispose d&#8217;un dossier particulier dans leur home (html_public ou www). Ils auront un acc\u00e8s direct au serveur par ssh ou FTP. Chaque utilisateur aura une base de donn\u00e9es. Ce cas est assez fr\u00e9quent dans les universit\u00e9s et\/ou h\u00e9bergeurs. Pour des raisons de s\u00e9curit\u00e9s, je vous conseillerais de ne pas donner d&#8217;acc\u00e8s ssh.<\/p>\n<p>Cette configuation est relativement complexe, je vous conseillerais de jouer un peu avec les cas pr\u00e9c\u00e9dents. Afin de bien, vous faire la main sur les fichiers de configuration apache et autres.<\/p>\n<p>La gestion des droits est d\u00e9licate. Il y a plusieurs approches:<\/p>\n<ul>\n<li>Rendre tout le monde membre du groupe d&#8217;apache [www-data]<\/li>\n<li>l&#8217;oppos\u00e9; n&#8217;ajouter personne mais les fichiers devront \u00eatre accessible en lecture pour tous le monde.<\/li>\n<li>Le troisi\u00e8me cas, \u00e9x\u00e9cuter apache avec les droits d&#8217;un autre utilisateur (voir la section <a href=\"http:\/\/renaudguezennec.eu\/virtualtrois\">Cas 3 : virtual host<\/a>)<\/li>\n<\/ul>\n<h4 id=\"virtual\">les virtuals hosts<\/h4>\n<p>Ces cas typiques sont des exemples. N&#8217;hesitez pas \u00e0 m\u00e9langer les solutions techniques.<\/p>\n<h5 id=\"virtualun\">Un site unique (cas 1)<\/h5>\n<p>La premi\u00e8re chose \u00e0 faire est de cr\u00e9er un dossier dans votre home <span class=\"filename\">\/home\/toto\/monsite\/<\/span>.<\/p>\n<pre class=\"code\">$ mkdir \/home\/toto\/monsite\r\n<\/pre>\n<p class=\"readability-styled\">Il faut ensuite cr\u00e9er un lien de<\/p>\n<p><span class=\"filename\">\/var\/www\/<\/span><\/p>\n<p class=\"readability-styled\">vers<\/p>\n<p><span class=\"filename\">\/home\/toto\/monsite\/<\/span><\/p>\n<p class=\"readability-styled\">. Pour cela, tapez la commande suivante dans un terminal (root):<\/p>\n<pre class=\"code\"># cd \/var\/www\r\n# ln -s \/home\/toto\/monsite site\r\n<\/pre>\n<p>N&#8217;oubliez pas de v\u00e9rifier les droits du groupe.<\/p>\n<p>Ouvrez le fichier <span class=\"filename\">\/etc\/apache2\/site-enabled\/000-default<\/span> pour y mettre ceci :<br \/>\n[Les lignes commen\u00e7ant par # sont des commentaires, je les utilise pour expliquer]<\/p>\n<pre class=\"code\">&lt;VirtualHost 192.168.0.3:80&gt;\r\n    ServerAdmin toto@trucmuche.org\r\n    ServerName trucmuche.org\r\n\r\n    DocumentRoot \/var\/www\/site1\/\r\n    #nous d\u00e9finissons le dossier racine du site.\r\n    &lt;Directory \/var\/www\/site1&gt;\r\n        Options Indexes FollowSymLinks\r\n        # Indexes : autorise apache \u00e0 g\u00e9n\u00e9rer des indexes.\r\n        # nous autorisons apache \u00e0 suivre les liens symboliques. \r\n        # Important car \/var\/www\/site1\/ est un lien symbolique \r\n        # vers \/home\/toto\/monsite\/\r\n        AllowOverride All\r\n        # Nous autorisons Apache \u00e0 changer sa configuration \r\n        # si un fichier .htaccess existe dans le dossier \r\n        # \/var\/www\/site1\r\n        Order allow,deny\r\n        # Ordre de description des r\u00e8gles\r\n        allow from all\r\n        # Autorise tout le monde \r\n        # (pas besoin de r\u00e8gle d'interdiction)\r\n        # Vous pouvez ajouter une plage d'ip interdite \r\n        # avec une ligne du genre Deny from XXX.XXX.XXX.XXX\/XXX \r\n    &lt;\/Directory&gt;\r\n\r\n    \r\n    ErrorLog \/var\/log\/apache2\/error.log\r\n\r\n# Possible values include: debug, info, notice, warn, error, crit,\r\n# alert, emerg.\r\n    LogLevel warn\r\n\r\n    CustomLog \/var\/log\/apache2\/access.log combined\r\n    ServerSignature On\r\n\r\n     # Configuration par d\u00e9faut des logs\r\n     # A savoir: \r\n     # Niveau de log: avertissement (warm). \r\n     # [debug, info, notice, warn, error, crit]\r\n     # Fichier d'enregistrement des logs dans:\r\n     # \/var\/log\/apache2\/access.log \r\n     # La signature du serveur est activ\u00e9e.\r\n\r\n\r\n    \r\n    Alias \/phpMyAdmin\/ \"\/var\/www\/phpMyAdmin\/\"\r\n    &lt;Directory \"\/var\/www\/phpMyAdmin\/\"&gt;\r\n        AllowOverride None\r\n        Order allow,deny\r\n        Deny from all\r\n        Allow from 192.168.0.0\/24 \r\n        #on restrint l'acc\u00e8s au gestionnaire de base de donn\u00e9es.\r\n        #Seule les adresses de type 192.168.0.XXX seront accept\u00e9es. \r\n    &lt;\/Directory&gt;\r\n    \r\n&lt;\/VirtualHost&gt;\r\n<\/pre>\n<h5 id=\"virtualdeux\">Un gros site avec sous-domaine (cas 2)<\/h5>\n<p>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\u00e8re \u00e9tape consiste \u00e0 cr\u00e9er 3 fichiers de configuration dans <span class=\"filename\">\/etc\/apache2\/sites-available<\/span> (en root).<\/p>\n<pre class=\"code\"># cd \/etc\/apache2\/sites-available\r\n# touch wiki.trucmuche.org\r\n# touch forum.trucmuche.org\r\n# touch www.trucmuche.org\r\n<\/pre>\n<p>Il convient ensuite d&#8217;installer les diff\u00e9rents logiciels. A titre d&#8217;exemple, je vous explique la marche \u00e0 suivre pour installer mediawiki, fluxbb et drupal.<\/p>\n<p>Positionnez-vous, d&#8217;abord, dans le r\u00e9pertoire de votre utilisateur webmaster (Il faut \u00eatre l&#8217;utilisateur webmaster).<br \/>\nT\u00e9l\u00e9chargement des logiciels et installation:<\/p>\n<pre class=\"code\">$ cd \/home\/webmaster\r\n$ wget http:\/\/download.wikimedia.org\/mediawiki\/1.15\/mediawiki-1.15.1.tar.gz\r\n$ wget http:\/\/fluxbb.org\/download\/releases\/1.4-rc1\/fluxbb-1.4-rc1.tar.gz\r\n$ wget http:\/\/ftp.drupal.org\/files\/projects\/drupal-6.16.tar.gz\r\n\r\n$ tar -xzvf drupal-6.16.tar.gz\r\n$ mv drupal-6.16\/ drupal\r\n\r\n$ tar -xzvf fluxbb-1.4-rc1.tar.gz\r\n$ mv fluxbb-1.4-rc1\/ forum\r\n\r\n$ tar -xzvf mediawiki-1.15.1.tar.gz\r\n$ mv mediawiki-1.15.1\/ wiki\r\n<\/pre>\n<p>Apr\u00e8s cette \u00e9tape, vous devriez avoir les dossiers : wiki, forum et drupal dans <span class=\"filename\">\/home\/webmaster<\/span><br \/>\nIl faut maintenant faire la configuration du serveur apache pour qu&#8217;il aille chercher les fichiers au bon endroit.<br \/>\nCommen\u00e7ons par drupal (qui sera www.trucmuche.org): \u00c9ditez le ficher : <span class=\"filename\">\/etc\/apache2\/sites-available\/www.trucmuche.org<\/span> qui est normalement vide.<\/p>\n<pre class=\"code\">&lt;VirtualHost *:80&gt;\r\n\tServerName www.trucmuche.org\r\n    #definition du sous-domaine\r\n\tServerAdmin webmaster@trucmuche.org\r\n\t\r\n\tDocumentRoot \/var\/www\/webmaster\/drupal\r\n\t&lt;Directory \/home\/www\/webmaster\/drupal&gt;\r\n\t\tOptions Indexes FollowSymLinks MultiViews\r\n\t\tAllowOverride All\r\n\t\tOrder allow,deny\r\n\t\tAllow from all\r\n\t&lt;\/Directory&gt;\r\n\tErrorLog \/var\/log\/apache2\/error.log\r\n\tLogLevel warn\r\n\tCustomLog \/var\/log\/apache2\/trucmuche\/trucmuche.log combined\r\n    # Nous sp\u00e9cialisons le log de sortie pour clarifier les logs.\r\n&lt;\/VirtualHost&gt;\r\n<\/pre>\n<p>Il faut faire la m\u00eame chose pour le wiki et le forum:<\/p>\n<pre class=\"code\">&lt;VirtualHost *:80&gt;\r\n\tServerName wiki.trucmuche.org\r\n\tServerAdmin webmaster@trucmuche.org\r\n\t\r\n\tDocumentRoot \/var\/www\/webmaster\/wiki\r\n\t&lt;Directory \/home\/www\/webmaster\/wiki&gt;\r\n\t\tOptions Indexes FollowSymLinks MultiViews\r\n\t\tAllowOverride All\r\n\t\tOrder deny,allow\r\n\t\tDeny from all\r\n\t\tAllow from 127.0.0.0\/255.0.0.0 ::1\/128\t\t\t\r\n\t&lt;\/Directory&gt;\r\n\tErrorLog \/var\/log\/apache2\/error.log\r\n\tLogLevel warn\r\n   CustomLog \/var\/log\/apache2\/trucmuche\/wiki.trucmuche.log combined\r\n&lt;\/VirtualHost&gt;\r\n<\/pre>\n<pre class=\"code\">&lt;VirtualHost *:80&gt;\r\n\tServerName forum.trucmuche.org\r\n\tServerAdmin webmaster@trucmuche.org\r\n\t\r\n\tDocumentRoot \/var\/www\/webmaster\/forum\r\n\t&lt;Directory \/home\/www\/webmaster\/forum&gt;\r\n\t\tOptions Indexes FollowSymLinks MultiViews\r\n\t\tAllowOverride All\r\n\t\tOrder deny,allow\r\n\t\tDeny from all\r\n\t\tAllow from 127.0.0.0\/255.0.0.0 ::1\/128\t\t\t\r\n\t&lt;\/Directory&gt;\r\n\tErrorLog \/var\/log\/apache2\/error.log\r\n\tLogLevel warn\r\nCustomLog \/var\/log\/apache2\/trucmuche\/forum.trucmuche.log combined\r\n&lt;\/VirtualHost&gt;\r\n<\/pre>\n<p>Pour finaliser la configuration, il faut cr\u00e9er des liens symboliques dans <span class=\"filename\">\/etc\/apache2\/sites-enabled\/<\/span><\/p>\n<pre class=\"code\"># cd \/etc\/apache2\/sites-enabled\/\r\n# ln -s ..\/sites-available\/forum.trucmuche.org forum.trucmuche.org\r\n# ln -s ..\/sites-available\/wiki.trucmuche.org wiki.trucmuche.org\r\n# ln -s ..\/sites-available\/www.trucmuche.org www.trucmuche.org\r\n<\/pre>\n<h5 id=\"virtualtrois\">L&#8217;usine \u00e0 site (cas 3)<\/h5>\n<p>Je ne donnerai pas de fichier de configuration Apache dans cette section. Je vous conseillerais de regarder du c\u00f4t\u00e9 des hotes virtuels dynamiques et\/ou de la commande suEXEC.<\/p>\n<h4>Activer et configurer certains modules : url_rewrite et php5.<\/h4>\n<p>Les modules url_rewrite et php sont tr\u00e8s utilis\u00e9s. Ils apportent des fonctionnalit\u00e9s bien appr\u00e9ciables.<br \/>\nPour les activer, il suffit de faire un lien de leurs fichiers de mods-available vers mods-enabled. [Il est possible qu&#8217;ils soient d\u00e9j\u00e0 activ\u00e9s par d\u00e9faut.]<\/p>\n<pre class=\"code\"># cd \/etc\/apache2\/mods-enabled\/\r\n# ln -s ..\/mods-available\/php5.load php5.load\r\n# ln -s ..\/mods-available\/php5.load php5.conf\r\n# ln -s ..\/mods-available\/rewrite.load rewrite.load\r\n<\/pre>\n<p>Si vous voulez jouer avec la configuration de php5: \u00e9diter le fichier <span class=\"filename\">\/etc\/php5\/apache2\/php.ini<\/span>.<br \/>\nPour utiliser url_rewrite, il suffit d&#8217;activer le mode rewrite dans un .htaccess en sp\u00e9cifiant les r\u00e8gles de r\u00e9\u00e9criture.<\/p>\n<h3>Installer une solution mail: Smtp + imap + spamAssassin<\/h3>\n<p>Section en cours d&#8217;\u00e9criture.<\/p>\n<h2 id=\"crontab\">Script de sauvegarde &amp; crontab<\/h2>\n<p>Il est important d&#8217;assurer la p\u00e9r\u00e9nit\u00e9 de ses donn\u00e9es. C&#8217;est pourquoi, il est tr\u00e8s fortement conseill\u00e9 de mettre, en production, un serveur uniquement si un syst\u00e8me de sauvegarde et restauration est fonctionnel. Les \u00e9l\u00e9ments \u00e0 mettre dans une sauvegarde sont:<\/p>\n<ul>\n<li>La hi\u00e9rarchie de dossiers et fichiers du site\/des sites<\/li>\n<li>Un dump des bases de donn\u00e9es<\/li>\n<li>Les fichiers de configuration (si vous estimez que les modifications sont importantes)<\/li>\n<li>Le dossier \/home (dans le cas ou des utilisateurs ont des donn\u00e9es autres que leur site web.)<\/li>\n<\/ul>\n<pre class=\"code\">#!\/bin\/sh\r\nHOST='ftp.somewhere.fr'\r\nUSERFTP='toto@somewhere.fr'\r\nUSER=toto\r\nPASSWDFTP='bidule'\r\nPASSWDSQL='bidule'\r\nDATE=`date +%d`\r\nDRUPALFILE=\/home\/$USER\/script\/backup-drupal-file-$DATE.sql\r\nWIKIFILE=\/home\/$USER\/script\/backup-wiki-file-$DATE.sql\r\nFORUMFILE=\/home\/$USER\/script\/backup-forum-file-$DATE.sql\r\n\r\nARCHIVE=\/home\/$USER\/monsite-$DATE.tar.gz\r\n#tar le dossier \/home\/toto\/monsite\r\ntar -czvf $ARCHIVE \/home\/$USER\/monsite\r\n\r\n\r\n#dump de postgresql \r\nexport PGPASSWORD=passwordPostgresql\r\npg_dump -f $DRUPALFILE -U $USER drupal \r\n\r\n#dump de mysql \r\nmysqldump --set-charset  -u $USER -p$PASSWDSQL wiki &gt; $WIKIFILE\r\nmysqldump --set-charset  -u $USER -p$PASSWDSQL forum &gt; $FORUMFILE\r\n\r\n\r\n\r\nftp -n $HOST &lt;&lt;END_SCRIPT\r\nquote USER $USERFTP\r\nquote PASS $PASSWD\r\nsend $DRUPALFILE backup_drupal_$DATE.sql\r\nsend $WIKIFILE backup_wiki_$DATE.sql\r\nsend $FORUMFILE backup_forum_$DATE.sql\r\nsend $ARCHIVE monsite-$DATE.tar.gz\r\n\r\nquit\r\nEND_SCRIPT\r\nexit 0\r\n<\/pre>\n<p>Voil\u00e0, un exemple de script de sauvergarde. Il exporte deux bases de donn\u00e9es mysql et d&#8217;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\u00eache d&#8217;am\u00e9liorer \u00e7a. Vous trouverez des multitudes de scripts pour vous aider.<br \/>\nIl faut ensuite executer ce script de fa\u00e7on r\u00e9guli\u00e8re. Crontab est l\u00e0 pour vous sauver. Tapez la commande suivantes pour ajouter une r\u00e8gle.<\/p>\n<pre class=\"code\"># crontab -e\r\n<\/pre>\n<p>Ajouter la ligne suivante dans le fichier.<\/p>\n<pre class=\"code\">0 0 * * * sh \/home\/toto\/script\/sauvegarde.sh\r\n<\/pre>\n<p>La sauvegarde se fera tous les jours \u00e0 minuit.<\/p>\n<h2 id=\"faq\">Foire Aux Questions<\/h2>\n<h4>Mon serveur semble ne pas marcher \u00e0 l&#8217;ext\u00e9rieur de mon r\u00e9seau local.<\/h4>\n<p>V\u00e9rifiez bien la configuration de votre routeur. Les connexions entrantes sur le port 80 (http) doivent \u00eatre redirig\u00e9es vers votre serveur.<\/p>\n<h4>Je n&#8217;arrive pas \u00e0 uploader des fichiers.<\/h4>\n<p>C&#8217;est probablement un probl\u00e8me de droit en \u00e9criture sur le serveur. Apache doit pouvoir \u00e9crire dans le r\u00e9pertoire de partage choisi. (chmod g+w et chown user:www-data)<\/p>\n<h2 id=\"more\">Plus d&#8217;informations<\/h2>\n<ul>\n<li><a href=\"http:\/\/renaudguezennec.eu\/accueil,3.html\">Des questions ou des commentaires ?<\/a><\/li>\n<li>Site officiel de la fondation <a href=\"http:\/\/www.apache.org\/\">Apache<\/a><\/li>\n<li>Site officiel du projet <a href=\"http:\/\/httpd.apache.org\/\">Apache HTTP Server<\/a><\/li>\n<li>La documentation <a href=\"http:\/\/wiki.apache.org\/httpd\/\">Apache<\/a><\/li>\n<li>La documentation <a href=\"http:\/\/www.debian.org\/doc\/\">Debian<\/a><\/li>\n<li>Bibliographie: Apache 2.0 Guide de l&#8217;administrateur Linux: Charles Aulds &#8211; EYROLLES<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Historique des versions Version Date Auteur Description 0.1 (draft) 22\u00a0Mars\u00a02010 Renaud\u00a0Guezennec Montage d&#8217;un serveur fanless, installation syst\u00e8me, d\u00e9ploiement des premiers services (ssh et apache2) et configuration r\u00e9seau. Introduction Mat\u00e9riel \u00a0\u00a0\u00a0\u00a0Montage Installation du syst\u00e8me et des services \u00a0\u00a0\u00a0\u00a0T\u00e9l\u00e9charger les bons fichiers \u00a0\u00a0\u00a0\u00a0Installer sa GNU\/Debian \u00a0\u00a0\u00a0\u00a0Installation des premiers services \u00a0\u00a0\u00a0\u00a0S\u00e9curisation des premiers services Connexion &amp; r\u00e9seau \u00a0\u00a0\u00a0\u00a0DNS [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[80,23],"tags":[17,21,22],"class_list":["post-21","post","type-post","status-publish","format-standard","hentry","category-fr","category-tutorial","tag-apache","tag-auto-hebergement","tag-linux"],"_links":{"self":[{"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/posts\/21","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/comments?post=21"}],"version-history":[{"count":1,"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/posts\/21\/revisions"}],"predecessor-version":[{"id":22,"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/posts\/21\/revisions\/22"}],"wp:attachment":[{"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/media?parent=21"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/categories?post=21"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/renaudguezennec.eu\/index.php\/wp-json\/wp\/v2\/tags?post=21"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}