Tutoriel : Installation de Lighttpd, serveur web léger sur DNS-323

Tutoriel : Installation de Lighttpd, serveur web léger sur DNS-323

Lighttpd : Daemon serveur web léger

Sa fonction principale est de répondre aux requêtes HTTP. En d'autres termes, il permet aux clients HTTP (tels que Internet Explorer et Firefox) d'accéder aux pages HTML hypertexte stockées sur un site web stocké sur le NAS.

En termes plus complexes, lighttpd se situe entre un serveur HTTP GoAhead classique et un serveur Apache.

Sommaire

1. Exemples d'utilisation

Le serveur lighttpd vous permet de construire un site web qui est accessible via votre réseau local (LAN). Si vous configurez le pare-feu de votre routeur correctement, vous pouvez également laisser les autres accéder au site via l'Internet. L'ouverture de votre pare-feu pour donner accès aux requêtes HTTP extérieures nécessite évidemment une certaine attention concernant sécurité.

Un site web de base se compose d'une collection de pages HTML qui fournissent des textes, liens, images, documents, etc. Les pages HTML peuvent être écrites avec un éditeur ASCII. Il existe de nombreux livres et tutoriels en ligne sur la façon de créer des pages web de base et avancées directement en HTML. Cela peut valoir la peine d'essayer si vous voulez comprendre le fonctionnement du World Wide Web: le HTML est la principale technologie derrière WWW.

