Ze blog of Quent1

Blog libre (pour le moment)...


Auto hébergement

Attention: bien que valide, ce tutoriel sera bientôt corrigé et complété! Pensez donc à revenir régulièrement sur cette page!

Sommaire

  1. Introduction
  2. Installation et configuration d'Ubuntu Server
  3. Installation et configuration d'OpenSSH Server
  4. Installation et configuration de VsFTPd
  5. Installation et configuration d'Engine X
  6. Installation et configuration de PHP-FPM
  7. Liens

Introduction

La conférence de Benjamin Bayart sur l'Internet libre vous a convaincu et vous souhaitez devenir votre propre hébergeur mais vous ne savez pas comment y arriver avec votre petite connexion ADSL? Dans ce cas ce tutoriel est fait pour vous! Vous apprendrez à installer un serveur SSH pour prendre le contrôle à distance de votre machine, un serveur FTP pour stocker vos fichiers, un serveur web pour rendre votre site disponible sur Internet, PHP pour pouvoir utiliser des pages dynamiques.

Installation et configuration d'Ubuntu Server

Dans ce tutoriel, nous aborderons l'installation d'un système d'exploitation ayant fait ses preuves: Ubuntu Server. Commencez par vous rendre sur cette page puis cliquez sur "Plus d'options..." et sélectionnez la version LTS (pour "Long Term Support" ou "support à long terme" en français). Cliquez ensuite sur le bouton télécharger. Une fois le téléchargement effectué, gravez le fichier ISO sur un CD ou installez-la sur une clé USB (via UnetBootin) puis allumez votre futur serveur (en ayant pris soin d'avoir inséré le support contenant Ubuntu Server).

Une fois arrivé sur le menu principal, sélectionnez français comme langage puis Installer Ubuntu Server. Choisissez ensuite les options suivantes: Votre pays, Oui, Non, Non, Continuer, Ce que vous voulez, Continuer, Oui, Assisté - utiliser tout un disque avec LVM, Le disque souhaité, Oui, Continuer, Oui, Votre nom d'utilisateur, Continuer, Continuer, Votre mot de passe, Continuer, Votre mot de passe (encore), Continuer, Non, Continuer, Installer les mises à jour de sécurité automatiquement, Continuer (ne sélectionnez rien dans la liste), Oui, Continuer. L'ordinateur va redémarrer: Ubuntu est maintenant installé! Entrez votre nom d'utilisateur puis votre mot de passe. Une fois connecté, nous allons effectuer quelques mises à jour. Pour cela, assurez-vous que votre PC est relié à Internet puis entrez les trois commandes suivantes (dans l'ordre indiqué):
Code (BASH):
sudo -i
apt-get update
apt-get dist-upgrade

Votre serveur est maintenant à jour! Vous pouvez dès à présent passer à l'étape suivante.

Installation et configuration d'OpenSSH Server

Nous allons maintenant installer OpenSSH. Une fois ce "démon" installé, vous pourrez prendre le contrôle de votre serveur depuis n'importe quel autre ordinateur connecté sur votre réseau local ou sur Internet. Vous n'aurez donc plus besoin d'un écran!
Attention: pensez à passer en root si cela n'est pas déjà fait!
On installe OpenSSH:
Code (BASH):
apt-get install openssh-server

Puis on le configure:
Code (BASH):
nano /etc/ssh/sshd_config

et on change la ligne:
Code (BASH):
Port 22

par:
Code (BASH):
Port 223

pour éviter les attaques par des robots. On quitte avec ctrl+X puis on répond O et on appuie sur entrée. Ensuite on redémarre le démon:
Code (BASH):
service ssh restart


Vous pouvez dès à présent débrancher l'écran de votre serveur et vous connectez grâce à PuTTY si vous possédez Windows ou grâce à la commande SSH à éxécuter dans le terminal si vous utilisez Linux ou MacOS (n'oubliez pas que le port du serveur SSH est maintenant le port 223).

Installation et configuration de VsFTPd

Nous allons maintenant installer VsFTPd, ce logiciel servira à transférer des fichiers du serveur à un ordinateur ou d'un ordinateur à un serveur.
Attention: pensez à passer en root si cela n'est pas déjà fait!
Commençons par installer le démon:
Code (BASH):
apt-get install vsftpd

