Configuration d’un serveur dédié pour votre blog

Date: 24/11/2009 | Catégories: Blog,Open-source,Planet-libre,Systeme | Tags: ,,

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 !