What is cloud computing? The basic idea is to have an abstracted model to separate physical IT infrastructure from logical IT infrastructure. Think about the OSI-Layer model and map it to the various infrastructure sets. (e.g. A customer is interested in the availability of a service. He doesnt care about the availability of the exact physical system.) This is called “Infrastructure as a service” short: IaaS

There are other aspects in cloud computing, which provide PaaS (Platform as a Service, e.g. Hosting) or SaaS (Software as a Service, e.g. Salesforce). Since EC2 allows logical
Since EC2 envirements allow a massive scaling of logical infrastructure, often the term “elastic” is used to describe parts of this technology.

EC2 compatible solutions (e.g. Eucalyptus and UEC) provide IaaS Services. The logical it is split into several components:

  • A Cloud Controller: The frontend coordinating everything. It’s accessed by an API, on the client side there are the ec2 tools on the shell or plugins like elasticfox for firefox.
  • A Storage Controller: This unit provides all the storage for the cloud. The storage comes in form of S3 which is also accessible over the web by API tools. It stores files as “Objects” in a “Bucket” objects can be made into “Bundles” by adding a prefix in front of their name. Another form of storage provided is EBS (Elastic Block Storage), which are partition images on the Storage controller, accessible by virtual instances (see below).
  • A Cluster Controller (Eucalyptus term, Amazon refers to clusters as “regions”): This unit controls the physical hardware and network configuration in the cluster.
  • Cloud Nodes: The physical servers running the cloud infrastructure.

The logical infrastructure built in the cloud consists of virtual servers, the so called instances. Instances are stored in form of templates. Every instance launched is started from the template, and looses all changes on termination. So specific configurations and data have to be stored in S3 or EBS. This seems a weird paradigm change at first, but makes perfectly sence, once you look at the migration paths available: Any kind of instance can be upgraded by upgrading and testing the template and then relaunching the instances. This massively reduces migration and administration cost, and makes this tasks just… elastic!

Seit gestern gibt es für vertox.ch eine erweiterte .htaccess. Die Datei enthält viele praktische Voreinstellungen:

  • Eigene Error-Seiten definieren.
  • Verzeichnis-Schutz mit Passwort
  • Beispiele zu mod_rewrite (Apache Rewrite Engine)
  • Beispiele zu mod_autoindex, inklusive FancyIndex.

Read more about BoxBackup on boxbackup.org.
And the wiki.

Serverside Installation
for all these steps you need to be root, (sudo su).

apt-get install boxbackup-server
# it will look like its waiting for input, but its not just press Enter,
# and if it hangs press it again, until return to the console.

# configure backup directory.
#create a backup directory, if you want to use userland raid read this.
#you need to know the blocksize (4096) of the partition (/dev/sda1) where the backup is.
# dumpe2fs /dev/sda1 | grep -i ‘Block size’
mkdir /backup
chown -R bbstored:bbstored /backup
rm /etc/boxbackup/raidfile.conf
raidfile-config /etc/boxbackup 4096 /backup

# next is to configure the boxbackup server
# Be sure to replace “hostname” by the correct name.
rm /etc/boxbackup/bbstored.conf
bbstored-config /etc/boxbackup hostname bbstored

# last thing todo for the server is to create the certificates
# This will create a folder “ca”, which is very important, cause it is needed to create the client certificates.
# Also without certificates the backup can’t be used.

cd /root
bbstored-certs ca init
# Sign the certificates prepared by boxbackup.
bbstored-certs ca sign-server /etc/boxbackup/bbstored/boxbackup-server-cert-req.pem
# Copy (not move)
cp -a ca/servers/bserver.hjbaader.home-cert.pem /etc/boxbackup/bbstored/boxbackup-server-cert.pem
cp -a ca/roots/clientCA.pem /etc/boxbackup/bbstored/boxbackup-client-ca-cert.pem

# start the BoxBackup server
/etc/init.d/boxbackup-server start
# if there is no output at all, there is something very wrong..
# logoutput can be found in /log/syslog

Client Installation
for all these steps you need to be root, (sudo su).

Auch wer noch keine Linux-Erfahrung hat, kann sich schnell in die Linux-Shell einarbeiten. Hier gibts drei hilfreiche Links:

Windows-User arbeiten häufig Remote auf Linux-Server. Dazu gibts die SSH-Suite:

  • SSH Einführung von Ubuntu.
  • WinSCP: Ein SCP-Client, mit dem man Dateien ähnlich wie mit einem FTP-Client hochladen kann.
  • Putty: Eine SSH-Konsole für Windows.

Und zum Schluss noch etwas für Ubuntu-Admins:

  • Ein Ubuntu-Cheatsheet mit den wichtigsten Administrations-Befehlen wie apt-get, sudo und so weiter..

Damit auch ein Shell-Script über eine schöne Benutzeroberfläche verfügt, kann man dialog verwenden, um Benutzerinteraktionen darzustellen.

Hier gibts eine deutsche Einführung zu Dialog.

Weitere Doku befindet sich auf der Dialog-Homepage.

Mit xdialog sehen Shell-Scripte auch unter X11 schön aus.

Wenn dialog / xdialog über eine variable angesprochen werden, kann man die beiden Frontends austauschen, da sie Parameter-Kompatibel sind:
DIALOG=/usr/bin/dialog
$DIALOG --textfield

Das Ding mit dem XDebug hatten wir ja schon mal… Folgendes hat sich neu ergeben:

  • Launchpad bietet ein php5-xdebug package für Ubuntu Gutsy.
  • Der XDebug lässt sich somit einfach installieren, z.B. in einer VMWare-Appliance
  • Das Eclipse PDT hat einen XDebug-Support integriert.

Die Konfiguration serverseitig ist recht einfach:

xdebug.remote_enable = on
xdebug.remote_host = 192.168.237.1 # ACHTUNG: Das ist die Workstation mit Eclipse

In der Datei /etc/php5/conf.d/xdebug.ini bearbeiten.

In Eclipse muss schliesslich unter “Window” -> “Preferences” der Browser eingestellt werden. Bei Firefox reicht als Parameter ein simples %URL%. Im Debug Dialog muss eine “PHP-WebPage” konfiguration angelegt werden. In der Server-Konfiguration müssen beim Tab “File Mapping” die absoluten Pfade zu den Dateien angelegt werden. Die Online-Hilfe von Eclipse bietet weitere Infos.

Multi-User Environment / Entwickler hinter der Firewall: Für solche Dinge gibts einen Proxy fürs DBGp (Debug Protocol). Dieser muss verwendet werden, wenn der PHP-Server nicht auf den Port des Clients (also den PC mit Eclipse) zugreifen kann, oder wenn mehrere User sich eine Debug-Session teilen möchten.

Eine recht einfache Anleitung zur Installation von XDebug findet man ja schnell. Da jedoch php5-dev installiert werden muss, wirds wohl auch schon bald von der codeBase ein .deb geben. Wir wollen keine Development-Pakete auf unseren Servern, die enthalten Kompiler und machen das System deshalb unsicher.

Was der freie Debugger sonst noch so kann, finden Sie auf der XDebug-Homepage raus.

Auf Remote Debugging, und die Integration in Eclipse kommen wir noch zu sprechen… versprochen.