Archiv der Kategorie: Adminkram

WordPress hängt im Wartungsmodus fest

Nach einer kurzen Updatezeremonie auf WP 4.2.2 ist eine kleine Superapokalypse passiert und die Schreibtischwerkstatt war plötzlich nicht mehr erreichbar, weder die Hauptseite, noch der Adminbereich.

Es wurde daraufhin zwei Minuten lang grundlos Panik gemacht und in der dritten Minute dann gegooglet. Alles wieder gut! Die Lösung war es, die Datei “.maintenance“ aus dem Hauptverzeichnis zu löschen.

Danke an web266.de für den Blogeintrag und die „Erste Hilfe“ 🙂

FreeBSD Homeserver

Lange habe ich mich dagegen gesträubt einen Homeserver zu betreiben. In der frühen Zeit meiner Ausbildung, als der Strom noch günstig und die Vielfältigkeit der Dienste noch nicht so ausgeprägt war, da war es von jünglichem Interesse einen eigenen Server zu betreiben. Natürlich hat dieser keine wirklichen Aufgaben übernommen. Ein bisschen Fileserven und Webserver für die ultimativen Geheimprojekte. Eine Spielwiese nicht zu vergessen. So zumindest habe ich es in Erinnerung.

Damals einen eigenen Server zu betreiben hatte etwas elitäres. Man wollte unabhängig sein. Man wollte ausprobieren. Man wollte vielleicht auch ein Stück weit besonders sein und seine eigenen Erfahrungen sammeln. Der Server im eigenen Haushalt bot zudem die Möglichkeit das Internet auf eigene Art und Weise kennenzulernen. Mit dem Aufkommen von DynDNS Diensten war zudem eine einfache Erreichbarkeit gegeben, welche durch den Ausbau von DSL-Anschlüssen und Flatrates noch zusätzlich befeuert wurde.

In der heutigen Zeit ist es schlichter Luxus ohne großen Mehrwert. Ggf möchte man sich nicht in die Hände dritter begeben. Viel mehr wird da aber wohl nicht übrig sein, wenn man kein besonderen Hobbys und Interessen verfolgt. Das Netz ist voll mit Lösungen und Diensten die nahezu jeden halbwegs nachvollziehbaren Bedarf decken. Aus diesem Grund habe ich auch keinen Nutzen mehr für einen Heimserver gesehen und daher trotz vielem rebelleischen kleffen meines inneren Spieltriebs nichts angeschafft. Man wird schließlich vernünftiger.

Als ich dann unverhofft an einen Raspberry Pi gekommen bin nam das Schicksal einen neuen Anlauf. Die Tatsache, dass dieses kleine Gerät so unfassbar viel Leistung in Verbindung mit lautlosem Betrieb und Stromsparender Hardware verbindet ließ mich schwach werden und das erste MediaCenter im dauerbetrieb basteln. Natürlich blieb es nicht lange dabei und ein VPN Server kam dazu. Irgendwann wuchsen die Wünsche nach einem Fileserver und ggf. sogar ein paar Monitoring Diensten. Selbstverständlich will das Gerät auch aktuell gehalten werden und so überstieg es irgendwann meine Vorstellung sodas eine neue Lösung her musste. Schließlich wollte ich auch noch andere Dinge im Auge behalten und ggf. miteinander vernetzen.

So kam es, dass ich mich hochtauschte (schließlich bin ich auch manchmal geizig) und nun ein mini ITX System mit Intel Atom CPU und einem Gesamtverbrauch von unter 19 Watt bei 3 Festplatten und 4 GB Ram in meinem Wohnzimmer stehen habe, dass die Berechnung meiner TV Aufnahmen, Sicherung meiner Webseiten, Vernetzung durch VPN, Aufrechterhaltung von IRC Chats, Bereitstellung einer Virtualbox Umgebung samt Webserver übernimmt. Sicherlich habe ich dabei noch etwas vergessen.

Das großartige an allem, was auch den letzten Entscheidungspunkt gegeben hat, das ganze läuft auf FreeBSD. Warum das cool ist? FreeBSD – oder allgemein BSD – ist aus meiner Sicht wesentlich richtungsweisender als ein Linux System und bietet wesentlich mehr Komfort bei der Realisierung von KISS Lösungen. Letztere begeistern mich grundsätzlich und bilden den Antrieb mich mit Dingen zu beschäftigen. 