Cependant, ces dernières années, les pages web sont de plus en plus sophistiquées en termes de conception technique et visuelle. En outre, le contenu de nombreux sites web est devenu dynamique: ce que vous voyez dans votre navigateur change souvent tous les jours (la météo, les nouvelles, un blog, photos). Ces pages HTML dynamiques sont générées (par des programmes en cours d'exécution ou des scripts) chaque fois que l'ensemble des pages HTML doit être mis à jour, ou sont créées à la volée lorsque le serveur reçoit une requête de page.

Quelques exemples de ce que vous pouvez faire avec un site web composé de basique, statique HTML desservis par lighttpd:

  • une page d'accueil de base disant qui vous êtes
  • un ensemble de pages sur votre passe-temps, vos recettes, ou vos rapports sur votre voyage de vacances (avec toutes les images incluses)

Grâce à cette approche, vous "programmez" votre page en utilisant le langage HTML.

Exemples de solutions pour générer des pages «amateur statique HTML" en utilisant un logiciel:

  • Microsoft Word peut générer une version HTML d'un document (y compris le formatage, les liens et images)
  • les photographes professionnels pourraient utiliser Photoshop Lightroom pour générer une galerie en ligne des exemples de photos

Grâce à cette solution vous utilisez un logiciel pour générer les pages HTML. Cela signifie que vous n'avez pas besoin d'apprendre (beaucoup) le HTML, mais plutôt besoin d'apprendre comment utiliser le logiciel (souvent capricieux). Tout cela peut vous faire économiser de la frappe et permet de générer un aspect uniforme pour le site web.

Exemples d'applications permettant de developper des pages HTML dynamiques:

  • un blog ou un forum contient les formulaires HTML qui permettent aux utilisateurs de saisir du texte qui est joint à certaines pages. Example: Sil51.com utilise un serveur PHP et logiciel Joomla pour générer les pages. Souvent, ces solutions utilisent une base de données comme MySQL pour stocker et gérer les données brutes utilisées pour générer le HTML.
  • bon nombre de sites Web 2.0 connus qui fournissent un service pour vous (Wikipedia, Google Maps, YouTube, Flickr)

Grâce à cette solution, le logiciel génère des pages HTML à la demande, tient à jour les pages, et permet l'interaction avec l'utilisateur. SI vous allez plus loin, et vous débrouillez pour avoir des utilisateurs de votre site Web pouvant fournir du contenu gardant votre site web intéressant, vous pouvez appeler cela Web 2.0 et dires à vos amis, que vous deviendrez riche - un jour.
Ce type de logiciel est souvent connu comme Système de Gestion de Contenu (CMS) et comprend des moteurs comme Drupal, Joomla!, MediaWiki (utilisé par Wikipedia) et WordPress (comme utilisé pour les blogs).

2. Configuration de Lighttpd

2.1. Installation

Par défaut, lighttpd est déjà installé avec les packages fun_plug. Mais il y a des mises à jour disponibles. Avant de pouvoir l'installer, veillez à synchroniser vos packages. Ensuite, mettez à jour en utilisant la commande suivante:

Code:
funpkg -u /ffp/pkg/additional/*/lighttpd-*.tgz

Si vous n'avez pas installé tous les packages du répertoire "packages" (pourquoi pas?), vous devriez au moins exécuter l'installation du package OpenSSL:

Code:
funpkg -i /ffp/pkg/packages/openssl-*.tgz

2.2. Répertoires

La configuration par défaut de lighttpd a besoin d'une petite arborescence de répertoires où il peut stocker des fichiers de journalisation et récupérer les données à afficher pour les utilisateurs. Au lieu de créer le répertoire à cet endroit, vous préférerez peut-être créer un lien symbolique de /srv/ vers le répertoire cible de votre choix.

Code:
mkdir -p /ffp/opt/srv/mysql
ln -s /ffp/opt/srv/ /srv

Ce lien sera perdu après le redémarrage du périphérique, vous devez donc ajouter les deux lignes suivantes à la fin du fichier /ffp/etc/fun_plug.init de recréer le lien à chaque démarrage du NAS. Vous pouvez éditer ce fichier en utilisant un éditeur comme nano. Utiliser ce qui suit pour tous les NAS autres que le DNS-320 ou DNS-325:

Code:
# create custom link to the server-folder
ln -s /ffp/opt/srv/ /srv

Maintenant, créez les répertoires pour le serveur web:

Code:
mkdir -p /srv/www/pages
mkdir -p /srv/www/logs
mkdir -p /srv/tmp

Le répertoire /srv/www/pages est l'emplacement par défaut pour le site web lui-même. L'emplacement est défini par un paramètre appelé server.document-root dans le fichier /ffp/etc/lighttpd.conf. Cela signifie que tous les répertoires en dessous de server.document-root sont visibles via le serveur HTTP (attention), alors que tous les autres répertoires ne sont pas visibles.

Le répertoire /srv/www/logs est pour les fichiers journaux (log) dans lesquels lighttpd peut enregistrer tous les évènements.

2.3. Pages HTML de test

Dans le dossier www, vous devriez créer une page d'accueil nommée index.html contenant le texte ASCII suivant. Notez que la mise en forme est uniquement pour la lisibilité et peut être (et est souvent) omis. Vous n'avez pas besoin de vous inquiéter de l'utilisation des conventions de fin de ligne Linux ou Windows ici (les deux fonctionnent). Vous pourriez avoir à adapter la ligne CH3SNAS:81 afin de correspondre au nom du réseau de votre NAS ou utiliser son adresse IP à la place (par exemple 192.168.0.20:81).

Code:
<html>
<head>
<title>Hello world</title>
<style type="text/css">
<!--
h1 {text-align:center;
font-family:Arial, Helvetica, Sans-Serif;}
p {text-indent:20px;}
-->
</style>
</head>

<body bgcolor="#ffffcc" text="#0000ff">
<h1>Hello, CH3SNAS Tweak'n World!</h1><p>
<A HREF="page1.html">Link to local page1</A><p>
<A HREF="page2.html">Link to local page2</A><p>
<A HREF="http://CH3SNAS:81">Configure the CH3SNAS</A><p>
<A HREF="http://nas-tweaks.net/CH3SNAS:Tutorials/lighttpd">external link to the Lighttpd tutorial</A>
</body>
</html>

Le code HTML est constitué d'une section head et body. La section head contient le titre (affiché en haut de la fenêtre du navigateur) et, dans ce cas, définit les styles de formatage pour Header1 et nouveau paragraphe (<p>).
La section body commence par un en-tête, suivie de quatre liens ("ancre <A>") vers d'autres pages, vers la page HTML de configuration d'origine du NAS (sur le port 81 au lieu de la valeur par défaut 80) et un lien vers un site Web distant.

Ensuite, créez page1.html dans le même répertoire contenant:

Code:
<html>
<head>
<title>Page #1</title>
<style type="text/css">
<!--
h1 {text-align:center;
font-family:Arial, Helvetica, Sans-Serif;}
p {text-indent:20px;}
-->
</style>
</head>

<body bgcolor = "#ffffcc" text = "#0000ff">
<h1>Page 1</h1><p>
<A HREF="index.html">Home</A><p>
<A HREF="page2.html">Link to page2</A><p>
</body>

De même, vous pouvez créer page2.html dans le même répertoire:

Code:
<html>
<head>
<title>Page #2</title>
<style type="text/css">
<!--
h1 {text-align:center;
font-family:Arial, Helvetica, Sans-Serif;}
p {text-indent:20px;}
-->
</style>
</head>

<body bgcolor = "#ffffcc" text = "#0000ff">
<h1>Page 2</h1><p>
<A HREF="index.html">Home</A><p>
<A HREF="page1.html">Link to page1</A><p>
</body>
</html>

2.4. Activation de Lighttpd

Ce didacticiel suppose que fun_plug est installé et que vous avez installé le packages supplémentaires (notamment lighttpd). Vous pouvez tester si lighttpd est installé à l'aide de

Code:
which lighttpd

sur la ligne de commande ssh. Si il est installé, il répond par l'emplacement du fichier script de lighttpd: /ffp/sbin/lighttpd.

2.4.1. Réveiller les Daemons

Ensuite, il faut activer le serveur lighttpd par la ligne de commande (voir le tutoriel des packages pour une explication détaillée):

Code:
chmod a+x /ffp/start/lighttpd.sh

et activer un script qui désactive le serveur HTML standard appelé webs (si vous utilisez un DNS-320/DNS-325 s'il vous plaît passez cette étape et passez à la section suivante):

Code:
chmod a+x /ffp/start/kickwebs.sh

Le serveur standard "webs" redémarre alors automatiquement au bout de quelques minutes, mais se déplace vers le port 81 parce que le port HTTP standard (80) est déjà occupé par le serveur lighttpd.

Si vous utilisez un DNS-320 ou un DNS-325, vous devez activer "kickwebs_dns320.sh" pour se libérer du lighttpd interne (qui est utilisé pour l'interface web de l'appareil) du Port 80:

Code:
chmod a+x /ffp/start/kickwebs_dns320.sh

Notez que la commande chmod ne prendra effet que lors du prochain redémarrage. Si vous redémarrer maintenant, néanmoins mais rien ne change. Si vous voulez essayer, vous pouvez voir ce test manuellement à l'aide:

Code:
sh /ffp/start/kickwebs.sh start # When you run a Device other than DNS-320 / DNS-325
sh /ffp/start/kickwebs_dns320.sh start # When you run a DNS-320 / DNS-325
sh /ffp/start/lighttpd.sh start

Sauf si vous avez installé le serveur auparavant, vous obtiendrez le message d'erreur /ffp/etc/lighttpd.conf: Required file not found or not readable.
Qui, selon les normes Linux est un message d'erreur inhabituellement clair: un fichier avec les paramètres de configuration pour lighttpd est manquant dans le répertoire /ffp/etc (voir le tutoriel des packages pour plus d'explications).

2.4.2. lighttpd.conf

Nous pouvons résoudre l'absence du fichier /ffp/etc/lighttpd.conf en copiant le fichier depuis le répertoire /ffp/etc/examples/. Si vous n'êtes pas sur un DNS-320 ou un DNS-325 et vous n'avez pas besoin de PHP, alors exécutez la commande suivante:

Code:
cp /ffp/etc/examples/lighttpd.conf /ffp/etc/

Cela copie un des deux fichiers de configuration fournis du sous-répertoire /ffp/etc/examples sous-répertoire vers le répertoire /ffp/etc.
Si vous voulez lancer PHP et vous n'êtes pas sur un DNS-320 ou un DNS-325, alors exécutez la commande suivante:

Code:
cp /ffp/etc/examples/lighttpd.conf-with-php /ffp/etc/lighttpd.conf

Si vous êtes sur DNS-320 ou DNS-325, vous n'avez pas d'autre choix que de lancer le serveur web avec PHP (Veuillez configurer PHP avant d'essayer de lancer lighttpd de nouveau!):

Code:
cp /ffp/etc/examples/lighttpd.conf-dns320 /ffp/etc/lighttpd.conf

2.4.3. Port

Vérifiez immédiatement avec nano le port renseigné dans le fichier /ffp/etc/lighttpd.conf :

Code:
nano /ffp/etc/lighttpd.conf

Allez jusqu'à la ligne server.port et changez la valeur à 80 si ce n'est pas le cas. Sauvegardez les modifications avec nano par CTRL+O, quittez par CTRL+X.

Ensuite nous pouvons essayer de lancer lighttpd manuellement, de nouveau pour voir comment faire:

Code:
sh /ffp/start/kickwebs.sh start # When you run a Device other than DNS-320/DNS-325
sh /ffp/start/kickwebs_dns320.sh start # When you run a DNS-320 / DNS-325
sh /ffp/start/lighttpd.sh start
sh /ffp/start/lighttpd.sh status

Comme cela que suggère que lighttpd est bien en cours d'exécution, nous assayons de taper http://CH3SNAS:81 dans la barre d'adresse de votre navigateur Web. Notez que si votre nom de réseau pour l'appareil diffère de "CH3SNAS", utiliseez le nom ou sont IP à la place. Vous devriez maintenant obtenir l'écran de configuration standard. Souvenez-vous 81: le numéro de port au cas où vous avez besoin d'y accéder dans le futur (1 de plus que le port standard 80 utilisé pour les serveurs HTTP - qui vous permet de surfer sur Internet). Vous pouvez fermer cet écran, qui ne sert qu'à démontrer que kickwebs.sh a bien fait son travail.

Page HTML d'exemple

Nous allons maintenant essayer d'entrer http://CH3SNAS dans la barre d'adresse du navigateur Web. Si tout va bien, vous verrez la page web attendue.

2.4.4. Démarrer ou de ne pas démarrer

Rappelez-vous que vous avez maintenant un lighttpd en cours d'exécution sur le port 80 à chaque fois que vous démarrerez le NAS. Si vous souhaitez vous connecter à l'interface web du NAS, connectez-vous au port 81.

3. Tester Lighttpd

À ce stade, vous pouvez entrer chacune des adresses suivantes dans la barre d'adresse de votre navigateur (en supposant que CH3SNAS est le nom exacte du réseau de votre NAS):

  • http://CH3SNAS:80/index.html
  • http://CH3SNAS:80 – index.html est par défaut pour les navigateurs
  • http://CH3SNAS – le port 80 est par défaut pour HTTP
  • CH3SNAS – http est le protocole par défaut pour les navigateurs web

4. Notes

4.1. Les fichiers log

Le répertoire /srv/www/logs contient des fichiers journaux qui enregistrent respectivement les accès au serveur et toutes les erreurs (y compris le démarrage et l'arrêt) déclarés par le serveur.

Code:
-rw-r--r-- 1 root root 00 Oct 19 17:06 access.log
-rw-r--r-- 1 root root 48 Oct 19 17:06 error.log

Le fichier access.log contient des enregistrements horodatés qui sont annexées à chaque fois qu'un fichier sur le serveur est accédé via HTTP (quel fichier, quelle adresse IP, statuscode HTTP, navigateur utilisé). Voici une ligne schématique du fichier access.log:

Code:
client_IP server_URL - [date:time +0200] "GET /path/file_1.jpg HTTP/1.1" status_code file_length "-" "client_browser_type"

Si vous souhaitez effacer les fichiers journaux d'une façon rapide, pour cela effacez-les redémarrez le NAS. Le serveur lighttpd va régénérer les fichiers journaux lorsque il est lancé. Une solution rapide consiste à redémarrer le serveur lighttpd serveur à l'aide de:

Code:
rm /srv/logs/access.log
cd /ffp/start
sh lighttpd.sh restart

5. Et maintenant?

Vous devriez maintenant installer PHP s'il n'est pas déjà installé et essayez d'utiliser MySQL. Amusez-vous bien !

Source (en Anglais) : NAS-Tweaks.net

Commentaires  

Citation : Wizzy:

J'ai installé fun_plug et lighttpd, créé mes répertoires pour mon site web.
Par contre, je n'ai pas les droits pour copier mes pages HTML dans le répertoire www.
Où ai-je merdé?


Ca semble être un problème de permission du dossier.
Donc soit modifier les permissions (chmod), soit copier les fichiers dans www/ via la ligne de commandes ssh sous compte root.

Il existe aussi une solution avec FileZilla ou WinSCP pour tranférer les fichiers en sftp (avec le compte root + pass, port 22), sshd doit alors être executable dans /ffp/start/. Accès complet sur nas en ftp, plutôt sympa, mais risqué pour les novices.

Bon courage !
J'ai installé fun_plug et lighttpd, créé mes répertoires pour mon site web.

Par contre, je n'ai pas les droits pour copier mes pages HTML dans le répertoire www.

Où ai-je merdé?

Citation : jerome:

Hello,

En fait cela fonctionne pour le 320,
J'ai du changer le port du serveur par défaut (/etc/lighttpd/lighttpd.conf)
ensuite lorsque je me logger (par exemple sur http://ip:8080)
il oublie la redirection de port, il suffit d'ajouter le bon port dans l'url :
par exemple de ça :
http://192.168.0.20/web/home.html
vers ça :
http://192.168.0.20:8080/web/home.html

et cela fonctionne !



Bonjour,

Effectivement, on peut modifier le por part défaut de lighttpd en modifier le fichier conf, valeur "server.port = 8080".

Mais par défaut, l'interface d'administration du Dlink est sur le port 80. Si on veut que le serveur web soit sur le port 80 il faut obligatoirement activer l'éxécution du fichier "/ffp/start/kickwebs.sh" (ou "/ffp/start/kickwebs_dns320.sh" pour les DNS-320).

Si toutes ces étapes sont bien configurées, au prochain redémarrage du NAS, l'administraion du DNS doit être sur le port 81 et le serveur web sur le port 80.

Mais il reste possible de conserver le port 80 pour l'admin, et un port personnalisé pour le serveur we.

Citation : sil51:


Citation : gadsweb:

J'ai un soucis avec l'installation.
Je parviens à arriver sur mon serveur, en revanche lorsque je pointe avec le port 81 pour la console d'administration du NAS, je tombe bien sur la page de login mais ensuite erreur 404.
Savez-vous d'où cela peut provenir?


Bonjour,
Si le serveur web est accessible à l'adresse http://CH3SNAS:80 et que la page de login d'administration est accessible via http://CH3SNAS:81 je ne vois pas d'où peut provenir le problème. S'agit-il bien d'un DNS-323 ?
Attention car les scripts sont prévus pour 323.



Hello,

En fait cela fonctionne pour le 320,
J'ai du changer le port du serveur par défaut (/etc/lighttpd/lighttpd.conf)
ensuite lorsque je me logger (par exemple sur http://ip:8080)
il oublie la redirection de port, il suffit d'ajouter le bon port dans l'url :
par exemple de ça :
http://192.168.0.20/web/home.html
vers ça :
http://192.168.0.20:8080/web/home.html

et cela fonctionne !

Citation : gadsweb:

J'ai un soucis avec l'installation.
Je parviens à arriver sur mon serveur, en revanche lorsque je pointe avec le port 81 pour la console d'administration du NAS, je tombe bien sur la page de login mais ensuite erreur 404.
Savez-vous d'où cela peut provenir?


Bonjour,
Si le serveur web est accessible à l'adresse http://CH3SNAS:80 et que la page de login d'administration est accessible via http://CH3SNAS:81 je ne vois pas d'où peut provenir le problème. S'agit-il bien d'un DNS-323 ?
Attention car les scripts sont prévus pour 323.
Salut à tous,
J'ai un soucis avec l'installation.
Je parviens à arriver sur mon serveur, en revanche lorsque je pointe avec le port 81 pour la console d'administration du NAS, je tombe bien sur la page de login mais ensuite erreur 404.
Savez-vous d'où cela peut provenir?
D'avance merci

Les commentaires sont clos.