SVN Hooks: automatischer Checkout nach Commits

Projekte mit Subversion zu verwalten macht für größere Projekte durchaus Sinn. In Kombination mit trac erhält man sogar noch ein sehr schickes Werkzeug zum Erstellen und Verwalten von Tickets, Milestones, Tags und Branches und noch ein Wiki dazu. Doch wenn mehrere Entwickler an einem Projekt arbeiten, das in einer einheitlichen Umgebung getestet werden soll, muss ständig nach jedem Commit auf der Testumgebung ein Checkout gemacht werden. Das ist zwar nicht viel Aufwand, aber es kann automatisiert werden. Besonders Webprojekte auf Basis dynamischer Skriptsprachen können davon profitieren, wie etwa ein PHP-Projekt, dass auf dem SVN-Server-eigenen Apache live getestet werden soll.

SVN bietet dazu sogenannte Hooks, die bei verschiedenen Events Skripts ausführen. Templates für Hooks befinden sich bereits im SVN-Repository unter /hooks/ – in diesem Beispiel wird ein Checkout in ein definiertes Verzeichnis ausgeführt, sobald ein Commit / Update erfolgt ist.

Dazu sind folgende Schritte notwendig:

  1. Template “post-commit.tpl” in “post-commit” umbenennen
    cd SVNREPO/hooks/
    mv post-commit.tpl post-commit
  2. post-commit So anpassen, dass das “SVNREPO/hooks/bin/autocheckout.sh” Skript ausgeführt wird
    [...]
    REPOS="$1"
    REV="$2"#commit-email.pl "$REPOS" "$REV" commit-watchers@example.org
    #log-commit.py --repository "$REPOS" --revision "$REV"
    ${REPOS}/hooks/bin/autocheckout.sh "$REPOS" "$REV" trunk/ /WEBROOT/MEINPROJEKT

    Die im Template vorhandenen zwei Befehlsaufrufe werden auskommentiert.
  3. autocheckout.sh erstellen
    mkdir bin/
    wget http://palita.net/blog/wp-content/uploads/autocheckout.txt bin/autocheckout.sh

    Anmerkung: Dieses Skript wurde übernommen von http://larve.net/people/hugo/2007/05/svn-auto-look-and-checkout
  4. autocheckout.sh und post-commit anpassen
    chmod a+x post-commit bin/autocheckout.sh
  5. Initiales Ausführen & Testen
    sudo -u apache env - ./post-commit WEBROOT/MEINPROJEKT 234
    (234 durch die aktuelle Revision ersetzen, apache durch den Benutzer ersetzen, der Schreibzugriff auf das Webroot hat.)
  6. Commit & Test!

Unter Plesk 9 funktioniert es einwandfrei, jedoch muss dafür eventuell das Webverzeichnis mit Schreibrechten für den Benutzer “apache” versehen werden.

Weblinks:

Posted in Linux at Januar 25th, 2010. No Comments.

Emails mit Procmail vorfiltern

Es hat mich immer genervt, dass alle Emails, die von einem Server ausgehen (z.B. Fail2Ban, logwatch etc.) immer in meinem Postfach landen und als ungelesene Emails irgendwann mein Handy zum bimmeln Bringen, dem ich keine Regeln beibringen kann. Die Lösung ist denkbar einfach, wenn sie mir auch erst heute in den Sinn kam: einfach procmail die Arbeit machen lassen, anstelle meines Mailclients.

Procmail ist ein Mailprozessor, der zum serverseitigen Filtern von Emails eingesetzt wird. Um einen Procmail-Filter bei einer QMail-Umgebung (sowohl procmail als auch qmail sind bei Plesk standardmäßig integriert) aufzusetzen, bewegt man sich erst mal ins Verzeichnis des Mailnamen.

Für email@domain.com etwa
cd /var/qmail/mailnames/domain.com/email

In diesem Verzeichnis mit dem bevorzugten Editor (vi / nano / …) eine Datei .procmailrc erstellen, und folgenden Inhalt zur Filterung von Server-Mails erstellen:
# .procmailrc
MAILDIR=/var/qmail/mailnames/domain.com/email/Maildir
DEFAULT=${MAILDIR}

# Filter Servermails
:0:
* ^From.*@NERVIGERSERVER.COM
.VERZEICHNIS/new

Dabei NERVIGERSERVER.COM durch die Domain ersetzen, von dem der Server seine Mails sendet, und VERZEICHNIS durch das IMAP-Verzeichnis, in das die Nachricht verschoben werden soll. /new sollte dabei stehen bleiben.

