Pour certaines raisons qui ne sont pas la problématique du jour, vous avez décidé que votre site web sera dorénavant hébergé sur un serveur dédié. Ce serveur peut être hébergé chez vous ou chez un hébergeur, la problématique sera la même. La question est que faut il installer et comment configurer votre serveur web. Nous apprendrons ici comment à partir de zéro installer et sécuriser un serveur Web php / MySQL avec un reverse proxy permettant d’héberger plusieurs sites.

Je ne rentrerai volontairement pas profondément dans la configuration et l’administration de serveur, l’idée est d’avoir une vision globale et de pouvoir installer et configurer un serveur minimaliste et fonctionnel. Si vous souhaitez que je fasse un dossier en particulier sur un sujet, n’hésitez pas à m’en faire part en commentaire.

Configuration DNS du (des) site(s)

Pour gérer nos sites, il nous faut des noms de domaines que nous acheterons classiquement chez notre registar préféré. Attention, tous ne permettent pas une gestion fine des champs DNS. Pour ma part, je n’ai jamais rencontré de problème avec Gandi et OVH que je recommande. Un peu plus de mal avec un des leaders que je ne citerai pas.

Depuis l’interface d’administration de votre registar (OVH ou Gandi donc) vous devez modifier votre zone DNS et ajouter votre url associée l’ip de votre serveur dans un champ de type A. Cela donnera :
.site1.com A XXX.XXX.XXX.XXX
Si ce champs existe déjà avec une autre adresse IP, il nous faudra le supprimer (ou le modifier directement lorsque cela est possible). Une fois cela enregistré, il faut attendre entre 24 et 48 heures pour que les modifications soit effective sur tous les DNS et que votre url pointe bien sur votre serveur. Vous pouvez déjà tester le domaine en effectuant un ping depuis votre ordinateur.

Installation de Ubuntu serveur

Commençons par le commencement. Il vous faut un système d’exploitation. J’ai éliminé d’office Windows serveur pour des questions de prix plus que de philosophie. Côté unix, les grands classiques sont freeBSD et linux Debian ou Ubuntu. Pour des raisons de simplicité, je partirais sur du Ubuntu (le système de gestion des paquets étant le même pour une Debian).

L’os étant choisi, il faut le télécharger et l’installer si vous êtes sur votre propre serveur. Si vous êtes sur un dédié chez l’hébergeur, l’installation est généralement faite par l’hébergeur.

vous pouvez le télécharger en français sur le site ubuntu-fr.org. la version la plus récente au moment de la dernière mise à jour de ce dossier est Ubuntu server 12.04. Le graver et démarrez votre serveur avec le CD. Les instructions sont généralement très claires et vous êtes guidés pendant toute la durée de l’installation. Je ne m’éterniserais pas sur ce point car ce n’est pas le but principal de ce dossier, vous pouvez toujours trouver un paquet d’information toujours sur le site ubuntu-fr.org

Si tout va bien, vous avez désormais une distribution vierge connectée à internet avec un accès ssh et un compte root uniquement.

Installation et configuration d’un serveur http Apache

Incontournable pour quasiment tous les serveurs web, Apache est le serveur http le plus répandu sur le net (open source qui plus est). L’installation est très simple, un simple
$ sudo apt-get install apache2
permet de l’installer sur votre serveur et il est prêt à l’emploi

Par défaut, apache écoute le port 80 (le port http classique) et va chercher les fichiers dans /var/www/. Pour tester que cela fonctionne correctement, placez un fichier index.html dans le répertoire /var/www/ sur le serveur et entrer www.site1.com dans votre navigateur. Si tout va bien, la page s’affiche.

Nous souhaitons garder le port 80 pour le reverse proxy et configurerons notre serveur http sur le port 81. Pour cela, éditez (avec vi par exemple) le fichier /etc/apache2/ports.conf et ajouter les lignes suivantes :
NameVirtualHost *:81 Listen 81
Tout en conservant la configuration du port 80. De la même façon éditez le fichier /etc/apache2/sites-available/default qui contient la configuration de votre hote virtuel. Modifiez juste le nom de l’hôte virtuel en positionnant le port 81. Redémarrez votre serveur apache
sudo /etc/init.d/apache2 restart

Pour tester cela, comme tout à l’heure il suffit d’entrer l’www.site1.com:81 dans votre navigateur pour préciser qu’on attaque le port 81. Si tout va bien, votre page index.html s’affiche.

Pour changer le répertoire contenant votre site internet sur votre serveur, il nous faudra modifier le chemin de l’hôte virtuel. Pour cela éditez votre fichier /etc/apache2/sites-available/default et changez les deux lignes contenant le chemin :
DocumentRoot /var/www/sites/ ...
Il est bien sur nécessaire de créer ce répertoire et de déplacer notre fichier index.html dans ce répertoire.

