Auteur:


Date:
24/11/2009

Catégories:
Blog
Open-source
Planet-libre
Systeme

Tags:



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

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/

PHPMyAdmin main page

Puis ensuite saisir le nom de la base de donnée (par exemple blog) et enfin cliquer sur Créer:

Create DB

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

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 !

  • http://netblog.tk nabaz45

    Bien réalisé ton tutoriel. Simple et efficace comme toujours.

  • Lurning

    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 ?

  • http://theclimber.fritalk.com theClimber

    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 !

  • http://www.riderducoin.com Kiki

    C’est bon que si on dispose d’un ip fixe …
    Sinon passer par une solution no-ip

  • http://blog.rom1v.com/ ®om

    Salut,

    Ça ne serait pas :
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP

    au lieu de accept? car là tu autorises tout, non?

  • Pingback: links for 2009-11-24 « WhilelM’s little Wor(l)d

  • JuJu

    Super tuto une fois de plus, ça te dirait pas d’écrire un tuto sur l’installation de Free Radius sur une Debian ? :D

  • http://www.system-linux.eu GanGan

    c’est quoi ce “quot” dans :

    iptables -A syn-flood -j LOG –log-prefix "SYN flood: "

    ?

    • http://blog.nicolargo.com NicoLargo

      A remplacer par ”
      Je viens de corriger le billet !

  • http://www.felix-aime.fr Feu’

    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/

  • http://blog.nicolargo.com NicoLargo

    @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…).

  • Bilbon

    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

  • http://www.encheres-guide.fr eBay

    Lamp c’est vraiment le top du top pour monter un serveur. Merci pour ce tutoriel simple à comprendre !

  • http://blog.hik3.info HIK3

    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 :P …).

    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 ;-)

  • http://www.betabondieu.com fff.fr

    Bon tuto qui peut être utile à tous à un moment crucial du développement du trafic sur son site web.

  • http://www.ppsmania.fr pps

    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 !

  • http://blog.alpha-573.net Alchimiste

    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.

  • http://www.actumeet.net Cecile rencontre

    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.

  • http://www.bonus-bwin.net bwin.fr

    Tutoriel très bien réalisé, merci pour les informations. Je vous souhaite une bonne continuation.

  • Pingback: Chrome OS vs Android / maison open source / serveur web à la maison / Debian squeeze en mars 2010 par @pscoffoni - Philippe Scoffoni