Jetzt die Datei speichern, und die Datei .qmail im selben Verzeichnis editieren.

Die etwa so aussehende Datei

| true
| /usr/bin/deliverquota ./Maildir

wird jetzt so abgeändert, dass neue Emails nicht mehr an Deliverquota sondern an Procmail gesendet werden. Der Veränderte Inhalt der Datei dazu wäre etwa

| true
#| /usr/bin/deliverquota ./Maildir
| preline /usr/bin/procmail -m .procmailrc

Mehr muss nicht unternommen werden. Man sollte natürlich erst mal Testen ob es funktioniert, bevor man sich darauf verlässt, bevor keine Mails mehr ankommen, unter CentOS 5 und Plesk9 sollte es nach dieser Anleitung gar keine Probleme geben. Bei anderen Systemen sind die Pfade eventuell abweichend.

Procmail kann natürlich noch viel mehr, die manpage von procmailex(5) verrät eigentlich alles.

Manpage online: http://www.gsp.com/cgi-bin/man.cgi?section=5&topic=procmailex

Posted in Linux at Januar 11th, 2010. No Comments.

Plesk 9 und qmail: Bare LF

Wer folgendes in seinem Maillog sieht…

Jan 1 00:00:00 hostname qmail-queue-handlers[15388]: possibly qmail-smtpd exited by timeout, reset connection. See "http://pobox.com/~djb/docs/smtplf.html." for get more information.