Nous parlions d’héberger plusieurs sites sur ce serveur. Nous allons donc créer plusieurs sous répertoire (site1.com et site2.com) sous /var/www/sites/ contenant chacun un fichier index.html différent. Maintenant en tapant dans votre navigateur www.site1.com:81/site1.com/ vous devrez voir s’afficher le contenu du site1. Et de la même façon (www.site1.com:81/site2.com/) vous pouvez voir votre site2. Il vous faudra acheter le domaine site2.com chez votre registar préféré et le configurer comme détaillé précédemment pour que www.site2.com:81/site1.com ou site2.com soit accessible. Pour l’instant il n’y a pas de différences entre site1.com et site2.com

Configuration de Apache en reverse proxy

Venant du monde du Java/J2EE, cumulé à mon expérience en architecture SOA, j’ai pour reflexe de séparer au maximum les couches. Pour diverses raisons sur lesquels je ne m’attarderais pas dans ce dossier (sécurité, évolutivité…), je systématise l’utilisation d’un reverse proxy et n’attaque jamais le serveur http directement. Y compris comme dans le cas présent ou tout est installé sur le même serveur. Cela permet également de gérer simplement l’hébergement de différents sites n’appartenant pas au même domaine. Le mod_proxy d’apache permet de mettre en place ce reverse proxy. Pour l’installer et l’activer, les commandes suivantes s’en occuperont simplement :
$ sudo apt-get install libapache2-mod-proxy-html sudo a2enmod proxy sudo a2enmod proxy_http
Ajoutez également le mod_rewrite pour la réécriture d’url qui sera faite également par le reverse proxy
$ sudo a2enmod rewrite

Créez un nouveau fichier de configuration
/etc/apache2/sites-available/reverse-site1.com
Il contiendra l’hôte virtuel permettant d’accéder a site1.com. Le fichier contiendra les lignes suivantes :
ProxyRequests Off
ProxyPreservehost on
ServerName  site1.com
ProxyPass / http://localhost:81/site1.com/
ProxyPassReverse / http://localhost:81/site1.com/
<Proxy>
Order Allow,Deny
Allow from all
</Proxy>

Il ne vous reste plus qu’a activer l’hôte virtuel et à redémarrer Apache :
$ sudo a2ensite reverse-site1.com sudo /etc/init.d/apache2 restart
En donnant comme nom site1.org à la variable ServerName, vous spécifiez que lorsqu’un utilisateur attaque le reverse proxy avec l’url site1.com, la page affiché sera celle du ProxyPass soit l’url spécifiée. En faisant la même chose pour site2.com, vous obtenez un magnifique serveur mutualisé hébergeant deux sites différents… Félicitations ;)

Installation PHP / MySQL

Vous avez désormais un super serveur http pouvant afficher n’importe quelle page html. Mais qui aujourd’hui possède encore un site en pure HTML? Nous allons donc installer ce qu’il faut pour que vous puissiez installer votre beau site php et votre base de donnée MySQL.
$ sudo apt-get install php5
$ sudo apt-get install mysql-server
$ sudo apt-get install php5-mysql

Lors de l’installation de mySQL, nous remplirons les informations pour le compte root de notre base de donnée.

Il vous suffit de vous connecter à MySQL pour créer votre première base de donnée et y associer un utilisateur pour lancer votre premier « vrai » site. Vous pouvez installer wordpress / Joomla / autre, la configuration de base de php / MySQL suffisant amplement pour le moment. Pour faciliter l’administration de la base MySQL, il est tentant d’installer PHPMyAdmin ou équivalent, je ne le fait généralement pas pour des raisons de sécurité. J’execute manuellement les scripts testés en local sur mon poste de développement (ou vous pouvez installer bien sur PhpMyAdmin).

Votre serveur Web est prêt à l’utilisation

La sécurisation d’un serveur fera l’objet d’un dossier spécifique. Il est actuellement en cours de rédaction. Si vous souhaitez que je développe un point en particulier, faites le moi savoir par commentaire. Passez à l’étape suivante afin de sécuriser votre serveur Web.

Pour aller plus loin dans l’administration de système UNIX, consultez maintenant notre formation linux

En savoir plus sur la formation Linux !

Recherches les plus fréquentes:

  • serveur web linux
  • serveur web sous linux
  • serveur web ubuntu
  • serveur web
Cet article vous a plu ? N'hésitez pas à le partager avec vos amis...
Categories: dossiers

