28/03/2010
201003282136 cblog chroot nginx reverse proxy
cblog et chroot
Pour ceux qui ne connaissent pas, cblog est un moteur de blog écrit en C. J'y contribue un peu et je vais donc décrire comment je l'utilise.
Une fois les dépendances installées (clearsilver, fcgi-devkit et tinycdb), on peut récupérer cblog:dsx@devel> git clone git://brokk.etoilebsd.net/CBlog.git dsx@devel> cd CBlog dsx@devel> makeOn peut définir le chemin vers le fichier cblog.cdb:
dsx@devel> make CDB_PATH=/var/dbPour vérifier ce chemin (utile pour le chroot):
dsx@devel> ./cli/cblogctl path /var/db/cblog.cdbLes chroot c'est bien mais il est très facile d'oublier un fichier. Pas de soucis ici:
dsx@devel> sudo ./chroot_cblog.shchroot_cblog.tgz contient tout ce qu'il nous faut. On ne peut pas utiliser Freebsd et zfs sans faire de jail. J'utilise pour ce faire deux petits scripts de ma composition:
root@kimsufi# ./mk_template medium root@kimsufi# ./mk_template large root@kimsufi# ./mk_jail medium proxy 'lo1|172.16.0.1' root@kimsufi# ./mk_jail large blog 'lo1|172.16.0.2'
Une jail 'proxy' avec un nginx servira de reverse proxy tandis qu'une jail 'blog' fera tourner cblog dans un chroot.
Je commence par faire mon package 'nginx':dsx@compil> cd /usr/ports/www/nginx-devel dsx@compil> sudo make config [x] ipv6 [x] http_module [x] http_cache_module [x] http_rewrite_module [x] http_ssl_module [x] www dsx@compil> sudo make dsx@compil> sudo make packageJe configure mon reverse proxy:
dsx@proxy> sudo pkg_add /tmp/nginx-devel-0.8.34.tbz
dsx@proxy> sudoedit /usr/local/etc/nginx/nginx.conf
[ snip ]
server {
listen 80;
server_name blog.bsdsx.fr;
access_log off;
location / {
proxy_pass http://172.16.0.2/;
proxy_set_header Host $host;
}
}
Attention au access_log à off, c'est uniquement pour ne pas logguer plusieurs fois les requêtes. On passera à off une fois le reverse proxy correctement configuré (chemin, adresse ip...). Pour ceux qui se demande pourquoi un reverse proxy la réponse est simple: si je peux multiplier les jails, il n'en est pas de même avec mes ipv4. Tout le traffic http sur ipv4 arrive sur le reverse proxy qui dispatche vers la bonne jail (qui elle est accessible aussi en ipv6). De plus si un jour le besoin de cache se fait sentir, quelques directives proxy_cache_ et fastcgi_cache_ et le tour est joué.
Pour finir le gros morceau: la jail 'blog' avec son chroot.root@blog# pkg_add -r spawn-fcgi Fetching ftp://ftp.fr.freebsd.org/pub/FreeBSD/ports/amd64/packages-8.0-release/Latest/spawn-fcgi.tbz... Done. root@blog# mkdir /usr/local/chroot/bsdsx root@blog# tar xzvf /tmp/chroot_cblog.tgz -C /usr/local/chroot/bsdsx
Et c'est parti pour la lecture de chroot.txt.
![Validate my Atom 1.0 feed [Valid Atom 1.0]](/valid-atom.png)
![Validate my RSS feed [Valid RSS]](/valid-rss-rogers.png)