Tools

Parallels Confixx und PHP 5.3

in

Nachdem wir unseren Server auf PHP 5.3 geupdatet hatten, fiel uns auf, dass einige Bereiche von Confixx nicht mehr richtig liefen. Unter anderem im Bereich Domains.

Jede konfigurierte Domain wurde mehrere Male hintereinander in einem Kunden-Account angezeigt (Benutzeroberfläche / Einstellungen / Domain-Seite, Tabelle Domainverwaltung).

Problem ist hier, dass Confixx <= 3.3.6 nicht mit PHP 5.3 umgehen kann.

Folgender Patch behebt aber das Problem:

http://kb.parallels.com/de/8078

Linux: Systeminformationen anzeigen

Immer mal wieder kommt die Aufgabe, sich in einem Linuxsystem relevante Systeminformationen zur Hardwareausstattung, zur Kernelversion, zu den installierten Paketen usw. anzeigen zu lassen.

Um nicht jedesmal alle Befehle einzeln eingeben zu müssen, kommt hier ein kleines Shell-Script, was wesentliche Infos zusammenfasst und in eine Datei schreibt.

 #!/usr/bin/sh 

rm /tmp/systeminfo

echo -e "\n`tput smso`Platform info`tput rmso`" >> /tmp/systeminfo
uname -a >> /tmp/systeminfo