11 Responses so far.

  1. Nicolas B. dit :

    Hello !

    Merci pour ton partage, c’est très enrichissant pour moi qui découvre Linux et la création d’un srveur web sous Ubuntu server. J’ai pu découvrir différents outils pour suivre ton tutoriel :) ;
    Par ailleurs, je te fais d’un souci que j’ai. Sur le tuto je suis au stade :
    ‘Il ne vous reste plus qu’a activer l’hôte virtuel et à redémarrer Apache :
    sudo a2ensite reverse-site1.com
    sudo /etc/init.d/apache2 restart’

    donc la premierere commande (a2ensite etc.) passe nickel !
    Lorsque je veux ‘restart’ apache j’ai cette erreur : syntax error on line 6 of /etc/apache2/sites-enabled/reverse-site1.com : order not allowed here action ‘configtest’ failed The Apache error log may have more information … fail!

    Je vérifie les logs, il n’y as pas d’erreur. J’ai vérifié reversite-site1.com, il n’y as pas d’erreur à la ligne 6, pas d’espace en trop etc.)

    Je cherche sur google, je ne retrouve pas exactement mon genre de probleme, je n,arrive aps à comprendre la cause précise ; peut être pourriez-vous m’aider ? auriez-vous une idée ?

    En tout les cas, merci beaucoup pour votre travail, j’en ai appris beaucoup en peu de temps. Merci par avance pour votre réponse.

    • julie dit :

      Bonjour Nicolas,

      Les balises <Proxy> encadrant les lignes ‘Order Allow,Deny
      Allow from all’ n’apparaissaient plus dans mon tuto… Je pense que votre erreur vient de cela… C’est corrigé ci-dessus.

  2. Nicolas B. dit :

    Bonjour,

    Jsute pour information : pouvez-vous me confirmer que cette partie du tuto est exact ?
    Créez un nouveau fichier de configuration
    /etc/apache2/site-available/reverse-site1.com

    Est-ce bien ‘site-available’ sans ‘S’ à site, ou bien c’est en réalité ‘sites-available’ qu’il faut utiliser.

    J’utilise pour ma part le ‘sites-available’.

    Merci.

  3. denis from formation management dit :

    Avant d’ essayer tout cela, pourriez-vous me dire si c’ est à la portée, réellement, de n’ importe qui? parce qu’ il est vrai que je ne suis pas un pro dans le management de LINUX :s

    • julie dit :

      Bonjour Denis et Bienvenue,

      Pour répondre à votre question, il est nécessaire d’avoir quelques bases, à savoir naviguer avec une console, créer / supprimer / modifier un fichier avec vi…

      Mais au dela de cela, il faut juste s’interesser et comprendre ce que j’explique dans ce tuto sans se contenter de copier coller ;)

  4. David Hoflack dit :

    Bonjour,
    Je trouve votre tutoriel très claire et très simple a comprendre, c’est ce qui manque dans d’autre.
    J’ai quelques petites questions ^^

    Je suis actuellement étudiant en développement informatique, en cour nous voyons le php, mais je me suis m’intéressai au Java, dont JSF pour faire des page web, puis après nombre recherche, j’ai découvert le Framework J2EE que j’affectionne particulièrement, j’ai même décider de me spécialiser dans ce dernier. Maintenant que je me suis habituer avec J2EE, j’ai commencer a me faire une petite application que je voudrais mettre sur mon serveur (un serveur virtuel en local pour commencer) je part donc de votre tutoriel, mais je ne trouve aucun tutoriel claire pour pouvoir installer/configurer un serveur d’application pour J2EE sur un serveur, je travail habituellement sous NetBeans avec Glassfish, et j’ai aussi entendus dire que JBoss était tout aussi bien. Auriez-vous un tutoriel expliquant comment installer Glassfish ou autre sur un serveur dédié ?
    Merci, Cordialement
    Hoflack David

    • julie dit :

      Bonjour David,

      Je vous remercie pour ce retour, n’hésitez pas à recommander ce tutoriel ;)

      Pour répondre à votre question, j’ai l’habitude d’utiliser Tomcat comme serveur java (facile à installer port 8080 par défaut) et apache en reverse proxy exactement comme indiqué ci dessus.

      Suite à votre demande, je vais faire dans les semaines à venir un tutorial sur l’installation, la configuration Tomcat et le déploiement d’une application pour continuer dans la lancé des tuto sur le serveur web.

      Bien cordialement

      • David Hoflack dit :

        Bonjour,
        Merci de votre réponse rapide, j’attend ce tutoriel avec impatience =) Et oui je le recommande, surtout a des camarades de la classe pour les projet de fin d’année.
        Merci encore pour ces tutoriel,.
        Cordialement, Hoflack David

  5. Alun dit :

    Merci pour le tuto, très bon boulot, je débute complètement sur Ubuntu et ton tutoriel m’a beaucoup aidé. A bientot ;)

  6. meschac dit :

    merci, si vous pouvez n’aider car le server Mysql passe qu’en mode shell

Ne partez pas sans laisser un commentaire


This site uses KeywordLuv. Enter YourName@YourKeywords in the Name field to take advantage.