[ english | italian ]

SHTTPD (Simple HTTPD)

Descrizione

SHTTPD è un server web semplice e leggero. Ideale per sviluppatori web, demo di applicazioni basate sul web (come PHP, Perl ecc.), condivisione file veloce. Può essere usato inoltre come libreria che provvede funzionalità di web server, per creare interfacce web per applicazioni C/C++. SHTTPD è sotto i termini della licenza "beerware".

Download

Scarica l'ultima versione. Leggi il  manuale.

Caratteristiche

Caratteristiche assenti: host virtuali, directory user home, SSI (inclusione lato server), ACL (lista controllo accessi), traffic shaping, connessioni keep-alive, supporto FCGI (Fast CGI).

Schermate (Windows GUI)

Systray icon Settings window Log window

Settare il "web sicuro" (HTTPS)

Sotto descrivo come settare HTTPS su Windows. Scarica libssl32.dll e libeay32.dll. Copiali nella tua cartella Windows (C:\Windows). Scarica i file di certificato SSL, shttpd.pem, mettili in C:\shttpd.pem. Nella GUI, setta l'opzione "SSL certificate file" in modo che punti a C:\shttpd.pem. Salva i settaggi, Questo è tutto.

Fare un server proxy fuori da SHTTPD

Installa Perl nella tua macchina. Scarica lo script perl nph-proxy.cgi, sviluppato da James Marshall. Esegui shttpd, setta l'opzione "CGI Interpreter" al binario perl.exe. In un browser, scrivi l'url dove si trova il file nph-proxy.cgi. Questo è tutto.

Embedding di SHTTPD in applicazioni esistenti

Scarica il codice sorgente. Estrailo e vai nella directory src. Esegui "make unix" qui ("nmake win" su Windows, richiede MSVC). Questo genera una libreria. L'API è definita nel file header shttpd.h. Usa le funzioni API nella tua applicazione, "linka" l'applicazione con la libreria. Ci sono diversi esempi nel paccheto dei sorgenti a cui far riferimento.

Problemi che ho incontrato (consigli utili per sviluppatori)

  1. Compilando per Linux embedded, ARM + uclibc non funziona. Questa è dovuto a una impementazione buggata delle funzioni stdio sscanf() e snprintf() di uClibc. Per riparare a ciò, use una implementazione alternata di queste funzioni, così come Trio, scritte da Daniel Stenberg. Avrai bisogno di ri- #define snprintf in trio_snrpintf, sscanf in trio_sscanf. La linea di compilazione allora potrebbe essere:
    arm-elf-gcc -o shttpd shttpd.c trio.c triostr.c
    E' stato riportato che altri piccoli web server non funzionano molto quando vegono compilate con uClibc per ARM. sscanf() riparato potrebbe aiutare a gestire questo problema.
  2. Esecuzione CGI sotto Windows. Tempo fa io eseguii un script CGI perl sotto SHTTPD. Questo script si doveva connettere a un database server e mostrare qualche dato. Ho ricevuto questo errore: 
    Can't create TCP/IP socket (10106)
    In modo simile l'ho ricevuto eseguendo uno script PHP:
    mysql_connect(): Can't create TCP/IP socket (10106)
    Dopo ore di debugging ho realizzato che il server web (in questo caso SHTTPD) deve passare la variabile di sistema SYSTEMROOT al processo CGI figlio, a meno che il processo figlia non possa eseguire nessuna operazione sui socket. Grazie a Microsoft per questa divertente feature.

Licenza

 "THE BEER-WARE LICENSE" (Revision 42):
Sergey Lyubka wrote this software. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you think
this stuff is worth it, you can buy me a beer in return.

Link

Riconoscimenti

Autore

Copyright © by Sergey Lyubka (shttpd-general at lists dot sourceforge dot net). Potete mantenermi felice riducendo la mia books wishlist

Traduzione

Traduzione italiana a cura di SuM90 (sum90 [[at]] libero [[dot]] it) e klyvya.