Dedibox Serveur Web dynamique multidomaine

Cet article à pour but certes d’installer un serveur web mais surtout de voir comment héberger plusieurs domaine sur le même serveur. On passera l’installation de base et on passera directement àl’installation des logiciels concernés. Ce tutoriel peut aussi être appliqué pour un serveur à la maison à condition d’avoir un accès à la console et si vous voulez avoir accès à la console à distance il faut au préalable avoir installé le serveur SSH.

Tout le tutoriel est fait avec l’utilisateur root qui est activé d’office en installant Ubuntu sur une Dedibox pour le faire avec le premier utilisateur il faut rajouter sudo avant chaques commande

Installation du serveur SSH:

apt-get install openssh-server

Une fois installé la connexion se fait à partir de la commande aussi en tapant:

ssh user@ip_serveur

Ou

ssh user@domain.tld

1 – Installation

Pour installer le serveur web et tous les autres paquets nécessaire il faut utiliser la commance suivante:

apt-get install mysql-server mysql-client apache2 php5 php5-mysqli

apache2 sert à installer le serveur web en version 2 d’Apache et toutes ses dépendances. mysql-server sert à installer le serveur MySQL en version 5 mysql-client installe le client en ligne de commande de MySQL php5 comme son nom l’indique installe PHP en version 5 php5-mysqli installe un lien pour que PHP5 puisse se connecter à MySQL

2 – Configuration

Une fois les logiciels installés nous allons devoir créer les répertoires qui hébergeront les futurs sites web. Afin de simplifier la sauvegarde il serait bon de centraliser les fichiers dans /home .

Création des répertoires:

mkdir /home/httpd/vhosts/domain.tld
mkdir /home/httpd/vhosts/domain.tld/httpdocs
mkdir /home/httpd/vhosts/domain.tld/logs

domain.tld est à remplacer par votre domaine par exemple motarion.net tout ce qui concerne ce domaine sera regroupé dans ce dossier. httpdocs servira à acceuillir les pages web du site en question afin que le serveur puisse les servir aux clients web. logs contiendra tous les fichiers de logs générés par le serveur web notament les visites ou les erreurs sur le domaine.

Maintenant nous allons configurer le serveur web afin qu’il puisse répondre aux demande. Mais avant cela nous allons le sauvegarder:

cp /etc/apache2/sites-available/default ~/default.sites-available.bak

Pour rendre accessible les domaines il faut éditer le fichier /etc/apache2/sites-available/default avec la commande:

nano -w /etc/apache2/sites-available/default

J’utilise nano qui est plus sympa que vim mais n’importe quel éditeur de texte fera l’affaire, l’option -w de nano sert à entrer dans le mode édition.

Il faut qu’il ressemble à ça (les éléments en gras sont à modifier en fonction du domaine):

@@ NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin adresse_mail
ServerName domain.tld
DocumentRoot /home/httpd/vhosts/domain.tld/httpdocs
ErrorLog /home/httpd/vhosts/domain.tld/logs/error.log
LogLevel warn
CustomLog /home/httpd/vhosts/domain.tld/logs/access.log combined
ServerSignature On
</VirtualHost>

<VirtualHost *:80>
ServerAdmin adresse_mail
ServerName autredomain.tld
DocumentRoot /home/httpd/vhosts/autredomain.tld/httpdocs
ErrorLog /home/httpd/vhosts/autredomain.tld/logs/error.log
LogLevel warn
CustomLog /home/httpd/vhosts/autredomain.tld/logs/access.log combined
ServerSignature On
</VirtualHost>
@@

Sauvegardez (Ctrl+O) les modifications et relancer le service web comme suit:

/etc/init.d/apache2 restart

Il faut être root pour pouvoir relancer les services.

Maintenant que l’on a configuré le service web nous allons configurer le service de base de données. Première chose à faire changer le mot de passe root de la base de donnée car il est vide lors de l’installation du serveur de base de données.

Connexion à la base:

mysql -u root (vous remarquez qu’il ne vous demande pas de mot de passe 😉 )

Modification du mot de passe dans le shell MySQL:

mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('nouveau_mot');

Il faut remplacer host_name par le nom d’hôte qui est localhost dans un premier temps et le numéro de votre dedibox sd-xxxx et bien entendu nouveau_mot par le mot de passe désiré.

3 – Utilisation

Maintenant il faut envoyer les pages web sur le serveur et comme aucun serveur FTP n’est installer il va falloir passer par scp qui fait partit intégrante de SSH, scp est la copie sécurisée des fichiers et donc tout le transfert passe par dessus SSL. Pour copier les fichiers sur le serveur il faut donc utiliser la commande suivante:

scp /home/user_local/fichier_a_copier user@ip_serveur:/home/httpd/vhosts/domain.tld/httpdocs