echo -e "\n`tput smso`Release info`tput rmso`" >> /tmp/systeminfo
cat /etc/*-release >> /tmp/systeminfo

echo -e "\n`tput smso`CPU info`tput rmso`" >> /tmp/systeminfo
cat /proc/cpuinfo >> /tmp/systeminfo

echo -e "\n`tput smso`Memory info`tput rmso`" >> /tmp/systeminfo
dmesg | grep -i memory >> /tmp/systeminfo

#echo -e "\n`tput smso`Package info`tput rmso`" >> /tmp/systeminfo
#rpm -qa >> /tmp/systeminfo

cat /tmp/systeminfo

Die Infos über die installierten Pakete sind hier auskommentiert, wenn man die mit haben will einfach de beiden Zeilen wieder mitnehmen.

Das cat zum Anzeigen der Systeminfo ist gleich mit drin am Ende.

Achja, und nicht wundern über die tput's, die sind nur zum Highlighting der Überschriften und dienen der Übersichtlichkeit.
 

Apache2: No space left on device: mod_rewrite: could not create rewrite_log_lock

Erscheint diese Meldung im error.log des Apache, wenn er nicht mehr starten will, bedeutet das, dass der Apache nicht ordentlich runtergefahren ist und sich ziemlich viele semaphore-arrays des Apache-Users angesammelt haben.

Diese kann man sich so anzeigen lassen:

ipcs -s | grep www-data

www-data ist der Apache-User. (Oder wie er halt sonst so heißt)

Löschen kann man diese überflüssigen Arrays so:

ipcs -s | grep www-data |  perl -e 'while (<STDIN>) {@a=split(/\s+/); print `ipcrm sem $a[1]`}'

Danach startet auch der Apache wieder.

Organisation von Softwareprojekten mit Trac

trac logoSchon ziemlich lange her, dass ich hier etwas geschrieben habe, aber die letzten Monate hatte ich leider nicht viel Zeit für meinen Blog.

Was mich ohne jede Überleitung auch direkt zum Thema dieses Artikels bringt...

Wie organisiere ich mir allein und auch im Team die täglichen Aufgaben, die in der Softwareentwicklung anfallen.

Ich will dabei nicht auf Organisationsmethoden, wie Scrum, Kanban, etc. eingehen, sondern hier ein praktisches Tool vorstellen, mit dem ich mir meinen Alltag organisiere und versuche die täglichen Aufgaben zu strukturieren, und zu dokumentieren..

Das Tool, was bei mir jeden Tag im Einsatz ist, man erkennt es schon an der Grafik rechts, ist Trac.

Dieses Programm stelle ich hier kurz vor und erkläre, wofür ich es überhaupt benutze und warum.

Trac 

Dieses Tool bezeichne ich gerne als ticketbasiertes Projektmanagementsystem, welches besonders für Entwicklerteams sehr gut geeignet ist, da es eine Verbindung schafft zwischen den zu erledigenden Aufgaben und dem jeweils umgesetzten Quellcode. Dies wird erreicht durch eine Anbindung an verschiedene Versionierungssysteme, wie Subversion, CVS oder inzwischen auch Git.

 

Die python-basierte Software ist open-source und bietet die Möglichkeit Aufgaben, die in einem Projekt zu erledigen sind, in einzelne Teilaufgaben (Tickets) zu strukturieren. Diese können dann den jeweiligen Teammitgliedern zugewiesen werden.

Ist eine Aufgabe erledigt, so kann das Ticket auf den nächsten Status gesetzt werden, wobei man die einzelnen Statuus (Mehrzahl von Status, wie ich gerade gelernt habe :)) selbst definieren kann. Somit ist es möglich für jedes Projekt den passenden Workflow abzubilden.

In meinen bisherigen Webprojekten hat sich z.B. folgender Workflow bewährt:

Neues Ticket -> zugewiesen an Entwickler -> local implementiert -> auf Testserver deployed und getestet -> auf Produktionsserver deployed und getestet -> fixed

 

Wobei es auch durchaus möglich ist, einzelne Statuus zu überspringen, wenn z.B. im Falle eine Hotfixes, direkt auf die Produktion deployed wird, ohne Umweg über das Testsystem, oder wenn es sich um Aufgaben handelt, die nicht direkt etwas mit dem Schreiben von Code zu tun haben.

Der hier gezeigte Workflow ist in der Praxis natürlich noch erweitert um weitere Statuus (ich liebe dieses Wort :)), zB. muss es bei jedem Status möglich sein, auch wieder zurück zum Anfang zu kommen, usw.

Wie man Trac und Subversion auf einem Debian System installiert und konfiguriert, habe ich schon in einem früheren Posting erklärt, deshalb gehe ich hier nicht nochmal darauf ein.

Stattdessen hier noch ein Link zur Demoseite von Trac 0.12:

http://trac.edgewall.org/demo-0.12

Und weiter gehts mit der Vorstellung einiger Standard Plugins, die bei mir bei jeder Installation dabei sind.

 

Konfiguration von Subversion und Trac auf Debian

in

Um an verschiedenen Standorten und mit mehreren Leuten eine Anwendung zu entwickeln, sollte der Einsatz eines Softwareversionierungssystems Pflicht sein.

Ich verwende Subversion, welches in Verbindung mit TRAC als Tickettool für mich wunderbar funktioniert.

Hier beschreibe ich, wie Subversion und Trac auf einem Debian Server eingerichtet werden. Natürlich gibt es dafür schon gute Anleitungen im Web, auf die ich auch verweisen werde, aber ich beschreibe hier die für mich wesentlichen Schritte beim Anlegen neuer Projekte in Subversion und Trac.

Subversion und Trac werden als Virtual Hosts angelegt. Als Webserver verwende ich Apache.

Zur erstmaligen Installation von Subversion und Trac finden sich am Ende dieses Artikels einige Links.
 

Kurzanleitung zum Anlegen neuer Projekte in Subversion und Trac

Ich überspringe hier die Erstinstallation von Subversion (apt-get install subversion, groupadd subversion, addgroup user subversion, WebDAV for Subversion), da dies umfangreich auf den u.g. Seiten erklärt wird.
Stattdessen komme ich direkt zum Punkt und spreche nur die wesentlichen Schritte zum Anlegen neuer Projekte mit kurzen Erklärungen an.

Neues SVN Repository anlegen

Zuerst muss ein Ort für das neue Repository gefunden werden und ein Verzeichnis angelegt werden. Dieser Ort kann überall im Datei-System sein, sollte aber sinnvoll gewählt werden....

Firefox Plugins manuell deinstallieren

in

 

Normalerweise ist das Installieren und Deinstallieren von Firefox Plugins kinderleicht über Extras/Add-ons (Reiter Plugins) zu bewerkstelligen, aber gelegentlich gibt es Plugins, wie zB. das Firefox Plugin des freien PDF-Readers Foxit, die sich so gar nicht automatisch über Extras/Add-ons deinstallieren lassen.

In diesem Fall muss man die zum Plugin gehörenden Dateien einfach manuell von der Festplatte löschen.
Um die richtigen Dateien zum jeweiligen Plugin zu finden, kommt hier eine kurze Anleitung:

Anleitung zum manuellen Löschen von Firefox Plugins

1. In der Adressleiste about:config eingeben.

2. Nach dem Eintrag: plugin.expose_full_path suchen.

3. Auf plugin.expose_full_path doppelklicken, um den Eintrag auf TRUE zu stellen

4. In der Adressleite about:plugins eingeben.

5. Auf dieser Seite sind alle Plugins zu sehen. Jedes Plugin enthält die Zeile: "Datei:" gefolgt von dem Pfad zur Datei.

6. Das Plugin raussuchen, das gelöscht werden soll und die Datei manuell von der Festplatte löschen, die unter "Datei:" angegeben ist. (evtl. sind dies auch mehrere pro Plugin, dann alle löschen)

7. Anschliessend den Firefox neustarten und das Plugin sollte entfernt sein.

 

Wenn dir diese Anleitung weitergeholfen hat, habe ich hier noch einen weiteren guten Tipp für dich:

Um deine Dateien über deine sämtlichen Geräte (Handy, Tablet, PC, Laptop, etc.) zu synchronisieren, hilft dir das kostenlose Programm Dropbox weiter.

Normalerweise bekommst du nur 2 GB freien Speicher, wenn du dich anmeldest, aber über diesen Link hier:

http://db.tt/zvstB2DT

kannst du sofort mit 2,5 GB Speicher starten.

Und damit deine Dateien in der Dropbox auch sicher sind, hilft dir dieser Artikel über Dropbox + BoxCryptor weiter.

Eclipse für Drupal einrichten

Da ich gerade mein Eclipse neu einrichte, gibts hier einige interessante Links, die einem die Konfiguration von Eclipse für einen effizienten Drupal-Entwicklungsprozess erleichtern.

Da ich ein 64bit Windows nutze, zuerst mal die Links zu den 64bit Varianten von Java und Eclipse:

Java SE Development Kit 6u20 64bit (enthält JRE)

http://java.sun.com/javase/downloads/

(Wichtig: unter Platform, Windows x64 auswählen)

Eclipse 64bit

Gewünschte Eclipse Version aussuchen und auf der folgenden Seite die Windows (x86_64) Version auswählen

http://download.eclipse.org/eclipse/downloads/

(dort dann Windows (x86_64))
 

Eclipse Plugins: PHP Development Tools (PDT) und Subversive

Über Eclipse "Install New Software" diese beiden Plugins installieren.

Jetzt hat man erstmal eine solide IDE, die allgemein für PHP Entwicklung eingesetzt werden kann.

Weiter gehts mit den Einstellungen für den Drupal Entwicklungsprozess.

Fail2ban - der bessere Weg IPs zu blocken

Nachdem ich vor kurzem von der SpamAttacke auf den MailServer eines Kumpels berichtet habe und davon wie ich letztendlich die IPs der versendenden Rechner per iptables geblockt habe, hat unser Hoster reagiert und das Tool Fail2ban installiert, dass ich hier mal kurz vorstelle.

Fail2ban ist, um es mit den Worten auf der Fail2ban Seite zu formulieren, ein Scanner, der die Logfiles, zB. des Apache oder auch eines Mailserver, wie postfix oder die auth.log für ssh Zugriffe, usw. durchsucht und mittels konfigurierbarer RegEx-Regeln entscheidet, ob eine IP geblockt werden soll, oder nicht. Damit kann zB. verhindert werden, dass von einer IP übermässig oft versucht wird, per ssh auf den Server zuzugreifen. Die Anzahl der möglichen Versuche ist einstellbar, default ist hier 3. Fail2ban nutzt zum Blocken der IPs die schon auf einem System vorhandenen Möglichkeiten, wie iptables oder shorewall und richtet, wenn eine Regel in den Logfiles anschlägt, einen entsprechenden neuen Eintrag mit der IP in der firewall (zB. iptables) ein.

Fail2ban ist in Python geschrieben und bringt einen eigenen Server daemon mit, der multithreaded ist und auf einem Unix socket auf Kommandos des zugehörigen fail2ban-clients lauscht.

Um die Arbeitsweise und die Konfiguration von Fail2ban zu zeigen, hier ein Beispiel:

Heise Developer Podcast

in

In dieser wirklich sehr interessanten Podcast Reihe auf Heise Developer diskutieren bekannte Softwareentwickler über aktuelle und wichtige Softwarearchitekturthemen.

Ich bin mir sicher, dass für jeden Entwickler interessante Themen dabei sind.

http://www.heise.de/developer/podcast/

 

Scrum in 10 Minuten

in

Schöne Linksammlung zu Scrum:

http://entwickler.de/zonen/portale/psecom,id,99,news,54142.html

 

Und hier mal der Scrum Prozess visualisiert:

Inhalt abgleichen