Durch die Tatsache, dass ich in meinem beruflichen alltag mit Linux arbeite und dabei die unterschiedlichsten Aufgabenstellungen realisiere und antaste, hat sich vermutlich auch noch ein gewisse Müdigkeit eingeschlichen. Linux hat sich ziemlich verändert. Zwar bot es einmal den Charakter eines Systems, mit dem man seine Vorstellungen realisieren kann (und bietet es grundsätzlich immernoch). Jedoch empfinde ich es zunehmend als komplexer ein Linuxsystem zurück zu bauen und sehe die gegebenen Möglichkeiten als recht unruhig an. BSD Systeme bieten hier eine gelungene Abwechslung und wirken auf mich wie die Benutzung eines Handys. Wenn man es einmal eingerichtet hat, gibt es nur noch die Benutzung.

So freue ich mich jedes Mal aufs neue, wenn ich mich per SSH einlogge, Datensicherung über Samba oder FTP betreibe, mir meine Musik und Filme per DLNA anschaue oder einfach nur fremde Systeme über VPN warte. Und das alles von einer SD Karte.

In sofern glaube ich, das es zukünftig das ein oder andere über die Einrichtung meines FreeBSD Systems hier zu lesen geben wird. Immerhin ist meine Bastelmotivation zurück gekehrt 🙂

Source: Der Bode

Warum RSS noch nicht tot ist

Dem ein oder anderen wird der Begriff RSS sicherlich noch ein solcher sein. Es handelt sich dabei um eine Möglichkeit auf einfache Art und Weise Inhalte zu veröffentlichen und so zugängich zu machen.

Bei einer Webseite beispielsweise (wie diesem Blog) werden die Beiträge in einem RSS Feed zusammengefasst und können dann von einem Reader abgefragt werden um sie zu lesen. Das Gaze geschieht dann unabhängig vom Layout oder sonstigem und kann sogar offline gut genutzt werden 

Nun befinden wir uns in einer technisch sehr wohlständigen Zeit und niemand macht sich mehr gedanken um Bandbreite, Geschwindigkeit Verfügbarkeit und so weiter. Niemand bis auf die Admins die ein wenig Ahnung haben und sich noch auf die wichtigen Dinge konzentrieren. Zumindest wenn es um den Austausch von Daten geht.

Mehr jedoch geht, wenn man sich Dienste anschaut, die sich auf die Verarbeitung von RSS spezialisiert haben. Hier ist es nämlich für alle Seiten auf einfache Wege möglich Inhalte auf unterschiedlichensten Plattformen bereit zu stellen.

So ist diese Seite unter anderem mit meinem Facebook-Profil, als auch der Schreibtischwerkstatt verknüpft – wo ich meine Inhalte auch gern sehen würde.

Das alles funktioniert einfach, weil ich meinen RSS Feed an den jeweiligen Stellen zur Verfügung stelle und die strukturtierten Inhalte dort dann automatisiert zur Verfügung gestellt werden. Das ermöglicht mir mehr als eine Plattform zu pflegen, aber nur eine befüttern zu müssen.

So macht es dann Spaß die jeweiligen Zielgruppen auf ihren Kanälen anzusprechen.

Source: Der Bode

Mailserver Checkskript

#!/bin/sh
HELOSERVER=web,de
MAILFROM=info@worlddomination.de
RCPTTO=keine@aol.com
SERVER=Mail.deinserver.de
( echo „HELO $HELOSERVER“
sleep 2
echo „MAIL FROM:$MAILFROM“
sleep 2
echo „RCPT TO:$RCPTTO“
sleep 2
echo DATA
sleep 2
echo „Subject:Test-Mail!“
sleep 2
echo „Inhalt der Test-Mail!“
sleep 2
echo .
sleep 2
echo QUIT
) | telnet $SERVER 25

Paketauswahl von auf ein neues System transportieren

Dieser Tip dient mir als Gedächnisstütze.

Möchte man eine vorhandene Debian installation mit dem Paketbestand auf eine neue Maschine kopieren, so reichen um grunde genommen vier einfache Schritte.

  1. auf dem Quellserver führen Sie dpkg –get-selections > Paketliste.txt aus.
  2. Die erstellte Liste wird als Textdatei auf den Ziel server übertragen
  3. Auf dem Zielserver führt man dpkg –set-selections < /pfad/zur/Textdatei/vom/Quellserver aus
  4. anschließend auf dem Zielserver apt-get -u dselect-upgrade

