Configuration d’un serveur dédié pour votre blog
Nous allons dans ce billet détaillé l'installation d'un serveur WordPress (moteur de blog) sur une machine Linux Ubuntu. Vous aurez ainsi une plate-forme de blogging libre !
Installation du système GNU/Linux
On commence par mettre à jour notre système:
sudo aptitude update
sudo aptitude safe-upgrade
Mise en place des règles de Firewall:
#!/bin/bash
########################
# Nicolargo - 28/10/2009
# Regle de Firewall
# Serveur hebergeant:
# - SSH
# - HTTP
########################
# Debut
# Chargement des modules externes pour le suivi des connexions FTP
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# On commence par effacer toutes les regles
iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# On autorise les flux locaux
iptables -A INPUT -i lo -j ACCEPT
# On autorise les flux des connexions etablies
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#--------------------------
# Autorise les flux entrant
#--------------------------
# SSH serveur
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# Web serveur
iptables -A INPUT -p tcp --dport http -j ACCEPT
#--------------------------
# Autorise les flux sortant
#--------------------------
iptables -A OUTPUT -p tcp --dport domain -j ACCEPT
iptables -A OUTPUT -p udp --dport domain -j ACCEPT
iptables -A OUTPUT -p udp --dport ntp -j ACCEPT
iptables -A OUTPUT -p tcp --dport http -j ACCEPT
iptables -A OUTPUT -p tcp --dport https -j ACCEPT
#--------------------------
# On drop-and-logue le reste
#--------------------------
# En cas d'attaque de type Syn-Flood
iptables -N syn-flood
iptables -A syn-flood -m limit --limit 10/second --limit-burst 15 -j RETURN
iptables -A syn-flood -j LOG --log-prefix "SYN flood: "
iptables -A syn-flood -j DROP
# UDP
iptables -A INPUT -p udp -j LOG --log-prefix "IPTABLES UDP-IN: "
iptables -A INPUT -p udp -j DROP
iptables -A OUTPUT -p udp -j LOG --log-prefix "IPTABLES UDP-OUT: "
iptables -A OUTPUT -p udp -j DROP
# TCP
iptables -A INPUT -p tcp -j LOG --log-prefix "IPTABLES TCP-IN: "
iptables -A INPUT -p tcp -j DROP
iptables -A OUTPUT -p tcp -j LOG --log-prefix "IPTABLES TCP-OUT: "
iptables -A OUTPUT -p tcp -j DROP
# Fin
Automatisation du lancement des règles au démarrage du serveur:
/etc/init.d/iptables.sh
chmod a+x /etc/init.d/iptables.sh
sudo update-rc.d iptables.sh defaults
Installation de LAMP
Simplement avec la commande suivante:
sudo install apache2 mysql-server php5 php5-mysql phpmyadmin
1 | <strong>Configuration du serveur Apache</strong> |
Test d'Apache en entrant l'adresse de votre serveur (http://@IPduserveur/) dans un navigateur Web: ''It works!"
On désactive se site par défaut avec les commandes suivantes:
sudo a2dissite default
/etc/init.d/apache2 reload
Nous allons maintenant configurer le serveur Apache pour gérer les adresses virtuelles. Il faut dans un premier temps déclarer dans votre DNS une nouvelle entrée qui fait pointer le nom de domaine vers l'adresse IP du serveur (blog.mondomaine.com A @IPduserveur).
Pour tester votre DNS (attention la mise à jour peut prendre un certain temps):
ping blog.mondomaine.com
PING blog.mondomaine.com () 56(84) bytes of data.
64 bytes from blog.mondomaine.com (@IPduserveur): icmp_seq=1 ttl=47 time=111 ms
64 bytes from blog.mondomaine.com (@IPduserveur): icmp_seq=2 ttl=47 time=110 ms
64 bytes from blog.mondomaine.com (@IPduserveur): icmp_seq=3 ttl=47 time=110 ms
...
On configure ensuite le serveur Apache pour cette adresse:
# cd /etc/apache2/sites-available
# sudo vi virtualhosts
On édite:
NameVirtualHost @IPduserveur
<VirtualHost @IPduserveur>
ServerName @IPduserveur
DocumentRoot /var/www/default
</VirtualHost>
<VirtualHost blog.mondomaine.com>
ServerName blog.mondomaine.com
DocumentRoot /var/www/blog
</VirtualHost>
On créer ensuite les arborescences correspondantes:
cd /var/www
sudo mkdir default
sudo mkdir blog
sudo chown -R www-data:www-data *
Puis on active le site:
sudo a2ensite virtualhosts
sudo /etc/init.d/apache2 reload
Configuration de MySQL
On accède au logiciel phpMyAdmin qui va nous permettre de configurer une base de donnée pour notre blog WordPress. Pour cela, il faut saisir l'URL suivante dans votre navigateur: http://blog.mondomaine.com/phpmyadmin/

Puis ensuite saisir le nom de la base de donnée (par exemple blog) et enfin cliquer sur Créer:
![]()
PS: il est possible (et conseillé) de créer un utilisateur dédié pour pour accéder à cette base de donnée. Le plus simple est de créer un utilisateur (avec comme nom "blog") puis de demander la création de la base de donnée correspondante. Les droits seront ainsi fixés automatiquement.
Installation de WordPress
La dernière version de WordPress 2.9 arrivera dans les bacs dans les prochains jours. Nous allons donc utiliser la version stable actuelle (WordPress 2.8.6) pour illustrer ce billet.
On commence par télécharger les sources:
wget http://wordpress.org/latest.zip
Puis on décompresse l'archive:
unzip latest.zip
1 | <span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">Il faut ensuite déplacer le répertoire <em>wordpress</em> dans la bonne arborescence de votre serveur. Ainsi, si vous souhaitez accéder à votre blog par l'adresse http://blog.mondomaine.com/, il faut copier le contenu du répertoire de la manière suivante.</span> |
1 <span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">sudo cp -r ./wordpress/* /var/ww</span>
1 | <span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">Par contre si vous souhaitez que votre blog soit accessible par l'adresse http://blog.mondomaine.com/blog/, il faut saisir la commande:</span> |
1 <span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">sudo mv wordpress /var/www/blog</span>
1 | <span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">Il faut ensuite éditer le fichier wp-config.php:</span> |
cd /var/www cp wp-config-sample.php wp-config.php sudo chmod a+r wp-config.php vi wp-config.php
Puis éditer le fichier selon votre configuration:
define('DB_NAME', 'blog');
define('DB_USER', 'blog');
define('DB_PASSWORD', 'monmotdepasse');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
Enfin on finalise l'installation en allant à l'URL: http://blog.mondomaine.com/wp-admin/install.php
Pour résumer
Votre blog est maintenant accessible par l'adresse http://blog.mondomaine.com/
L'interface d'administration se trouve à l'adresse: http://blog.mondomaine.com/wp-admin/
Bon blog !







Twitter:
Rss:
Commentaires (de mes chers lecteurs):
Bien réalisé ton tutoriel. Simple et efficace comme toujours.
Ce ne serait pas plus sur d’avoir un user autre que root sur le serveur et avoir le blog dans le /home/user/www/ plutot ?
Tiens, est-ce qu’il n’est pas conseiller de mettre la racine de son site en userspace? Par exemple : /home/username/public_html (tant qu’à utiliser les virtualhosts)
Sinon ne faut-il pas non plus configurer mysql pour éviter qu’il accepte les connexions extérieures. (ceci dit, c’est peut-être déjà mis dans la configuration par défaut de mysql sous ubuntu).
Merci pour ce beau tuto en tout cas !
C’est bon que si on dispose d’un ip fixe …
Sinon passer par une solution no-ip
Salut,
Ça ne serait pas :
iptables -P INPUT DROP
iptables -P OUTPUT DROP
au lieu de accept? car là tu autorises tout, non?
Super tuto une fois de plus, ça te dirait pas d’écrire un tuto sur l’installation de Free Radius sur une Debian ?
c’est quoi ce “quot” dans :
iptables -A syn-flood -j LOG –log-prefix "SYN flood: "
?
A remplacer par ”
Je viens de corriger le billet !
Bon tuto, comme dit avant, simple, rapide et efficace =)
Je veux pas faire mon troll mais quelle est l’utilité de réaliser un dédié chez soi pour un simple blog ? Ok pour hébergé ses amis, sa famille, les amis de la soeur de l’ami mais à part cela ?
Pour moi, la solution est vraiment exagérée pour un simple blog (encore ce serait un site spécifique avec des scripts spécifiques utilisés par le site.) ?
D’ailleurs, je doute que la QoS d’un petit dédié chez soi ne doit pas être très élevée (pour avoir déjà testé plusieurs fois cela…)
Euh et un petit lien pour parfaire la sécurité de son serveur (pour les plus paranos d’entre nous…) :
http://blog.felix-aime.fr/make-ur-home-secure-web-server/
@feu: je ne préconise pas d’héberger le serveur chez soi (la qualité de service n’est bien sûr par garantie sur les abonnement perso des FAI)… par contre je conseille de prendre une ou plusieurs parts sur un serveur virtualisé (comme chez Gandi ou OVH) et de gérer son propre serveur (blog, web…).
Salut à tous et merci NicoLargo pour tous c’est tuto fort sympatique.
Par contre j’ai un petit soucie, vous aller trouver surement ca débille, mais je suis pas expert la dedans, je n’y connais rien en dns, …
Mon probleme, après avoir créer le virtualhosts, il me dit :
“Error Name or service not know: Could not resolve blog.xxx.com — ignoring!”
“Warn NameVirtualHost *:80 has no VirtualHosts”
Une idée ou un conseil pour resolvé ce probleme ??
Merci d’avance
Lamp c’est vraiment le top du top pour monter un serveur. Merci pour ce tutoriel simple à comprendre !
Bonjour @ tous,
merci pour ce tutoriel, j’apprécie beaucoup le script pour iptables (j’suis en brêle en iptables, vive pfSense embarqué sur ALIX
…).
Premièrement, je crois que le & de est de trop, je l’ai enlevé. Ensuite j’ai le même problème que Bilbon :
Reloading web server config: apache2
[Tue Dec 29 22:45:52 2009] [error] (EAI 2)Name or service not known: Could not resolve host name blog.xxx.gotdns.org — ignoring!
[Tue Dec 29 22:45:52 2009] [warn] NameVirtualHost *:80 has no VirtualHosts.
Pourriez-vous me venir en aide s.v.p ? Merci
Bon tuto qui peut être utile à tous à un moment crucial du développement du trafic sur son site web.
Moi j’ai une Debian déjà installée pour mon site dédié aux diaporamas Il va falloir que je teste les paramètres de sécurité fournis !
Merci pour le tuto.
Très fonctionnel.
J’ajouterais simplement qu’avec la nouvelle version d’Apache, il ne faut pas mettre le “NameVirtualHost @IPduserveur” dans la definition du fichier des hôtes virtuels mais dans le fichier ports.conf qui est prévu à cet effet.
PS : j’ai aussi fait le tuto sur Nagios, ça m’a bien aisé merci.
Bonjour, j’ai essayé un temps de me mettre au serveur dédié… Je passait plus de temps à configurer et mettre à jour au niveau sécurité que de travailler sur mes sites … ^^
Du coup, hop, me suis pris un kimsufi chez ovh qui gère tout ( avec un option payante pour les mises à jour de sécurité ).
Mais la configuration de son propre serveur reste un passage obligé si l’on veut greffer des fonctions, coder soi même, etc…
Bon courage aux plus audacieux
Cécile.