{{tag>Trusty BROUILLON}}
====== Création d'un serveur HTTP (Lighty) + PHP + SQLite ======
__Note préliminaire__ :
Dans ce tutoriel, nous supposons un hôte :
* de nom **server.exemple.com**
* d'adresse IP **192.168.0.31**.
Modifiez ces paramètres selon vos besoins.
Un serveur **lighttpd** permet de construire un site web accessible via le réseau local (LAN).
En configurant le routeur et le pare-feu, vous pouvez ouvrir l'accès au site via l'Internet (en faisant attention à la sécurité).
**__Arborescence de lighty__**
Voici les dossiers et fichiers importants de **lighty** (les fichiers sont en italique, ceux qui nous servent sont en jaune et soulignés):
| AAA | |AAA=**/etc**
| |!| |
| |`|-| AAA | |AAA=**lighttpd**
| | | | |!| |
| | | | |)|-| AAA | |AAA=**//lighttpd.conf//**
| | | | |!|
| | | | |`|-| AAA | |AAA{border-color:red;background-color:lightgreen}=**conf–available** :\\ répertoire des configurations complémentaires
| | | | | | | |!| |
| | | | | | | |)|-| AAA |AAA{border-color:red;background-color:yellow}=**//__40–config.conf__//** :\\ configuration générale
| | | | | | | |!| |
| | | | | | | |)|-| AAA |AAA{border-color:red;background-color:yellow}=**//__50–modulexxx.conf__//** :\\ configuration du module **modulexxx**
| | | | | | | |!| |
| | | | | | | |)|-| AAA |AAA{border-color:red;background-color:yellow}=**//__90–vhost–xxx.yyy.tld.conf__//** :\\ configuration de l'hôte virtuel **xxx.yyy.tld**
| | | | | | | |:| |
| | | | | | | |L|~| AAA |AAA{text-align:left;border-color:white}=etc.
| AAA | | | | | | bbb | |AAA=**/var**|bbb=**/srv**
| |!| | | | | | | |!|
| |)|-| AAA | |-@a| |`|-| AAA |AAA{border-color:red;background-color:lightgreen}=**/www**\\ racine par défaut du site
| |!|
| |`|-| AAA |AAA=**log**
| | | | |!|
| | | | |`| AAA |AAA=**lighttpd**
| | | | | | |!|
| | | | | | |)|-| AAA |AAA{border-color:red;background-color:yellow}=**//__access.log__//**
| | | | | | |!|
| | | | | | |`|-| AAA |AAA{border-color:red;background-color:yellow}=**//__error.log__//**
* **/etc/lighttpd/** : répertoire des configurations
* **//lighttpd.conf//** : configuration par défaut ; nous n'y touchons pas.
* **conf–available/** : répertoire des configurations complémentaires ; c'est ici que nous travaillerons. Pour cela, nous créerons des fichiers :
* **//__40–config.conf__//** : configuration générale
* **//__50–modulexxx.conf__//** : configuration du module xxx
* **//__90–vhost–xxx.yyy.tld.conf__//** : configuration de l'hôte virtuel xxx.yyy.tld
* **/srv/www/** : racine par défaut du site (reportée depuis **/var/www** par montage)
* **/var/log/lighttpd/** : répertoire des journaux du serveur
* **//__access.log__//** : journal des pages traitées par le serveur
* **//__error.log__//** : journal des erreurs
Pour ne pas toucher au fichier de configuration par défaut **/etc/lighttpd/lighttpd.conf**, livré avec l'application, nous ne travaillerons que dans le répertoire **/etc/lighttpd/conf-available/**. Ainsi, les réglages ne seront pas affectés par les mises à jour et les migrations seront simplifiées (il suffira de récupérer le fichier de configuration).
Dans ce dossier, nous placerons :
* les réglages généraux dans un fichier spécifique **/etc/lighttpd/conf-available/40–config.conf**
* les réglages des modules (fichiers **/etc/lighttpd/conf-available/50–modulexxx.conf**)
* les hôtes virtuels (fichiers 90–vhost–xxx.yyy.tld.conf)
Le dossier **/var/log/lighttpd/** contient les journaux (accès : **access.log**, erreurs : **error.log**)
Le dossier **/srv/www/** est la racine du site, de même que **/var/www** (par montage).
===== Configuration =====
==== PhpPgAdmin ====
Créez avec les droits d'administration le fichier **/etc/lighttpd/conf-available/50-phppgadmin.conf** pour y écrire ceci :
# PhpPgAdmin :
alias.url += ( "/phppgadmin" => "/usr/share/phppgadmin/")alias.url += ( "/phppgadmin" => "/usr/share/phppgadmin/")
Activez cette configuration en lançant :...@...:~ $ sudo lighty-enable-mod phppgadmin
==== Hôtes virtuels (vhost) ====
=== vhosts utilisateur ===
Chaque utilisateur du système a accès à son home personnel et à un sous-répertoire public_html de son home. Il suffit de créer cette arborescence pour qu'elle soit aussitôt utilisable.
$HTTP["host"] =~ "users\.domaine\.tld" {
evhost.path-pattern = "/home/%4/public_html/"
}
Si **johndoe** est un user, l'adresse [[http://johndoe.users.example.org/]] => **/home/johndoe/public_html/**
__**Méthode plus générale**__
Toujours pour l'utilisateur **johndoe**,
$HTTP["host"] =~ "users\.domaine\.tld" {
server.document-root = "/home/%4/sites/default/site"
evhost.path-pattern = "/home/%4/sites/%0/site/"
}
* Si **johndoe.users.domaine.tld** est demandé, et que **/home/johndoe/sites/domaine.tld/site/** est trouvé, ce chemin devient la docroot.
* Si **johndoe.users.domaine.tld** est demandé mais qu'il n'existe pas de répertoire **/home/johndoe/sites/domaine.tld/site/**, alors la docroot reste **/home/johndoe/sites/default/site**.
==== Rendre le serveur disponible sur Internet ====
Il reste à rediriger le port 80 (en TCP) vers la machine qui supporte le serveur http, comme ceci :
paramètres de la freebox -> mode avancé -> réseau local/redirection de ports :
ajouter une redirection,
* port de début : 80
* port de fin : 80
* TCP
* choisir l'IP de la machine qui supporte le serveur
* commentaire : par exemple, serveur http framboise
==== Pare-feu ====
Installez le paquet **[[apt>arno-iptables-firewall]]** ou en ligne de commande :$ sudo apt install arno-iptables-firewall
Pendant l'installation, il vous posera quelques questions pour configurer le parefeu :
{{materiel:internet:serveur:llsp-capture-iptables-1.png|}}
{{materiel:internet:serveur:llsp-capture-iptables-2.png|}}
{{materiel:internet:serveur:llsp-capture-iptables-3.png|}}
{{materiel:internet:serveur:llsp-capture-iptables-4.png|}}
{{materiel:internet:serveur:llsp-capture-iptables-5.png|}}
{{materiel:internet:serveur:llsp-capture-iptables-6.png|}}
{{materiel:internet:serveur:llsp-capture-iptables-7.png|}}
{{materiel:internet:serveur:llsp-capture-iptables-8.png|}}
{{materiel:internet:serveur:llsp-capture-iptables-9.png|}}
{{materiel:internet:serveur:llsp-capture-iptables-10.png|}}
==== Fail2ban ====
**Fail2ban** est sans doute le logiciel le plus important pour protéger votre serveur.
Principe : si un attaquant échoue plus de 3 fois (par exemple) à se connecter au serveur, alors son IP est bannie (automatiquement avec iptables).
**Fail2ban** fonctionne avec **ssh**, mais aussi le serveur mail **postfix** et **dovecot**, ainsi que d'autres services comme le **ftp**!
Pour l'installer :
$ sudo apt-get install fail2ban
Pour le configurer, éditez avec les droits d'administration le fichier **/etc/fail2ban/jail.conf** pour le modifier comme ceci :
Précisez :
* **enabled = true** pour les services que vous souhaitez protéger,
* ainsi que le nombre maximum de tentatives permises dans **maxretry** (par défaut, **maxretry = 3**).
===== Utilisation =====
Lancez l'application.
===== Désinstallation =====
Pour supprimer cette application, il suffit de supprimer son paquet.
===== Voir aussi =====
* **(en)** Site officiel du module accesslog [[http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModAccessLog]]
* **(en)** Comment configurer WebDAV avec Lighttpd : [[http://www.howtoforge.com/setting-up-webdav-with-lighttpd-debian-etch]] et sa deuxième page (lien en bas de page)
//Basé sur [[http://redmine.lighttpd.net/projects/lighttpd/wiki|]] par lighttpd.//