Avant d’entrer dans le vif de ce tuto, notons que pour des raisons pratiques, sur le serveur dédié :
- les sites seront installés sur /home/nomdusite/.
- chaque site contient un répertoire logs/ et www/ ce qui donne les répertoires /home/nomdusite/www/ et /home/nomdusite/logs/
Etape 1 : préparation du webspace
On commence par créer un utilisateur spécifique avec la commande adduser.
La création de l’utilisateur monblog implique la création du répertoire /home/monblog/
Le système crée aussi un groupe système monblog qu’il attribue automatiquement à l’utilisateur monblog
# adduser monblog
Il faut maintenant créer un répertoire /home/monblog/logs/ et /home/monblog/www/ pour accueillier respectivement les logs de l’hôte virtuel,
et le blog wordpress.
# mkdir /home/monblog/logs # mkdir /home/monblog/www
On se place dans le dossier /home/monblog/www/ et on récupère la dernière version de wordpress en français
# cd /home/monblog/www # wget –c http://fr.wordpress.org/wordpress-3.2.1-fr_FR.zip # unzip wordpress-3.2.1-fr_FR.zip # rm –rf wordpress-3.2.1-fr_FR.zip # mv wordpress/* . # rm –rf ./wordpress/
Comme le blog est vierge, on va restreindre l’accès par login / mot de passe.
On crée donc les fichiers /home/monblog/www/.htaccess pour indiquer la restriction d’accès
tandis que le fichier /home/monblog/.htpasswd contiendra les identifiants et les mots de passe
des utilisateurs autorisés à accéder au blog en cours de développement.
Notez qu’on place le fichier .htpasswd dans le répertoire /home/monblog/ plutôt que dans /home/monblog/www/
pour des raisons de sécurité. Aussi, les mots de passe dans /home/monblog/.htpasswd sont cryptés en MD5
par la commande Apache htpasswd.
Attention, pour le login, utilisez plutôt des lettres et des chiffres et évitez le – sinon ça risque de ne pas passer.
On crée le fichier .htaccess pour indiquer la limitation d’accès
# nano /home/monblog/www/.htaccess
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /home/monblog/.htpasswd
AuthGroupFile /dev/null
require valid-user
# redirection de tout domaine monblog.fr monblog.eu monblog.com vers www.monblog.com
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.monblog.com/$1 [R=301,L]
On crée le fichier .htpasswd correspondant pour l’utilisateur qu’on nommera « monblog » pour simplifier :
# htpasswd -c ./home/monblog/.htpasswd monblog
ici la doc de la commande htpasswd : http://httpd.apache.org/docs/2.0/programs/htpasswd.html
le shell vous demande d’entrer un mot de passe et de le confirmer … le fichier est maintenant créé
Comme les fichiers du répertoire /home/monblog/ ont été créés avec l’utilisateur système root, il faut les réattribuer à l’utilisateur monblog appartenant au groupe monblog
# chown –R monblog:monblog /home/monblog/
De même pour les fichiers cachés .htpasswd et .htaccess
# chown –R monblog:monblog /home/monblog/.htpasswd # chown –R monblog:monblog /home/monblog/www/.htaccess
Etape 2 : création de l’hôte virtuel
On crée le fichier de configuration de l’hôte virtuel accueillant le blog wordpress www.monblog.com
On indique 2 hôtes : 1 pour le nom de domaine avec www et 1 pour le nom de domaine sans le www
On redirigera par la suite le nom de domaine sans le www vers le nom de domaine dans le fichier /home/monblog/.htaccess
# nano /etc/apache2/sites-availables/monblog.com.conf
Vous remarquerez que le serveur utilise le module apache2-mpm-itk qui permet d’associer chaque hôte virtuel avec un unique UID/GID.
C’est pratique pour detecter une source de problème lorsque vous hébergez plusieurs sites sur un même serveur. Sans ce module,
en cas de surcharge serveur, vous ne pouvez pas savoir quel site est incriminé, il n’y a qu’un processus pour le serveur web apache
qui est associé par défaut à l’utilisateur www-data:www-data
<VirtualHost *:80>
ServerName www.monblog.com
DocumentRoot /home/monblog/www
ErrorLog /home/monblog/logs/error_log
CustomLog /home/monblog/logs/access_log combined
<Directory /home/monblog/www>
Options ExecCGI -Indexes -MultiViews +SymLinksIfOwnerMatch
AddHandler cgi-script .cgi .pl
Order deny,allow
Allow from all
AllowOverride All
php_flag apc.cache_by_default On
</Directory>
<IfModule mpm_itk_module>
AssignUserId monblog monblog
</IfModule>
php_admin_value default_charset UTF-8
</VirtualHost>
<VirtualHost *:80>
ServerName monblog.com
DocumentRoot /home/monblog/www
ErrorLog /home/monblog/logs/error_log
CustomLog /home/monblog/logs/access_log combined
<Directory /home/monblog/www>
Options ExecCGI -Indexes -MultiViews +SymLinksIfOwnerMatch
AddHandler cgi-script .cgi .pl
Order deny,allow
Allow from all
AllowOverride All
</Directory>
<IfModule mpm_itk_module>
AssignUserId monblog monblog
</IfModule>
php_admin_value default_charset UTF-8
</VirtualHost>
On active le site en créant un lien symbolique monblog.com dans /etc/apache2/sites-enabled/ vers le fichier de conf correspondant /etc/apache2/sites-available/blog.com.conf
remarque : on aurait pu aussi utiliser la commande spécifique à Debian : a2ensite
# cd /etc/apache2/sites-enabled/ # ln -s ../sites-available/monblog.com.conf monblog.com
On redémarre apache et on vérifie que tout est bon
# /etc/init.d/apache2 restart
Etape 3 : Créer la base de donnée MySQL monblogdb et l’utilisateur MySQL monblog spécifique à cette base
Pourquoi crée-t-on un utilisateur spécifique pour chaque base et pour chaque site ? Tout simplement car en cas de piratage par exemple par une injection SQL, le pirate récupère
l’utilisateur MySQL du site qui n’a que les droits sur le site et pas un superutilisateur.
Donc après avoir créé la base de données, on se connecte en root et on crée l’utilisateur monblog à qui l’on donne accès à notre base de données monblogdb.
# mysql -u root -p vous entrez votre mot de passe ... mysql>CREATE USER 'monblog'@'localhost' IDENTIFIED BY '******'; mysql>GRANT USAGE ON * . * TO 'monblog'@'localhost' IDENTIFIED BY '******' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; mysql>GRANT ALL PRIVILEGES ON `monblogdb` . * TO 'monblog'@'localhost';
Etape 4 : Faire pointer le domaine vers le serveur
Dernière étape de ce tutoriel, il suffit de faire pointer le domaine vers l’IP du serveur.
Ça se passe chez votre registrar : OVH, Online, 1and1, Gandi …
En général, il faut se connecter à votre espace d’administration, sélectionner le nom de domaine et chercher « Zone DNS »
Dans la zone DNS, il y a plusieurs liens de type différents. Il faut chercher un lien de type [A] vers une IP et indiquer
dans ce champ l’IP de votre serveur web.