Auf diesem Weg überträge man die installierte Paketauswahl einfach und schnell auf ein weiteres System

Debian mit cron-apt sicher halten

Der geneigte Administrator hat bei der Wahl seiner Sicherheitsstrategie immer wieder aufs neue elementare Dinge zu beachten. Zum einen muss er Augen und Ohren offen halten um Sicherheitlöcher mitzubekommen, zum anderen muss er sich immer wieder aufs neue Zeitfenster schaffen in denen er die entsprechenden Sicherheitsupdates auch einspielt.

Letzteres findet in aller Regel nach Feierabend und/oder Nachts statt.

Da ich von meiner Tendenz her eher zu den fauleren Administratoren gehöre und mich lieber mit der Arbeit an und mit Systemen anstatt mit dem Stopfen von Löchern beschäftige, kommt mir ein Programm wie cron-apt grade recht.

Mein freundlicher Arbeitskollege, der sich aktuell mit einer möglichst angenehmen Art und Weise des aktuell haltens unserer Serverlandschaft beschäftigt, wies mich darauf hin. Es handelt sich letztendlich nur um ein kleines Tool und einen zusätzlichen Cronjob, welcher die eingestellte Auswahl an Software aktuell hält und ggf. Downloads oder auch gleich (wie bei mir) die installation ausführt.

Da es mir primär um Sicherheitsupdates geht, gibt es einige Anpassungen die von der Standardinstallation abweicht. Diese lassen sich aber schön einfach zusammenfassen – ganz wie ich es mag 🙂

Installation

apt-get update && apt-get install cron-apt

Konfiguration

In diesem Beispiel werden nur Security Updates gesucht und installiert.

cat /etc/apt/sources.list | grep security > /etc/apt/sec-sources.list

cat > /etc/cron-apt/config << EOF
OPTIONS=“-q -o Dir::Etc::SourceList=/etc/apt/sec-sources.list“
MAILON=“upgrade“
MAILTO=“deine@adresse.de“
EOF

und zu guter letzt noch

cat > /etc/cron-apt/action.d/3-download << EOF
autoclean -y
dist-upgrade -y -o APT::Get::Show-Upgraded=true
EOF

Damit erreichen wir folgendes:

  • Es gibt einen Cronjob um 4 Uhr morgens (standard)
  • Es gibt eine zusätzliche apt-sources list nur für Sicherheitsupdates die von Cron-apt genutzt wird.
  • Updates werden heruntergeladen und auch gleich installiert
  • Es findet eine Bereinigung statt, sodass APT die Festplatte nicht sonderlich voll müllt.
  • Ihr bekommt (bei eingerichtetem MTA) eine Mail über die Updates, welche durchgeführt wurden.

Vielen Dank an MM für diese Steigerung der Lebensqualität.

MySQL Magic und datadir Wechsel

Manchmal hat man es mit merkwürdigen Verhaltnsweisen einer Datenbank wie MySQL zu tun.

So zum Beispeil wenn die Engine InnoDB genutzt wird. Diese ist total toll und auch transaktionssicher. Nur brauchen die wenigsten Anwendungen diese Sicherheit und wollen lieber schneller und/oder schlanker sein.

An dieser Stelle wird man bei InnoDB mit großen Dateigrößen überrascht und bekommt mit unter Performanceschwierigkeiten. Ich habe mir viele Gedanken dazu wie man etwas derartiges Lösen kann. Fest steht, dass die Datenbanken und mehrere Faktoren größer sind und man nur bedingt die Möglichkeit bestitzt hier zu tunen ohne die Hardware anzupassen (zumindest ab einer gewissen Größenordnung).

Normalerweise sollte der mysqlcheck Befehl dabei helfen die Geschwindigkeit und „Ordentlichkeit“ zumindest ein kleines Stück weit bezubehalten.

Nicht immer ist das aber ausreichend um die Dateigröße und auch die Geschwindigkeit zu steigern. Letztendlich habe ich keinen anderen Weg gefunden als die komplette Datenbank zu exportieren und anschließend wieder zu importieren. Das Ergebnis vor weg ist eine um den Faktor 13 kleinere Datenbank geworden.

Zunächst sollte man sich vor Augen führen, wie große die Datenbanken wirklich sind:

mysql -u root -p -e ’select table_schema „Database“,round(sum(data_length+index_length)/1024/1024,4) „Size (MB)“ from information_schema.tables group by table_schema;‘ > /root/databasesize.txt