… hat ein kleines Problem: Emails von einigen Hotmail-Servern werden nicht mehr empfangen. Grund ist ein Fehler der Hotmail-Server, die anstelle vom von QMail erwarteten CRLF (Carriage Return & Line Feed) nur ein LF am ende einer jeden Zeile bekommt. Die Lösung steht bereits in der Plesk Knowledge-Base:

  1. Download und compilieren von ucspi-tcp sources:
    http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz (Quelle und Anweisungen: http://cr.yp.to/ucspi-tcp/install.html)
  2. Dateien entpacken und in das neue Verzeichnis wechseln:
    tar xfz ucspi-tcp-0.88.tar.gz
    cd ucspi-tcp-0.88
  3. Benötigt wird daraus die Binary aus fixcrio.c, die aber in der Originalversion kein TLS-Support hat. Also sollte man sich eine gepatchte Version von Parallels herunterladen und mit der Originalen ersetzen:
    http://kb.parallels.com/Attachments/11152/Attachments/fixcrio.c
  4. Da sonst wahrscheinlich sowieso ein Fehler auftritt, folgendes in der error.h korrigieren:
    die Zeile
    extern int errno;
    durch
    #include <errno.h>
    ersetzen.
  5. Compilieren:
    make
    make setup check
  6. Compilierte fixcrio binary nach /var/qmail/bin kopieren und Rechte an die Anderen Dateien angleichen:
    cp fixcrio /var/qmail/bin/
    chmod 555 /var/qmail/bin/fixcrio
    chgrp qmail /var/qmail/bin/fixcrio
  7. Den Eintrag
    /var/qmail/bin/fixcrio
    In den Dateien /etc/xinet.d/smtp_psa und /etc/xinet.d/smtps_psa vor “/var/qmail/bin/qmail-smtpd” einfügen. smtp_psa sähe dementsprechend so aus:
    server_args = -Rt0 /var/qmail/bin/relaylock /var/qmail/bin/fixcrio /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true
  8. xinet.d neustarten (service xinetd restart)
  9. Fertig

Danach sollte der Fehler nicht mehr auftreten.

Links:

Posted in Linux at Januar 3rd, 2010. No Comments.

SpamAssassin Problem 2010

Spamassassin hat einen kleinen Bug, der Emails aus dem Jahr 2010 spontan bis zu 3.6 Punkte vergibt, betroffen sind die Versionen 3.2.0 bis 3.2.5.

Behoben wird der kleine Bug entweder mit sa-update oder auch ganz einfach – folgendes am Ende der local.cnf unter /etc/mail/spamassassin/ einfügen:

score FH_DATE_PAST_20XX 0

Weitere Infos dazu auf der Spamassassin Webseite

Posted in Linux at Januar 2nd, 2010. No Comments.

ClearOS

Einen Linux-Server aufsetzen ist nicht immer leicht. Schon alleine bei Samba gibt es immer wieder Schwierigkeiten, mal eben einen PrimaryDomainController aufsetzen und Benutzerrechte anpassen kann schon eine weile Dauern. Abhilfe schafft die auf CentOS basierende Distribution Clark ConnectClearOS“, die vom Antivirus bis zum Webserver alle gängigen Aufgaben verwalten kann.

Ein PDC ist schnell aufgesetzt und funktioniert problemlos, die Benutzer- und Gruppenverwaltung gestaltet sich sehr simpel.

Weitere Funktionen von ClarkConnect ClearOS:

  • Firewall (2 Netzwerkkarten benötigt)
  • DHCP-Server (2 Netzwerkkarten benötigt)
  • VPN: OpenVPN, IPSec, PPTP
  • Proxy, Content-Filter, ACL
  • Mailserver mit Antispam & Antivirus
  • Groupware
  • Apache, PHP & MySQL
  • Samba-Server
  • FTP-Server
  • Printserver
  • uvm.

Unter Parallels Desktop und VMWare Server funktioniert bei mir alles einwandfrei, auf einem Test-PC gab es Schwierigkeiten mit dem DHCP-Client, was aber gut an einer defekten Netzwerkkarte gelegen haben kann.

Link: http://www.clarkconnect.com/ http://www.clearfoundation.com/

Posted in Linux, Software at Dezember 9th, 2009. 1 Comment.

Acronis True Image ohne CD starten

Viele dürften Acronis True Image kennen, ein Disk-Image-Programm mit Bootfähger CD, das sich sehr gut für Backups eignet. Neben Funktionen wie Sektor-für-Sektor Backups können auch problemlos inkrementelle sowie differentielle Backups auf interne / externe Speichermedien oder Netzwerkfreigaben (FTP / Samba) erstellt werden, und natürlich auch wiederhergestellt.

Wer nicht immer die CD einlegen will, oder einfach kein CD-Laufwerk hat, kann sich einen entsprechenden Eintrag in die menu.lst von GRUB schreiben, um Acronis von der /boot Partition zu starten.

Dazu einfach den Inhalt der Acronis-Boot-CD in einen Unterordner von /boot/ kopieren, z.B. /boot/acronis/ und folgenden Eintrag in der /boot/grub/menu.lst hinzufügen (ganz am Ende):

# Acronis
title Acronis TrueImage
uuid uu81uoi1-12uz39
kernel /boot/acronis/kernel.dat vga=791 ramdisk_size=32768
mbrcrcs=on
initrd /boot/acronis/ramdisk.dat /s
boot

wenn man jetzt Acronis in Grub auswählt, kann man mit dem Befehl

product

das Programm selbst starten, vorher befindet man sich in einer Busybox.

Posted in Linux, Software at Oktober 30th, 2009. No Comments.

PHP Downgrade: 5.3 auf 5.2 zurücksetzen

Gestern ist mir ein dummer Fehler passiert: auf einem CentOS-Server mit Plesk 9.2 und PHP 5.2.10 vom Remi-Repository habe ich, auch über das Remi-Repository, versehentlich ein PHP-Upgrade gemacht. Die dann vorhandene Version 5.3 ist aber leider total unkompatibel mit Plesk und so einigen Anwendungen. Sporadisch kam einfach mal bei jeden PHP-Skripts nur eine weiße Seite zurück, mit der Fehlermeldung von Apache:

PHP Warning: Unknown: open_basedir restriction in effect. File(/var/www/[...]/index.php) is not within the allowed path(s): (h\xc3\x15\x90+\xe4rr\n) in Unknown on line 0
PHP Fatal error: Unknown: Failed opening required '/var/www/[...]/index.php' (include_path='.:') in Unknown on line 0, referer: http://[...]

Damit konnte man erst mal nicht so viel anfangen, vor allem weil der Fehler nicht immer auftrat.

Die Lösung war einfach: PHP wieder auf PHP5.2.10 Downgraden. Aber ein Downgrade mit yum ist zunächst nicht vorgesehen. Auch das yum-Modul AllowDowngrade war dafür nicht geeignet. So weit auch noch kein Problem: PHP löschen, PHP installieren und 5.3 verbieten, zum Glück ist die 5.2 ja noch im Repository. Ging aber auch nicht: hätte ich PHP gelöscht, wären viele andere Pakete auch gelöscht worden und das alles korrekt und funktionierend wieder herzustellen wäre zu viel Arbeit + zu viel Ausfallzeit.

Also zur gefährlicheren Variante gegriffen: rpm –nodeps. Nicht wirklich zu empfehlen, aber hier ging es leider nicht anders.

Lösung:

-> Gegebenenfalls nachsehen, was von PHP alles in Version 5.3 installiert ist, z.B. mit
yum list installed php* | grep 5.3

PHP-Pakete mit RPM löschen:
rpm -e php-mbstring php-pdo php-cli php-common php-imap php-xml php-mysql php-gd --nodeps

und dann schnell hinterher mit yum nachinstallieren:
yum --enablerepo=remi --exclude=php*5.3* install php php-mbstring php-pdo php-cli php-common php-imap php-xml php-mysql php-gd
service httpd restart

Damit sollten wieder die 5.2er Versionen installiert sein (keine Garantie!!! Kann natürlich auch mächtig schiefgehen!)

Wer ebenfalls das Remi-Repo hat, und auch keine Lust hat auf PHP5.3, kann es in der /etc/yum.conf verbieten:

[main]
cachedir=/var/cache/yum
keepcache=0
[...]
exclude=php*5.3*
# Note: yum-RHN-plugin doesn't honor this.
metadata_expire=1h
[...]

Viel Erfolg ;)