Lors de l’envois il vous demandera de taper le mot de passe du serveur sur lequel vous voulez copier les fichiers, il faut taper celui de l’utilisateur du serveur.

Pour copier un répertoire entier il faut mettre comme pour cp c’est à dire l’option -r. Une autre option pratique pour le transfert de gros fichiers c’est de mettre -C qui active la compression. Sinon pour copier des fichiers du serveur sur la machine locale on peut utiliser la commande:

scp -rC user@ip_serveur:/home/httpd/vhosts/domain.tld/httpdocs /home/user_local/site_web

Dans cet exemple on copie de façon récursive (-r) et compressé -C) l’enssemble de l’arboresnce du site web. Il est aussi possible de copier des fichier entre deux serveur distant.

4 – Annexe

  • PuTTY sert à la connexion SSH sous Windows, il est très pratique si vous n’avez que Windows de disponible
  • WinSCP tout comme scp sous Linux seulement là il sert aux transfert sécurisé sous Windows, attention tout de même un fichier html fait sous Windows n’aura pas le bon encodage caratère et il est possible que certain caractère spéciaux s’affiche mal.
  • SFTP avec Gnome: sous Ubuntu et plus particulièrement Gnome il est possible de passer par Gnome pour afficher les répertoires distants pour cela il faut cliquer sur:

Raccourcis -> Se connecter à un serveur

Il ne reste plus qu’à paramétrer la connexion comme si vous le faisiez avec SSH. Grâce à cet utilitaire il est possible aussi de sauvegarder le mot de passe de connexion mais attention si quelqu’un prend possession de votre machine la sécurité ne sera plus de mise. Une icône apparaîtra sur le bureau pour commencer la connexion.

J’espère que cela pourra vous être utile si vous voulez mettre plusieurs sites sur le même serveur. N’oubliez pas de faire pointer vos noms de domaine sur le serveur ! Si vous avez des remarques merci de les mettre en commentaire.

À suivre comme billet la sauvegarde automatisé et sécurisée des fichiers et bases de données sur un autre serveur possédant un serveur SSH

7 Replies to “Dedibox Serveur Web dynamique multidomaine”

  1. Hello !

    Billet tres interessant, mais j’ai quelques remarques :

    – sudo c’est bien, vraiment. – mettre les dossiers htdocs et logs sur /home n’est pas une bonne idee, si les logs remplissent la partition la connexion via ssh peut s’averer delicate, le plus simple amha et de rester ‘Debian’ /var/www/mondomaine.tld /var/www/autredomaine.tld et /var/log/apache2/mondomaine.tld-access.log /var/log/apache2/mondomaine.tld-error.log ….

    L’avantage du dossier site-available est justement qu’il en existe un autre site-enabled Je m’explique : Le default repondra si on tape juste l’ip de la machine, tous les autres vhosts iront dans des fichiers de conf a part : /etc/apache2/sites-available/mondomaine,conf /etc/apache2/sites-available/autredomaine,conf

    Pour qu’apache les prenne en compte : sudo a2ensite et suivre les instructions… Ca permet une grande modularite vu que chaque domaine a sa propre conf. Tout n’est pas dans un unique fichier.

    Derniere remarque : il existe ServerAlias pour definir des alias typiquement :

    ServerName domain.tld ServerAlias http://www.domain.tld

    Note tout ceci reste vrai pour votre serveur perso a la maison sur Ubuntu (ou Debian)

  2. pour les logs tout dépends de l’installation première en fait, si la partition contenant /home est très importante cela ne posera pas de problème surtout si l’on nétoie les logs au bout d’un moment.

    Pour le sites available juste un gros merci 🙂

    Je vais modifier l’article ce soir après le boulot!

  3. Un autre truc sympa pour gérer dynamiquement plusieurs domaines (ou sous domaines) est l’utilisation des virtual Host et des variables %1 %2 %3 etc…

    En gros, en utilisant un Wilcard dans les DNS, il suffit après de gérer les domaines / sous domaines via l’arborescence des fichiers sur le serveur.

    j’ai fait un petit billet dessus 😉

  4. Pas eu le temps de modifier l’article un pot de départ a été organisé là ou je travaille !

    Sinon pour la modification je voudrais tester avant afin de comprendre ce que cela implique et s’il faut changer certains paramètres 😉

  5. Problème technique, l’adresse de l’article comprend un %3A ce qui fait que cela ne passe pas dans le fil RSS du planet ubuntu-fr, Peux-tu changer le nom de l’adresse, Merci.

  6. Merci beaucoup Motarion … Ils sont en train de voir ce qu’ils peuvent faire sur la planète ubuntu. Il y a aussi un problèmes d’accés sur le site ubuntu avec les DNS. Si tu veux plus de renseignement, contacte-moi Motarion

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.