In der Datei databasesize.txt stehen alle Datenbanken mit Namen und der entsprechenden Größe.

Zunächst einmal werden alle Datenbanken gecheckt:

  • mysqlcheck –all-databases -u root -p –optimize –auto-repair

Anschließend wird die Datenbank exportiert

  • mysqlcheck –all-databases -u root -p –all-databases > /root/Sicherung.sql

Ist die Sicherung erledigt fährt man den MySQL dienst herunter

/etc/init.d/mysql stop

und kann man sich (vielleicht auch zur Sicherheit) einen neuen Speicherort für die Datenbanken aussuchen. Diese stellt man in der Datei /etc/mysql/my.cnf ein. Dort legt man sich einfach einen neuen Eintrag für das datadir an.

#datadir = /var/lib/mysql
datadir = /neuer/speicherort/lib/mysql

Möchte man bei InnoDB bleiben, so kann es interessant sein den Eintrag

innodb_file_per_table = 1

in der Sektion [mysqld] hinzuzufügen.

Wichtig ist, dass der neue Speicherort auch von dem Benutzer und der Gruppe mysql genutzt werden kann  (chmod mysql:mysql /neuer/speicherort/lib/mysql). Dorthin kopiert man die vorhandene MySQL Datenbank

cp /var/lib/mysql/mysql /neuer/speicherort/lib/mysql

Somit kann man sich sicher sein, dass man sich auch wieder einloggen kann. Nun kann man den den Dienst wieder starten

/etc/init.d/mysql start

und die Datenbank einlesen:

mysql -u root -p < /root/Sicherung.sql

Man kann nun zuschauen, wie die Datenbankan erneut angelegt werden.

Da ich hier beschreibe wie man von zum Beispiel InnoDB auf MyISAM kommt, fehlt noch die Konvertierung der Tabelle auf das gewünscht Format. Dazu lassen wir uns von MySQL ein Skript generieren:

mysql -u root -p -e ’select concat(‚alter table ‚,table_schema,‘.‘,table_name,‘ engine=MyISAM;‘) from information_schema.tables where engine = ‚InnoDB“ > /root/altertabletomyisam.sql

und lesen es erneut ein:

mysql -u root -p < /root/altertabletomyisam.sql

Nun rattert MySQL die ganzen Tabellen durch und erzeugt uns feine MyISAM Tabellen.

Wenn man genug Platz hat, dann kannn man den letzten Schritt schon vor dem Export der Datenbank machen, denn es werden neue Tabellen erzeugt und die alten nicht gelöscht.

Es gibt natürlich noch andere Wege. Einen habe ich hier gefunden.

Suchmaschinenoptimierung zusammengefasst

Im Moment befasse ich mich wieder recht viel mit dem Internet, der Gestaltung von Internetseite und vor allem aber Inhalten.

Zum einen versuche ich selbst möglichst viel von der Metaebene meines Gehirns als Inhalt im Internet bereitzustellen, zum anderen interessiert es mich für meine Kunden wie ich Ihnen die „richtige“ Nutzung des Internets nahe bringen kann.

Wie sich sicherlich jeder denken kann ist Suchmaschinenoptimierung sofort ein Thema, wenn man auf Aufmerksamkeit aus ist. Vor einiger Zeit hatte ich schon mal ein 10 Schritte Einführungstext dazu geschrieben, der aber nie so recht zur Anwendung gekommen ist.

Nun ist das Thema wieder aktuell und ich schaue was sich in der zwischenzeit verändert hat. Erwartungsgemäß ist nicht sonderlich viel Los (auch wenn man das gern anders haben möchte) denn die ehrlichen, nachhaltigen und lebensfähigekn Konstruktue folgen simplen Regeln.

Diese wurde in einem kleinen 32-Seitigen Dokument anschaulich zusammengefasst, welches ich bei Googleusercontent gefunden habe. Damit ich meinen Teil zum Erhalt solcher Informationen beitrage, habe ich es gleich mal lokal gespielgelt. einfuehrung-in-suchmaschinenoptimierung.

PHP Code in der Datenbank

Soeben arbeite ich an der Migration einer Datenbank samt CMS von einem Server auf den nächsten.

Insgesamt kein großes Unterfangen. Allerdings kommt es trotz diverser Schritte immer wieder zu Codierungsfehlern, die dazu führen, dass Inhalte im Backenend des CMS nicht zu bearbeiten sind. Des Weiteren werden auch der Einfachheit halber ganze Artikel und Beträge ausgeblendet.