Une fois ceci fait, nous allons modifier le fichier de configuration. Je vous propose d'utiliser le mien qui autorisera uniquement les vrai utilisateurs de votre machine à se connecter. De plus, ils n'auront pas le droit de voir le répertoire des autres utilisateurs (ils seront "emprisonnés" dans leur "home" (situé par défaut dans /home/nomdutilisateur)).
Code (BASH):
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
chroot_local_user=YES
#ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

Une fois la configuration terminée, relancez vsftpd grâce à cette commande:
Code (BASH):
service vsftpd restart


Installation et configuration d'Engine X

Nous allons maintenant mettre en place le serveur qui traitera les pages statiques: Engine X.
Attention: pensez à passer en root si cela n'est pas déjà fait!
On commence par ajouter le dépôt de Nginx:
Code (BASH):
echo "deb http://ppa.launchpad.net/nginx/stable/ubuntu lucid main" >> /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C

puis on met à jour la liste des paquets:
Code (BASH):
apt-get update

et on installe nginx:
Code (BASH):
apt-get install nginx

Pour finir on ajoute deux répertoires:
Code (BASH):
mkdir /home/votrelogin/logs
mkdir /home/votrelogin/www


Nous allons maintenant le configurer:
Code (BASH):
nano /etc/nginx/sites-enabled/default


et remplacez tout le contenu par ces lignes (en changeant "www.votredomaine.tld" par votre nom de domaine ou adresse IP ainsi que "votrelogin" par votre nom d'utilisateur):
Code (INI):
server{
    listen 80;
    server_name www.votredomaine.tld;
    access_log /home/votrelogin/logs/www.votredomaine.tld.access.log;
    error_log /home/votrelogin/logs/www.votredomaine.tld.error.log;

    index index.html index.htm;
    root /home/votrelogin/www;

    location ~*^.+(swf|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)${
        expires max;
        add_header Cache-Control public;
        add_header Vary Accept-Encoding;
        gzip on;
    }
}

et on redémarre:
Code (BASH):
service nginx restart


Installation et configuration de PHP-FPM

Pour conclure ce tutoriel, nous allons installer PHP5.
Attention: pensez à passer en root si cela n’est pas déjà fait!
Ce qui suit n'est pas compatible avec l'architecture ARM. Si vous possédez un serveur à architecture ARM (comme le DockStar), utilisez plutôt Spawn FastCGI.
Pour commencer, nous allons installer tous les paquets nécessaires au bon fonctionnement de PHP:
Code (BASH):
# Cette partie inutile si vous utilisez debian
cd /tmp
wget http://fr.archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb53_1.6.dfsg.4~beta1-5ubuntu2_i386.deb
wget http://fr.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu38_3.8-6ubuntu0.2_i386.deb
dpkg -i *.deb

# Cette partie est obligatoire, quelque soit votre système
echo "deb http://php53.dotdeb.org stable all" >> /etc/apt/sources.list
apt-get update
apt-get install php5-cli php5-common php5-suhosin
apt-get install php5-fpm php5-cgi


Une fois PHP installé, nous allons créer un "lien" entre nginx et php. Pour cela, éditez le fichier de configuration:
Code (BASH):
nano /etc/nginx/sites-enabled/default

Dans server{ [...] }:
Code (BASH):
location ~ .php$ {
    fastcgi_split_path_info ^(.+.php)(.*)$;
    fastcgi_pass backend;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /home/votrelogin/www$fastcgi_script_name;
    include fastcgi_params;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
    fastcgi_intercept_errors on;
    fastcgi_ignore_client_abort off;
    fastcgi_connect_timeout 60;
    fastcgi_send_timeout 180;
    fastcgi_read_timeout 180;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
}

Et ceci à la fin (après le dernier }):
Code (BASH):
upstream backend {
    server 127.0.0.1:9000;
}


Pour finir, redémarrez nginx et php5-fpm:
Code (BASH):
/etc/init.d/nginx restart
/etc/init.d/php5-fpm restart


C'est fini! Vous êtes arrivé au bout de ce tutoriel et vous pouvez dès maintenant vous amuser avec votre serveur!

Liens

  1. Un site communautaire sur l'auto-hébergement
  2. La communauté française d'Ubuntu
  3. Le Réseau d’Hébergeurs Indépendants et ENgagés