Posted in Linux at September 4th, 2009. 2 Comments.

Samba-Hölle

Falls mal jemand den gleichen Fehler hat und genau so wenig weiterkommt wie ich, möchte ich ihm ein wenig Zeit ersparen.

Anscheinend bin ich nicht der Einzige mit dem Problem gewesen: Ein Drucker wird auf einem Linux-Server via Samba freigegeben, Cups ist konfiguriert, Samba erlaubt Gäste, Dateiberechtigungen für den Spooler-Ordner sind korrekt, aber Windows sagt die ganze Zeit nur “Zugriff Verweigert; keine Verbindung möglich“. Keine gescheiten Logs von Samba oder Cups, keine Logs von Windows, also was tun?
Die Lösung ist denkbar einfach, wenn man sich mal die manpage von Samba durchgelesen hätte. Samba verbietet hier anscheinend die Verwendung von eigenen Treibern – bzw. deren Extra-Einstellungen, weshalb drucken an sich auch funktioniert, nur die Einstellungen nicht. Eine Zeile in der [global]-Sektion erlaubt es:
use client driver = yes

Samba neustarten, in der Druckerwarteschlange F5 frücken und – siehe da, es funktioniert.

manuel

Posted in Linux at August 28th, 2009. No Comments.

Ubuntu Privacy Remix 9.04r1 released

Das UPR-Team hat heute die neue Ubuntu-Privacy-Remix Version veröffentlicht. Die Version 9.04r1 basiert nun auf dem aktuellen Ubuntu Jaunty und bringt einige neue Funktionen mit.

Ubuntu Privacy Remix (kurz UPR) ist eine Live-CD, mit der man so sicher wie möglich am PC arbeiten kann. Dazu werden auf viele gefahrdarstellende Funktionen verzichtet: eine Internetverbindung ist dank deaktiviertem Netzwerkadapter gar nicht erst möglich, also gibt es auch keine Möglichkeit für Dritte auf das System zuzugreifen geschweide denn es zu kompromittieren.

Die Live-CD verwendet außerdem keine Festplatte (und ist auch nicht für eine Installation auf einer Festplatte gedacht), also können auch dort keine Spuren hinterlassen werden. Um Daten aber sichern zu können, gibt es die clevere Möglichkeit, auf einem USB-Stick o.Ä. einen TrueCrypt Container zu erstellen, der den Home-Ordner in verschlüsselter Form speichert – nicht nur Daten sondern auch Einstellungen können so sicher gespeichert werden.

Neu in der aktuellen Version sind die Integration des Figaros Password Manager 2, bessere Druckerunterstützung, OpenJDK, sudo-Rechte auf die notwendigsten Befehle beschränkt, CD beim Booten vollständig in den RAM laden sowie einige Fehlerbehebungen und optische Verbesserungen.

Es gibt wohl viele Gründe, weshalb man UPR gebrauchen könnte, jeder, der sensible Daten verschlüsselt auf seinem Rechner liegen hat sollte auch daran denken, dass sie auch mal von einem selbst entschlüsselt werden (zur normalen Verwendung) und genau dann ein Sicherheitsrisiko auftritt.

Die nicht ganze 700MB kleine Distribution kann unter folgendem Link heruntergeladen werden:

https://www.privacy-cd.org/de/upr-auf-launchpad/download

Was man – wie bei fast jedem Download – unbedingt machen sollte, ist die Signatur überprüfen! Eine Anleitung dazu findet sich auf der UPR-Webseite unter https://www.privacy-cd.org/de/anleitungen/signatur-ueberpruefen

Siehe auch: Golem.de – Ubuntu Privacy Remix 9.04 als sichere Arbeitsumgebung

Posted in Linux, Software at Juni 25th, 2009. No Comments.