Meine Suche nach dem Fehler bringt mich immer näher an die Datenbank. Dort erstarre ich, als ich einen Dumo überfliege und feststelle, dass tatsächlcihe reihenweise PHP Code samt Variablen etc. in der Datenbank gespeichert ist.

Für mich ein Paradebeispiel von Kannste machen…

20140306-094641.jpg

Apache Webserver mit FastCGI in einfach unter Debian Wheezy

Da es immer wieder vor kommt, dass man einen Webserver installieren muss, habe ich hier mal alle bei mir so üblichen Schritte zusammengefasst. Dabei behandle ich nur die grobe allgemeine Instalaltion wie ich sie gern habe. Nicht mehr! Folgende Punkte sollen erreicht werden:

  • Debian Stable System mit der Option auf Testing Pakete
  • Apache2 Webserver (MPM-Worker) mit ein paar wichtigen Modulen
  • PHP als FastCGI
  • MySQL Datenbank
  • FTP Server
  • Ein paar Sicherheitsallgemeinheiten

1. Grundinstallation

Bei der Grundinstallation achte ich darauf, dass wirklich nichts ausser dem SSH-Server installiert wird. Alles andere wird per default nicht so gemacht wie ich es mir wünsche. Daher nehme ich nur die Konfiguration der Festplatte, des Netzwerkes und der Paketquellen mit.

2. Paketquellen anpassen

Ich nehme direkt zu Beginn den Testing-Zweig in die Paketquellen mit auf:

nano /etc/apt/sources.list

# Testing-Pakete

deb http://security.debian.org/ testing/updates main

deb http://ftp.de.debian.org/debian/ testing main

Anschließend werden werden die Prioritäten angepasst:

nano /etc/apt/preferences.d/priority

Package: *

Pin: release n=wheezy

Pin-Priority: 990

3. Software installieren

aptitude install apache2 apache2-mpm-worker libapache2-mod-fcgid php5-cgi php5-mysql php5-xcache php5-sqlite php5-mcrypt php5-json php5-gd php5-fpm php5-curl mysql-server

aptitude install -t testing vsftpd

4. Software Konfigurieren

Apache2: Module aktivieren

a2enmod rewrite mem_cache fcgid deflate alias

a2dismod php5_cgi

service apache2 restart

usermog www-data -G ftp

FastCGI:

nano /etc/apache2/mods-enabled/fcgid.conf

<IfModule mod_fcgid.c>

AddHandler    fcgid-script .fcgi

FcgidConnectTimeout 20

FcgidIOTimeout              60

FcgidMaxRequestsPerProcess  400

FcgidIdleTimeout            60

FcgidMinProcessesPerClass   0

</IfModule>

VsFTPD: Konfiguration erstellen

listen=YES

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=0022

dirmessage_enable=YES

use_localtime=YES

xferlog_enable=YES

connect_from_port_20=YES

chown_uploads=YES

idle_session_timeout=600

data_connection_timeout=120

nopriv_user=ftp

ftpd_banner=Willkommen zum FTP-Server

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

allow_writeable_chroot=YES                               #Dieser Punkt ist der Grund weshalb wir testing installiert haben

secure_chroot_dir=/var/run/vsftpd/empty

pam_service_name=vsftpd

rsa_cert_file=/etc/ssl/private/vsftpd.pem

Wichtig ist, das wir die zukünftig verwendeten Shells auch aktivieren, da ansonsten der vsftpd streikt. In der Datei /etc/vsftpd.chroot_list werden alle Benutzer eingetragen die NICHT gechrooted werden sollen.

echo „/bin/false“ >> /etc/shells

Fail2ban

nano /etc/fail2ban/jail.conf

[ssh]

enabled  = true

port     = ssh

filter   = sshd

logpath  = /var/log/auth.log

maxretry = 2

[vsftpd]

enabled  = false

port     = ftp,ftp-data,ftps,ftps-data

filter   = vsftpd

logpath  = /var/log/vsftpd.log

maxretry = 3

Mailserver

Da Debian ja ohnehin schon mit einem Mailserver daher kommt können wir diesen für einfache Aufgaben auch nutzen. In diesem Fall möchte ich einfach einen Mailversand über einen Smarthos realisieren.

dpkg-reconfigure exim4-config

5. Benutzer anlegen

