Serveur de développement web en local

Pour le développement du Blog-Libre et d’autres projets personnels, j’ai été amené à installer un serveur web en local sur ma machine. Je vous présente rapidement comment j’ai procédé et les choix que j’ai fait.

Tout d’abord, mon poste principal tourne sous Debian Jessie sous l’environnement de bureau Mate, est connecté uniquement en réseau filaire à un second poste qui me sert de passerelle; je ne dispose pas de box louée à mon fournisseur de service internet et ne dispose pas de matériel connectable en wifi.

J’installe en priorité les logiciels disponibles dans les dépôts de la distribution.

J’ai choisi, comme Philippe Scoffoni d’utiliser le serveur web Nginx et le serveur de base de données MariaDB, le tout couplé avec PHP-fpm pour les mêmes raisons que lui. Je vous invite d’ailleurs à lire son tutoriel très complet sur l’installation de ces trois logiciels avant de poursuivre la lecture de cet article.

Voici un exemple de configuration d’un des hôtes virtuels que j’utilise (fichier /etc/nginx/sites-available/blog-libre.lan.conf) :

server {
    listen 80;
    server_name www.blog-libre.lan;

    access_log /home/tamplan/www-dev/www.blog-libre.lan/logs/access.log combined;
    error_log /home/tamplan/www-dev/www.blog-libre.lan/logs/error.log error;

    charset utf-8;
    index index.php index.html;
    client_max_body_size 10M;

    root /home/tamplan/www-dev/www.blog-libre.lan/public;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # pass the PHP scripts to FastCGI server listening on /var/run/php5-fpm.sock
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Tous mes hôtes virtuels pointent vers le dossier /home/tamplan/www-dev (dans un sous-dossier du même nom que le nom du domaine local défini).

Le dossier public de l’hôte virtuel est le sous-dossier nommé nom-du-domaine-local/public, les fichiers journaux se trouvent dans le sous-dossiers nom-du-domaine-local/logs (deux fichiers journaux par hôte virtuel). Je préfère conserver ces fichiers dans mon dossier home étant le seul utilisateur de ma machine et y avoir facilement accès avec Caja par exemple (droits d’accès pour la modification, copie de sauvegarde, consultation des fichiers journaux …). L’utilisation du dossier nom-du-domaine-local/public me permet éventuellement d’utiliser un framework comme Laravel et garantir que seul ce dossier est visible pour le web, les fichiers du framework étant stockés ailleurs dans le dossier du nom de domaine local.

Pour être tranquille, j’ajoute mon utilisateur système au groupe www-data via la commande :

usermod -a -G www-data tamplan

Pour le moment, le nom de domaine www.blog-libre.lan est inconnu de mon navigateur internet et de mon système d’exploitation, je modifie donc le fichier /etc/hosts en conséquence :

127.0.0.1	localhost
127.0.0.2	www.blog-libre.lan
#...

Et maintenant, je suis enfin paré pour travailler sereinement :

  • Mon serveur web répond sur le nom de domaine local défini
  • Mon nom de domaine local est reconnu par le navigateur
  • Je peux définir également un nom de sous-domaine local en cas de besoin ou d’autres noms de domaine locaux

Grâce à cette méthode d’organisation, je peux simuler facilement l’utilisation d’un nom de domaine au cours de mes développements sans être obligé d’utiliser un banal localhost ni débourser le moindre centime. Je peux également continuer à développer sans allumer la passerelle et donc travailler sans être connecté à Internet. Enfin le suffixe lan m’indique d’un coup d’oeil que je travaille sur la copie locale du site.

Cet article est une introduction à une série d’articles concernant le développement web et principalement le code que j’ai écrit pour le Blog-Libre.

Les commentaires sont fermés.