{{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.//