useradd webuser -c „Benutzer fuer dasWebsystem via FTP“ -d /var/www/webseite.de -m -s /bin/false -U

usermod -G ftp && passwd webuser

6. Webseite einrichten

Zunächst einmal legen wir eine virtuelle Konfigurationsdatei an:

nano /etc/apache2/sites-enabled/webseite.de

<VirtualHost webseite:80>

ServerName webseite.de

ServerAdmin webmaster@webseite.de

DocumentRoot /var/www/webseite.de/httpdocs/

<Directory /var/www/webseite.de/httpdocs>

Options +ExecCGI

AddHandler fcgid-script .php

FCGIWrapper /usr/bin/php-cgi .php

AllowOverride All

Order allow,deny

allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/webseite.de_error.log

LogLevel warn

CustomLog ${APACHE_LOG_DIR}/webseite.de_access.log combined

</VirtualHost>

Nun müssen wir noch die Verzeichnisse anlegen. Dies geschieht unterhalb des Homeverzeichnisses des Benutzers:

mkdir /var/www/webseite.de/httpdocs && chown :ftp /var/www/webseite.de/httpdocs

Fazit

Was haben wir bisher erreicht?

  • Wir haben einen zügigen Webserver
  • PHP mit Hilfe von FastCGI ausführt.
  • Der FTP-Server bietet die Möglichkeit Chrootfreie Benutzer zuzulassen
  • Systembenutzer können sich via FTP auf dem Server einloggen und landen in Ihrem Homeverzeichnis
  • Unterhalb des Homeverzeichnisses gibt es ein httpdocs Order der die Webseiten vorhalten wird
  • MySQL speichert seine Tabellen freundlicherweise in einzelnen InnoDB Dateien

Mehrere PHP Versionen innerhalb von Plesk 11.5

Bei der Arbeit mit Plesk kann es sinnvoll sein mehrere unterschiedliche Versionen von PHP innerhalb von Plesk zur Verfügung zu haben. Zum einen erleichtert es doch immens die Arbeit bei der Migration von Webseiten, zum anderen kann man so individueller auf die Bedürfnisse der Umgebung eingehen. Ziel ist es die jeweils zu verwendende PHP Version innerhalb des Plesk Panels auswählen zu können.

Grundsätzlich werden alle PHP Versionen als FastCGI zur Verfügung gestellt.

Das diese Pakete nicht vorkompiliert zur Verfügung stehen muss selbst hand angelegt werden. Hier gibt es diverse Anleitungen im Netz wie man unter Debian das alle Voraussetzungen schafft um ein sauberes Kompilat zu erhalten. Als hilfreich hat sich folgende Umgebung herausgestellt:

apt-get install apache2-suexec libpcre3-dev libpcre++-dev libpng12-dev libbz2-dev libcurl4-openssl-dev libc-client2007e-dev libjpeg-dev libgif-dev libgif4 libpthread-stubs0 libpthread-stubs0-dev libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxpm-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev xtrans-dev libxml2-dev libmysqlclient-dev libfreetype6-dev build-essential make wget build-essential

An dieser stelle muss nach Bedarf ergänzt werden, was man braucht oder aber eben nicht.

Nun fangen wir an mit der Einrichtung von PHP 5.3:
cd /usr/src
wget http://de1.php.net/get/php-5.3.28.tar.gz/from/this/mirror -O php.tar.gz
tar xzvf php.tar.gz
cd php-5.3.28

ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a

./configure –prefix=/usr/share/php53 –datadir=/usr/share/php53 –mandir=/usr/share/man –bindir=/usr/bin/php53 –with-libdir=lib/x86_64-linux-gnu –includedir=/usr/include/php53 –sysconfdir=/etc/php53/apache2 –with-config-file-path=/etc/php53/apache2 –with-config-file-scan-dir=/etc/php53/conf.d –enable-libxml –enable-session –with-pcre-regex=/usr –enable-xml –enable-simplexml –enable-filter –disable-debug –enable-inline-optimization –disable-rpath –disable-static –enable-shared –with-pic –with-gnu-ld –with-mysql –with-gd –with-jpeg-dir –with-png-dir –with-xpm-dir –enable-exif –with-zlib –with-bz2 –with-curl –with-ldap –with-mysqli –with-freetype-dir –enable-soap –enable-sockets –enable-calendar –enable-ftp –enable-mbstring –enable-gd-native-ttf –enable-bcmath –enable-zip –with-pear –with-openssl=/usr/ –with-imap –with-imap-ssl –with-kerberos –enable-phar –enable-pdo –with-pdo-mysql –with-mysqli

