Tag lighttpd

28/1/2010 Lancer lighttpd dans un environnement propre

Cela fait quelque temps que je vois mes scripts cgi sous lighttpd hériter de l'environnement root (vous savez, les export et autres setenv dans votre ~/.$SHELLrc). Et si vous êtes un peu parano comme moi ou que vous avez des données sensibles dans votre environnement il peut s'avérer utile de les cacher du script cgi.

Pour cela j'ai modifié mon /usr/local/etc/rc.d/lighttpd, du coup j'en ai même fait un bug report chez FreeBSD histoire que tout le monde en profite. Il permet même de spécifier certaines des variables d'environnement que l'on veut conserver (comme PATH qui est souvent utilisé dans les script cgi).

Avec un peu de chance (et beaucoup de temps :>) il le prendrons et vous l'aurez bientôt dans vos ports. Sinon faite le vous même à partir du patch :

cd /root
fetch http://www.philpep.org/pub/lighttpd_rc.patch
cd /usr/local/etc/rc.d/
patch -p0 < /root/lighttpd_rc.patch

L'inconvénient c'est qu'il faut le refaire à chaque mise à jours de lighttpd.

10/9/2009 Gitweb fastcgi lighttpd et FreeBSD

Vu la galère pour mettre en place un gitweb sous lighttpd en fastcgi, voici un petit mémo pour moi et j'èspère qu'il servira à d'autres. (J'explique sous FreeBSD mais ça peut être transposé facilement sur d'autres OS)

Donc, d'abord mettre en place git et lighttpd :

make -C /usr/ports/devel/git install clean
make -C /usr/ports/www/lighttpd install clean
echo lighttpd_enable=\"YES\" >> /etc/rc.conf

Ensuite j'ai utilisé un script de la doc lighttpd.

fetch http://philpep.org/pub/perl-cgi
mv perl-cgi /usr/local/bin

Ce script utilise deux modules Perl qu'il faut installer, le premier (CGI::Fast) est dans les ports FreeBSD, mais je n'ai pas trouvé le second (Embed::Persistent) donc je l'ai installé "à la mano"

make -C /usr/ports/www/p5-FastCGI install clean
fetch http://search.cpan.org/CPAN/authors/id/D/DO/DOUGM/ExtUtils-Embed-1.14.tar.gz
tar xvzf ExtUtils-Embed-1.14.tar.gz
cd ExtUtils-Embed-1.14
perl Makefile.PL
make
make install

Ensuite la conf lighttpd : (je met tout dans /usr/local/www)

cp /usr/local/share/examples/git/gitweb/gitweb* /usr/local/www
cp /usr/local/share/examples/git/gitweb/*.png /usr/local/www

Et ceci dans /usr/local/etc/lighttpd.conf

# /usr/local/etc/lighttpd.conf
server.port = 80
server.bind = "10.0.0.3"
server.username = "www"
server.groupname = "www"
server.document-root = "/usr/local/www/"
server.event-handler = "freebsd-kqueue"
server.pid-file = "/var/run/lighttpd.pid"
index-file.names = ( "gitweb.cgi" )
server.errorlog = "/var/log/error_log"

server.modules  = (
      "mod_setenv",
      "mod_fastcgi",
      "mod_rewrite",
      )

fastcgi.server = ( ".cgi" =>
      (( "socket" => "/tmp/application.fcgi.socket",
         "bin-path" => "/usr/local/bin/perl-cgi",
       ))
      )

setenv.add-environment = (
      "GITWEB_CONFIG" => "/home/git/gitweb.conf",
      )

# Le petit rewrite qui fait bien
url.rewrite-once = ( "^/([a-zA-Z]+.git)(.*)$" => "/gitweb.cgi/$1$2" )

mimetype.assign             = (
      ".png"          =>      "image/png",
      ".css"          =>      "text/css",
# default mime type
      ""              =>      "application/octet-stream",
      )

Et voilà, un petit

/usr/local/etc/rc.d/lighttpd start