Archiv für den Monat: Januar 2009

GeoIP, Apache and PHP

This is a short notice about how to use GeoIP with Apache and PHP. MaxMind’s GeoIP is a database of ip addresses ordered by the corresponding countries. This can be used to guess a user’s prefered language for a multilanguale website.

  • apt-get install libapache2-mod-geoip
  • get the latest database version
    wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
  • Apache configuration:
    GeoIPEnable On
    GeoIPDBFile /path/to/GeoIP.dat
echo apache_note("GEOIP_COUNTRY_CODE") . " - " . apache_note("GEOIP_COUNTRY_NAME");

The free to use database is updated every month, so it’s good to set up a cronjob.

Get more information here: http://www.maxmind.com/app/geolitecountry

Duplicity FTP Timeout

Am 1. jedes Monats machen meine System ein Fullbackup mit ftplicity, ein Wrapper Script das die Benutzung von duplicity einfacher und übersichtlicher gestaltet. Am 1.1.2009 machte ein Server aber ärger:

No signatures found, switching to full backup.
Traceback (most recent call last):
File „/usr/bin/duplicity“, line 373, in ?
if __name__ == „__main__“: main()
File „/usr/bin/duplicity“, line 366, in main
if not sig_chain: full_backup(col_stats)
File „/usr/bin/duplicity“, line 142, in full_backup
bytes_written = write_multivol(„full“, tarblock_iter, globals.backend)
File „/usr/bin/duplicity“, line 89, in write_multivol
backend.put(tdp, dest_filename)
File „/usr/lib/python2.4/site-packages/duplicity/backends.py“, line 349, in put
self.error_wrap(’storbinary‘, „STOR „+remote_filename, source_file)
File „/usr/lib/python2.4/site-packages/duplicity/backends.py“, line 335, in error_wrap
except ftplib.all_errors, e: raise BackendException(e)
duplicity.backends.BackendException: 421 No Transfer Timeout (600 seconds): closing
control connection.

Auf dem System läuft Debian Etch in einer recht beschnittenen Xen Domain, die ein halbes Jahr brav Backups angelegt hat. Warum es seit dem Jahreswechsel nicht mehr hinhaut habe ich leider nicht herausgefunden – ich vermute dass mein Provider (Hetzner) die Timeout Grenze gesenkt hat. Viel mehr stört mich, warum duplicity das nicht handeln kann. Schließlich ist mein System nicht das langsamste und alle anderen Systeme machen brav weiter.

Debian Etch bringt duplicity in Version 0.4.2 mit sich, welche schon recht betagt ist. Ich bin generell gegen Backports, in diesem Fall ist aber viel zu viel Zeit für die Problemlösung draufgeganen. Außerdem wird ftplicity  nun von Edgar Soldin weiterentwickelt und bringt in der aktuellen Version einige sinnvolle Features mit.  Und so funktionierts:

  • Das Backports Repository hinzufügen
  • apt-get install ncftp
  • apt-get -t etch-backports install duplicity
  • ftplicity herunterladen: aktuellen Version
  • mv ftplicity /usr/local/bin
  • ftplicity usage

Man muss nun mit Profilen arbeiten, die alte Config lies sich in meinem Fall jedoch ohne weiteres übernehmen.