make
make test
make install

Wenn alles durchgelaufen ist, erhalten wir eine interessante Übersicht:
Installing PHP SAPI module:       cgi
Installing PHP CGI binary: /usr/bin/php53/
Installing PHP CLI binary:        /usr/bin/php53/
Installing PHP CLI man page:      /usr/share/man/man1/
Installing build environment:     /usr/share/php53/lib/php/build/
Installing header files:          /usr/include/php53/php/
Installing helper programs:       /usr/bin/php53/
program: phpize
program: php-config
Installing man pages:             /usr/share/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment:      /usr/share/php53/lib/php/
[PEAR] Archive_Tar    – already installed: 1.3.11
[PEAR] Console_Getopt – already installed: 1.3.1
[PEAR] PEAR           – already installed: 1.9.4
Wrote PEAR system config file at: /etc/php53/apache2/pear.conf
You may want to add: /usr/share/php53/lib/php to your php.ini include_path
[PEAR] Structures_Graph- already installed: 1.0.4
[PEAR] XML_Util       – already installed: 1.2.1
/usr/src/php-5.3.28/build/shtool install -c ext/phar/phar.phar /usr/bin/php53
ln -s -f /usr/bin/php53/phar.phar /usr/bin/php53/phar
Installing PDO headers:          /usr/include/php53/php/ext/pdo/

Das ist aus dem Grund interessant, weil es und etwas anschaulicher zeigt wo unsere
Datein liegen.

Nun kopieren wir noch die Beispielkonfigurationsdatei:
cp php.ini-production /etc/php53/apache2/php.ini

Wenn das erledigt ist, können wir Plesk mitteilen, wo es unser neues PHP findet, wie es heißen soll und was es damit anfangen soll:

/usr/local/psa/bin/php_handler –add -id PHP-5.3.28 -displayname NEWPHP-5.3 -path /usr/bin/php53/php-cgi -type fastcgi -phpini /etc/php53/apache2/php.ini

Haben wir das erledigt brauchen wir einfach nur noch unseren Apache neu starten und haben in den Hostingeinstellung der Pleskdomain unsere neue Version PHP mit dem Namen NEWPHP-5.3 zur Verfügung.

 

Quellen:

  • http://massivelydigital.com/run-two-versions-of-php-on-one-plesk-11-server/
  • http://blogs.reliablepenguin.com/2013/10/01/plesk-11-5-with-multiple-php-versions
  • http://zgadzaj.com/how-to-install-php-53-and-52-together-on-ubuntu-1204
  • http://wiki.apache.org/httpd/php-fcgid
  • http://www.soeren-hentzschel.at/technik/linux-server/2013/05/17/php-5-3-und-5-4-unter-debian-7-wheezy-parallel-installieren/

Ohne Datenbank-Power

Wer mich kennt, der weiß, dass ich es gern einfach mag. Wir verkomplizieren die einfachsten Dinge und sind gradezu meisterhaft darin uns das Leben selbst schwer zu machen.

Aus diesem Grund entwickelte sich irgendwann im laufe der Zeit eine Art Abneigung gegen alles was unnötig kompliziert, unangemessen aufwändig oder gar aus der Faulheit heraus aufgebläht wird.

Eine dieser Dinge sind CMS (Content Management Systeme). Wir alle nutzen sie in der ein oder anderen Art und Weise und tragen somit zum Ausbau des Internet, Intranet oder ähnlichem bei. Eine ordentliche Datenhaltung ist an dieser Stelle schon die Vorstufe zum schwarzen Gürtel. Aus diesem Grund legen wir die Verwaltung und Haltung von Daten gern in die Hände von Systemen. Soweit auch alles ok.

Wenn ich mir die technische Komplexität vieler Webvisitenkarten oder etwas aufwändigerer Präsenzen anschaue wird mir ein wenig bange. Datenbanken, Skriptsprachen, Erweiterungen und dergleichen prägen die Serverlandschaften und verschwenden unfassbar viel Energie, Speicherplatz und so weiter. Für den Kunden so lange uninteressant wie er nicht upgraden oder warten muss. An dieser Stelle wird  es oft teuer, weil ein Techniker ran muss der glaubt die Dinge zu beherrschen. Wofür das alles? Für 10-20 Seiten die nur dazu dienen sich zu präsentieren? Aus meiner Sicht unverhältnismäßig.

An dieser Stelle nutze ich gern kleine Systeme, mit so wenig Abhängigkeiten wie möglich. Natürlich darf es bequem sein und ich sage nicht, dass jeder seine Seiten wieder von Hand schreiben soll.

Get-Simple als vollwertiges, erweiterbares, einfach zu erlernendes/zu vermittelndes CMS ist für mich oft die Wahl. Es speichert seine Daten in XML Dateien ab, ist auf einfache Art und Weise erweiterbar, benötigt minimale Anforderungen an neues Skriptsprachen und ist somit auf lange sicht sehr gut wartbar und weniger anfällig für Serverseite Veränderungen. Zudem kann ich per Skript die komplette Präsenz eines Kunden herunterladen und so direkt lauffähige Backups seiner Webseite bereithalten.

Dem Anschließen möchte ich seit neuestem noch das NibbleBlog-System. Ähnlich aufbaut, mit ein wenig mehr optischem Schnick-Schnack ist es ein leistungsfähiges, schnelles und vor allem zeitgemäßes Blogsystem.

Windows 7/8 bootable USB Stick am Mac erstellen

Es kommt hin und wieder vor, dass ich ein Windows installieren muss/kann/soll. Damit ich nicht immer mit einem CD/DVD Medium durch die Gegend renne oder mir gar ein externes Laufwerk zulegen muss, erstelle ich mir einen USB-Stick der für mich die Installationsdaten bereit hält.

Das sich irgendwann in den letzten Jahren die Eigenschaft von Apples Bootcamp geändert hat mir einen USB Stick aus einer ISO-Datei oder einem Datenträger zu erstellen, muss ich ab und an suchen, was ich zu tun habe um mir die Funktion wieder zurück zu holen.

Zunächst einmal muss ich mir den Paketinhalt der von Bootcamp anzeigen lassen (rechts Maustaste; Paketinhalt nazeigen). Anschließend suche ich die Datei

info.plst

und kopiere sie auf den Schreibtisch um sie von dort aus zu bearbeiten. Ziemlich am Ende sucht ich nach „PreUSB“ und entferne das „Pre“. Nun wird die gespeicherte Datei wieder zurück in das Paket von Bootcamp kopiert und das ganze noch im Terminal über die folgende Zeile signiert.

„sudo codesign -fs – /Applications/Utilities/Boot\ Camp\ Assistant.app“

Ist das Getan hat man auch wieder den Fehlenden Eintrag zurück der es einem erlaubt am Mac einen installatiosfähigen Windows USB Stick zu erstellen.

Das dieser Text meine Gedächtnisstütze ist, kann sich jeder gern das folgende Video anschauen um das ganze nochmals nachzuvollziehen.

Warum Jörg manchmal recht hat

Natürlich lautet die Konfiguration der Sortierung der Posts auf der Startseite einer WordPress-Seite order=DSC und nicht order=ASC wenn man die aktuellen Einträge oben haben möchte.

Warum man das aber nicht per WP-Standard-Button definiert hat, habe ich trotzdem noch nicht verstanden. Hm. Egal, läuft.

index.php:

[ … ]
<?php global $query_string; query_posts($query_string . „&order=DSC“); /* Miro war hier */ ?>
<?php
if ( have_posts() ) :
// Start the Loop.
[ … ]

 

DNS Zonen anhand von Master finden

Ist man auf einem unixoiden System unterwegs und will sich auf einem großen Nameserver die Liste aller Zonen aus der Named-conf anzeigen lassen, welche einen bestimmten Master haben, so kann man das ziemlich elegant mit folgender Zeile tun:

grep -i -B 5 „IP-DES-MASTER-SERVERS“ etc/named.conf | grep -i  zone | grep -v \# | cut -d \“ -f 2 | sort -u

Es wird die named.conf ausgelesen und nach dem Master Server gesucht und zusätzlich 5 darüberliegende Zeilen mit ausgegeben. Diese Zeilen durchsuchen wir nach dem Wort „zone“ und filtern im zweiten Schritt alle auskommentierten Zeilen heraus. Damit fertig geht es weiter und wir trennen den Text nach Anführungszeichen und lassen uns nur alles dazwischen in geordneter Form ausgeben. So erhalten wir eine Liste die wir auch gern für andere Dinge verwenden können.