Dienstag, 20. August 2013
[*]

MES03: Plattenwegweiser

, 23:19

Dieser Artikel gehört zur Serie Mein eigener Server.

In Teil 2 habe ich eigentlich versprochen, mit der Konfiguration zu beginnen. Aber vorher muss ich noch zwei kleine Ausflüge machen:

Wo die Dinge jetzt liegen

Wie bereits erwähnt haben wir keine Laufwerksbuchstaben sondern nur Verzeichnisse. Dabei verwenden alle UNIX-Betriebssysteme mehr oder weniger die gleichen Verzeichnisstrukturen. Die wichtigsten will ich hier mal aufzählen:

/etc/

Hier liegen die Konfigurationen. Sowohl die des Systems als auch die der meisten Softwarepakete. Beispiele: die Benutzer des Systems sind in /etc/passwd definiert (aber nicht immer), die Konfiguration des Webservers findet sich unter /etc/apache2/ (natürlich nur, wenn Apache 2 als Webserver benutzt wird), die Startskripten für im Hintergrund laufende Dienste sind in /etc/init.d/.

/var/

Hier legen Programme veränderliche Dateien ab. Und Daten, die nur von Serverprogrammen benutzt werden sollen (z.B. die Dateien einer Webseite) liegen auch oft hier.

/usr/

Die ausführbaren Dateien der Software sind größtenteils in diesem Verzeichnis installiert. Einige Grundsystemfunktionen liegen auch in /bin/ und /lib/.

/usr/local/

Programme aus anderen Quellen als der Distribution, zum Beispiel Selbstkompiliertes können hier installiert werden, damit sie sich nicht mit den original ausgelieferten Dateien in die Quere kommen. Manche Distributionen und einige kommerzielle Unixe verwenden zu diesem Zweck auch /opt/.

/home/

Hier haben die Benutzer ihre Homeverzeichnisse. Dort können sie sowohl ihre eigenen Dateien als auch ihre Dotfiles (die persönlichen Konfigurationen für Programme, die so genannt werden, weil ihre Namen meist mit einem Punkt beginnen) ablegen.

/tmp/

Temporäre Dateien. Auf manchen Systemen wird der Inhalt beim Neustart automatisch gelöscht. Es darf deshalb nicht davon ausgegangen werden, dass hier abgelegte Daten über einen längeren Zeitraum erhalten bleiben.

Ein Paketmanager

Einer der größten Vorteile der meisten Linuxdistributionen ist die Softwareinstallation mit einem Paketmanager. Der kennt in der Regel die Abhängigkeit der verschiedenen Softwarepakete voneinander, so dass das System immer in einem funktionierenden Zustand sein sollte. Debian verwendet apt.

Die Konfiguration des Paketmanagers liegt in /etc/apt/. Die wichtigste Datei ist sources.list. Darin stehen die Quellen, aus denen das System Installationspakete beziehen soll. Auf einem von Hetzner installierten Debian Squeeze sieht das im Moment so aus:

###############################################################################
# Hetzner mirror
#

deb http://mirror.hetzner.de/debian/packages squeeze main contrib non-free
deb http://mirror.hetzner.de/debian/security squeeze/updates main contrib non-free

###############################################################################
# backup mirror
#

deb http://cdn.debian.net/debian/ squeeze main non-free contrib
deb-src http://cdn.debian.net/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free

## backports
deb http://mirror.hetzner.de/debian/backports squeeze-backports main contrib non-free
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free

Softwareinstallation

Das Werkzeug ermöglicht die folgenden Operationen:

apt-get update

Holt die aktuellen Paketlisten von den in sources.list definierten Quellen.

Beispiel:

root@Debian-60-squeeze-64-minimal ~ # apt-get update
Get:1 http://mirror.hetzner.de squeeze Release.gpg [1,672 B]
Get:2 http://mirror.hetzner.de squeeze/updates Release.gpg [836 B]
Get:3 http://mirror.hetzner.de squeeze-backports Release.gpg [1,571 B]         
[...]
Get:33 http://cdn.debian.net squeeze/main amd64 Packages [8,602 kB]            
Get:34 http://cdn.debian.net squeeze/non-free amd64 Packages [124 kB]          
Get:35 http://cdn.debian.net squeeze/contrib amd64 Packages [64.1 kB]
Fetched 26.1 MB in 6s (4,006 kB/s)                                             
Reading package lists... Done
root@Debian-60-squeeze-64-minimal ~ # 

apt-get dist-upgrade

Bringt alle installierten Pakete auf die neueste Version.

apt-get install

Installiert die angegebenen Pakete und versucht dabei, alle Abhängigkeiten aufzulösen (also alle von den Paketen benötigten Pakete ebenfalls zu installieren und alle in Konflikt stehenden Pakete zu deinstallieren). Stellt dann eventuell in einem textbasierten Menüsystem Fragen zur Konfiguration.

Beispiel:

root@Debian-60-squeeze-64-minimal ~ # apt-get install screen
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  screen
0 upgraded, 1 newly installed, 0 to remove and 16 not upgraded.
Need to get 624 kB of archives.
After this operation, 975 kB of additional disk space will be used.
Get:1 http://mirror.hetzner.de/debian/packages/ squeeze/main screen amd64 4.0.3-14 [624 kB]
Fetched 624 kB in 0s (9,321 kB/s)
Selecting previously deselected package screen.
(Reading database ... 17705 files and directories currently installed.)
Unpacking screen (from .../screen_4.0.3-14_amd64.deb) ...
Processing triggers for man-db ...
Processing triggers for install-info ...
Setting up screen (4.0.3-14) ...
root@Debian-60-squeeze-64-minimal ~ #

So, dass musstet Ihr unbedingt noch wissen. Aber in der nächsten Folge konfigurieren wir wirklich was.

Donnerstag, 18. April 2013
[*]

MES02: Willkommen bei Linux

, 23:47

Dieser Artikel gehört zur Serie Mein eigener Server.

Linux ist ein Unix

Jetzt habt Ihr Euren Server und sitzt vielleicht zum ersten mal vor Linux. Sehen wir uns also mal gemeinsam an, womit wir es hier zu tun haben. Dies ist ein Unix, eins aus einem langen Stammbaum miteinander verwandter Systeme, zu dem auch der erste Webserver und das iPhone gehören.

Linux selbst ist eigentlich „nur“ eine Neuimplementation des Kernels (also der Gerätetreiber, Netzwerktreiber, Prozessverwaltung und ähnlichem), die Linus Torvalds 1991 begonnen hat, und die seitdem von einer unvorstellbaren Anzahl an Entwicklern ständig weiterentwickelt wurde. Den Rest zum Unix-Erlebnis ergänzen die GNU-Tools, die eigentlich in einem ehrgeizigen Projekt entstanden, das Unix durch ein neues Betriebssystem ersetzen wollte (GNU ist eine rekursive Abkürzung und steht für GNU is not Unix). Während dieses Projekt also seine Tools (Befehle, die wir später noch sehen werden, einen C-Compiler,…) ziemlich weit fertiggestellt hatte, wurde der Betriebssystemkern „Hurd“ nicht fertig. Diese Lücke füllte Linux so gut aus, dass ich bezweifle, dass der Hurd-Kern jemals richtig fertig wird. Aufgrund dieser Geschichte bestehen auch einige Leute darauf, das komplette System für Arbeitsplatzrechner und Server „GNU/Linux“ zu nennen — schließlich besteht es ja nicht nur aus dem Kern (und es gibt tatsächlich jede Menge andere Einsatzmöglichkeiten für Linux ohne die komplette GNU-Umgebung).

Da Linux also nicht von einem einzelnen Hersteller stammt, müssen alle Teile des Systems aus verschiedenen Quellen zusammengestellt und erstmal kompiliert werden. Diese Arbeit übernehmen sogenannte Distributoren, von denen es auch eine unüberschaubare Anzahl für die verschiedensten Einsatzzwecke gibt. Für Server ist Debian GNU/Linux (da! da ist es wieder) gut geeignet, weil die Betreuer dieser Distribution großen Wert auf stabile Programmversionen legen.

Das Unix-Gefühl

Die Unix-Philosophie basiert auf nur wenigen Objekttypen. Der wichtigste davon ist die Datei. In Unix ist praktisch alles eine Datei (sogar die Interaktion mit Geräten wird darüber abgebildet). Dateien sind in einer Baumstruktur hierarchisch in Verzeichnissen angeordnet. Laufwerksbuchstaben wie unter Windows gibt es nicht, alle Dateisysteme hängen in einem gemeinsamen Baum, der Wurzelknoten heißt / und / ist auch der Trenner zwischen den Hierarchieebenen des Baums.
Der zweite wichtige Objekttyp ist der Prozess — also das laufende Programm. Prozesse können weitere Prozesse starten. Sowohl Dateien als auch Prozesse haben einen Besitzer. Die daraus entstehende Rechtestruktur sehen wir uns später noch an.

Ein weiterer wichtiger Teil der Unix-Philosophie lautet „Nur ein Zweck für ein Werkzeug“. Auch das wird erst später Sinn ergeben.

Als Beispiel dafür, wie sich das auf die Architektur auswirkt: auch Ihr redet mit Linux über einen Prozess, die sogenannte Shell. Wie von so vielen anderen Dingen gibt es auch davon mehrere zur Auswahl (niemand hat gesagt, dass es nicht mehrere Werkzeuge für den gleichen Zweck geben soll), aber für uns reicht erstmal die Betrachtung der üblichen Linux-Standardshell bash.

Die Shell liest Eure Eingaben aus einer Pseudodatei („Standard Input“), interpretiert sie als Programmtext und startet weitere Prozesse für Euch. Das klingt jetzt auch erstmal abgehoben, aber auch darauf werden wir später wieder zurückkommen. Die Kommandos, die in der Shell zur Verfügung stehen, sind (praktisch) alle einzelne Programme, die als Dateien an bestimmten Stellen des Dateisystems liegen.

Wichtige Kommandos

Jetzt sehen wir uns mal die wichtigsten Unix-Kommandos an:

Das allerwichtigste Kommando ist man. Es zeigt die Manual Pages des Systems an. Darin sind die Befehle, Dateiformate und sogar Programmierschnittstellen dokumentiert. Der Stil ist für Anfänger nicht leicht zu verstehen, aber nach einiger Eingewöhnung bieten sie eine wichtige Referenz. Seht Euch zur Einstimmung mal man man an.

Bevor wir uns an die Liste machen noch eine Anmerkung zu Programmoptionen: durch die bereits erwähnte Verzweigung des Unix-Stammbaums haben sich für einige grundlegende Kommandos zwei Sätze von gängigen Optionen herausgebildet. Die meisten Linux-Distributionen sind  im Laufe ihrer Entwicklung zwischen den beiden größten Lagern („BSD“ und „System V“) gependelt, und so beherrschen die mit Linux gelieferten Varianten oft beide Sätze. Die aus der BSD-Ecke stammenden werden dabei häufig ohne, die aus der System-V-Ecke stammenden mit vorangestelltem – angegeben. Weil das noch nicht verwirrend genug war, hat das GNU-Projekt  dann noch einen dritten Satz Optionen mit langen Namen und — (also zwei Strichen) eingeführt.

Navigieren durch den Verzeichnisbaum

Da wie gesagt alles im Verzeichnisbaum liegt, müssen wir uns durch den bewegen können. Jeder Prozess hat immer ein Arbeitsverzeichnis. Das gerade aktuelle Arbeitsverzeichnis gibt pwd (print working directory) aus. Mit cd [Verzeichnisname] (change directory) können wir in ein tieferes, mit cd .. wieder eine Ebene nach oben gehen. cd ohne Argumente wechselt in Deine digitale Heimat, das sogenannte Homeverzeichnis.
Übung:

root@Debian-60-squeeze-64-minimal ~ # pwd
/root
root@Debian-60-squeeze-64-minimal ~ # cd ..
root@Debian-60-squeeze-64-minimal / # cd root
root@Debian-60-squeeze-64-minimal ~ #

Ansehen der Inhalte der aktuellen Ebene

Um zu erfahren, was denn im aktuellen Verzeichnis so rumliegt (und wohin wir überhaupt wechseln könnten) gibt es das Kommando ls, mit der Option -l generiert es seine Liste mit ausführlichen Zusatzinformationen.
Übung:

root@Debian-60-squeeze-64-minimal /tmp # ls
a.txt  b  c
root@Debian-60-squeeze-64-minimal /tmp # ls -l
total 4.0K
-rw-r--r-- 1 root root    0 Apr 18 22:11 a.txt
-rw-r--r-- 1 root root    0 Apr 18 22:11 b
drwxr-xr-x 2 root root 4.0K Apr 18 22:11 c
root@Debian-60-squeeze-64-minimal /tmp #

Die Spalten des langen Listings müssen wir uns jetzt mal ansehen. Von Links nach rechts: Berechtigungen, Linkzahl, Benutzer, Gruppe, Größe, Datum, Name. Die erklärungsbedürftigen Felder im Einzelnen:

Eigentum

Dateien gehören immer einem Benutzer und einer Gruppe. Es ist nicht erforderlich, dass der Benutzer, dem eine Datei gehört, Mitglied der Gruppe ist, der die Datei gehört.

Berechtigungen

Benutzer und Gruppe bilden die Basis für ein einfaches aber effektives Berechtigungskonzept. Jeweils für den Eigentümer, die Gruppe und den Rest der Welt lassen sich die drei Operationen „lesen“ (r), „schreiben“ (w) und „ausführen“ (x, diese Dateien können als „Programme“ benutzt werden) bzw. „betreten“ (auch x, für Verzeichnisse) erlauben oder verbieten:

-rwxrwxrwx
^^^^^^^^^^
||||||||||  Rechte für alle Benutzer ("Welt"):
|||||||||+--- ausführen / betreten
||||||||+---- schreiben
|||||||+----- lesen
|||||||     Rechte für die Gruppe:
||||||+------ ausführen / betreten
|||||+------- schreiben
||||+-------- lesen
||||        Rechte für den Eigentümer:
|||+--------- ausführen / betreten
||+---------- schreiben
|+----------- lesen
+---------- Typmarkierung:
              - = normale Datei, d = Verzeichnis, l = Link

Das werden wir später noch öfter in der praktischen Anwendung sehen.

Linkzahl

Eine Datei kann in Unix an mehreren Stellen im Verzeichnisbaum eingehängt sein (bitte versucht nicht, Euch das bildlich vorzustellen). Die werden hier gezählt. Erst, wenn die Datei nirgendwo mehr referenziert wird (der Linkcounter also 0 ist), verschwindet sie von der Festplatte. In der täglichen Benutzung könnt Ihr das fast immer ignorieren.

Dateien ansehen und editieren

Um den Inhalt einer Textdatei anzuzeigen können wir less benutzen (scrollen mit den Cursortasten, verlassen mit q), zur Bearbeitung gibt es einen bunten Strauß an Editoren (Vorsicht! Die dazugehörigen Religionskriege sind schlimmer als jede Windows-oder-Mac-Diskussion.), von denen ich zum Einstieg nano empfehle, weil der die gerade möglichen Befehle immer anzeigt. Mit rm werden wir unliebsame Dateien wieder los.
Übung:

root@Debian-60-squeeze-64-minimal ~ # less test.txt 
Hallo Wult!
root@Debian-60-squeeze-64-minimal ~ # nano test.txt

nano

root@Debian-60-squeeze-64-minimal ~ # less test.txt 
Hallo Welt!
root@Debian-60-squeeze-64-minimal ~ # rm test.txt
root@Debian-60-squeeze-64-minimal ~ #

Prozesse

ps zeigt die gerade laufenden Prozesse an, ps x nimmt in die Liste auch die Prozesse auf, die gerade nicht mit einem Terminal verbunden sind (hier haben wir jetzt ein Programm, das aus historischen Gründen mit BSD-Style-Optionen gestartet wird). Die erste Spalte dieser Liste ist die Prozess-Id. Wenn wir später mit kill Prozesse abschießen werden, dann brauchen wir die.
Übung:

root@Debian-60-squeeze-64-minimal ~ # ps
  PID TTY          TIME CMD
 3067 pts/0    00:00:00 bash
 3102 pts/0    00:00:00 ps
root@Debian-60-squeeze-64-minimal ~ #

So, das war jetzt eine grobe Übersicht über das Wichtigste — aber alles noch sehr theoretisch. Auf vieles müssen wir deshalb später noch einmal vertiefend in der praktischen Anwendung zurückkommen. In der nächsten Folge reden wir über Netzwerke und fangen tatsächlich mal mit der Serverkonfiguration an.

Dienstag, 9. April 2013
[*]

MES01: Wir klicken uns einen Server

, 08:08

Dieser Artikel gehört zur Serie Mein eigener Server.

Hardware wählen

Aus naheliegenden Gründen brauchen wir für die weiteren Kapitel einen Server. Die gibt es bei ganz vielen Hostern und mit sehr unterschiedlichen Leistungsdaten zu sehr unterschiedlichen Preisen zu mieten. Ich gebe hier immer nur Beispiele, Ihr könnt das alles auch anders machen oder woanders Mieten, und das wird dann meistens auch nicht besser oder schlechter sein.

Für unseren Zweck mieten wir mal bei Hetzner einen Virtuellen Server „vServer VQ 12„. Der stellt einen ganz guten Kompromiss aus Kosten und Leistung dar. Der Virtuelle Server ist so etwas wie ein Anteil an einem größeren Server. Wir bekommen 1 GB RAM und 40 GB Plattenplatz zugeteilt, das sollte erstmal reichen.

Für ein großes Blog oder viel Mail oder eine große Menge Dateiablage müssten wir entsprechend höher zielen. Ich persönlich habe z.B. einen „dedizierten“ Server, der einiges mehr leistet und mir allein zur Verfügung steht — benutze den aber auch mit mehreren Leuten und noch einigen Projekten.

Darüberhinaus gibt es noch die sogenannten Managed Server, bei denen der Dienstleister einige der hier beschriebenen Tätigkeiten übernimmt. Das ist aber mit Einschränkungen bei der Softwareinstallation verbunden, und außerdem will er dann auch Geld dafür. Schließlich ist es auch noch möglich, nur Platz in einem Serverschrank zu mieten und dort eigene Hardware hineinzustellen. All das ist nichts für uns.

Software wählen

Als Betriebssystem bestellen wir Debian Linux — Minimal und ohne Plesk, ihr sollt ja schließlich lernen, was da im Hintergrund passiert.

Bestellformular

Nach der Bestellung dauert es einige Zeit (bei virtuellen Servern nur wenige Minuten bis Stunden), dann kommt eine Mail:

Der Server ist fertig.

Die erste Verbindung

Um jetzt irgendwas mit dem Server machen zu können, brauchen ein Terminalprogramm und einen ssh-Client. ssh ist ein Protokoll, mit dem verschlüsselt Tastatureingaben zum Server hin und die Textausgabe zum Client zurück übertragen werden (mehr dazu später). Das klingt erst einmal nach reinem Befehle tippen, aber schon seit der Zeit der Textterminals gibt es auch ausgeklügelte Benutzerinterfaces, die darauf basieren. Das werden wir später noch sehen.

Die Macuser unter Euch müssen nichts installieren, für die Windowsbenutzer empfehle ich PuTTY.

Log geht’s, wir verbinden uns jetzt zum ersten mal zu unserer nagelneuen Außenstelle: auf dem Mac öffnet das Programm „Terminal“ und gebt ein ssh root@[die Adresse aus der Mail], unter Windows öffnet PuTTY und verbindet Euch zu der Adresse aus der Mail:

PuTTY-Startfenster

Jeder der ssh-Clients wird beim ersten Kontakt zum neuen Server eine Sicherheitsfrage nach dem „RSA-Fingerabdruck“ stellen. Im Moment haben wir keinen Grund anzunehmen, dass es sich nicht um den richtigen Server handelt, drum sagen wir einfach ja. Es passiert jetzt etwa folgendes (keine Sorge wenn das Passwort beim Tippen nicht zu sehen ist, auch nicht als ******, das gehört so):

Mac:~ dentaku$ ssh root@78.47.144.44
The authenticity of host '78.47.144.44 (78.47.144.44)' can't be established.
RSA key fingerprint is 6e:8a:dc:13:63:6c:03:8e:5a:45:cb:3e:13:99:36:f6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '78.47.144.44' (RSA) to the list of known hosts.
root@78.47.144.44's password:
Linux Debian-60-squeeze-64-minimal 2.6.32-5-amd64 #1 SMP Mon Feb 25 00:26:11 UTC 2013 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@Debian-60-squeeze-64-minimal ~ #

So, jetzt seid Ihr auf einem Unix-System. Herzlich Willkommen! Ändert erstmal das Passwort durch Eingeben des Befehls passwd (mit der Return-Taste abschicken und den Anweisungen folgen, es sind wieder keine ****** für das Passwort zu sehen, gewöhnt Euch dran).

root@Debian-60-squeeze-64-minimal ~ # passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@Debian-60-squeeze-64-minimal ~ #

Im nächsten Kapitel folgt eine ausführliche Rundtour durch Unix bzw. Linux. Für heute verlassen wir den Server mit dem Befehl exit.

Freitag, 14. März 2008
[*]

Wir drehen ein WordPress-Theme

, 11:15

Bei Dackworld habe ich mal versprochen, am folgenden Beispiel vorzuführen, wie einfach man mit etwas PHP/CSS ein vorhandenes WordPress-Theme an seine Bedürfnisse anpassen kann. Das hat jetzt etwas gedauert, aber heute drehen wir ein WordPress-Theme um 90° (mit anderen Worten: wir machen aus der Seitenleiste einen Fußleiste).

Ganz wichtig ist dabei zuerst, daß man sich die Lizenz ansieht, zu der der ursprüngliche Autor die Nutzung seines Themes zuläßt. GPL und CC-Lizenzen ohne ND-Klausel sollten die sichere Seite sein. Wir nehmen als Beispiel das Standard-Theme der WordPress-DE-Edition. Das basiert auf Kubrick, und mindestens die Hälfte aller anderen Themes (die man so runterladen kann) tun das auch. Was wir hier machen läßt sich auf diese daher leicht übertragen. Als „Opfer“ habe ich unter www.steinhobelgruen.de/wordpress/ eine zweite WordPress-Installation, in der ich neue Themes und Plugins immer zuerst ausprobiere.

Als nächste Voraussetzung empfehle ich das Firebug-Plugin für Firefox, mit dem man (neben anderen Dingen) sehr komfortabel sehen kann, welchem Abschnitt des HTML-Dokuments ein auf dem Bildschirm dargestelltes Element entspricht.

Firebug

Dann sehen wir uns mal die Dateien in einem Theme an, damit wir das Element auch zur Bearbeitung wiederfinden:

dentaku@charon:.../wp-content/themes/default_90$ ls
404.php         comments-popup.php  header.php  page.php        searchform.php
archive.php     comments.php        images      rtl.css         sidebar.php
archives.php    footer.php          index.php   screenshot.png  single.php
attachment.php  functions.php       links.php   search.php      style.css
dentaku@charon:.../wp-content/themes/default_90$

In der WordPress-Dokumentation gibt’s eine gute Übersicht über die „Template Hierarchy„. Dort steht genau, welche dieser Dateien in welchem Fall geladen und abgearbeitet wird. Für unsere Aufgabe interessant sind davon nur die folgenden beiden Aspekte:

  • Dort, wo in den einzelnen Seitentemplates (index.php, single.php,…) das Template Tag get_sidebar(); steht, da wird die Datei sidebar.php eingefügt (in Wirklichkeit passieren noch ein paar andere Sachen, aber so genau reicht uns das erstmal).
  • Alle Formatanweisungen befinden sich in der Datei style.css (rtl.css ist ein Sonderfall für Sprachen, die von rechts nach links geschrieben werden).

Gut, dann machen wir jetzt noch einen letzten Test: wir sehen uns die Seite mal ohne CSS-StyleSheet an (in Firefox kann man das im Menü „Ansicht“->“Webseiten-Stil“->“Kein Stil“ ausschalten):

ohne CSS

Aha, von der Ausgabereihenfolge her kommt die Sidebar also ohnehin nach den Artikeln. Das ist gut. Ein Blick in Firebug und schnell ist herausgefunden, daß die komplette Sidebar in einem <div id=“sidebar“/> liegt, das nur durch CSS rechts vom Rest positioniert ist:

div

Das sieht im style.css so aus:

#sidebar {
        padding: 20px 0 10px 0;
        margin-left: 545px;
        width: 190px;
}

Dieses div-Element steht deshalb rechts am Rand, weil der eigentlich Seiteninhalt in einem <div id=“content“ class=“narrowcolumn“ /> links „schwebt“ (wer jetzt nicht weiß was das bedeutet, der kann hier oder da ein wenig über CSS lernen):

.narrowcolumn {
        float: left;
        padding: 0 0 20px 45px;
        margin: 0px 0 0;
        width: 450px;
}

mehr…

Mittwoch, 5. März 2008
[*]

Subversion mit svn+ssh-Protokoll und Eclipse

, 13:45

Diese Anleitung muß ich für ein paar Kollegen im Moment sowieso schreiben, und vielleicht interessiert das ja noch irgendjemanden. Bevor ich also wieder so ein unkommunikatives Word-Dokument rumschicke:

1. Subclipse

Im Gegensatz zu CVS wird der Nachfolger Subversion von Eclipse (noch?) nicht direkt unterstützt — dabei hat Subversion viele Vorteile (z.B. atomare Transaktionen und Versionierung über Verschiebungen und Umbenennungen hinweg). Zuerst müssen wir das deshalb in Form eines Plugins nachrüsten: Subclipse gibt es bei tigris.org, und eine Installationsanleitung ist auch dort.

So, jetzt kann man in Eclipse die „SVN Repository Exploring perspective“ öffnen und dort die Adresse seines Repositories eintragen.

Add SVN Repository

Auf UNIXoiden Betriebssystemen wie Linux, Solaris und MacOS X kann man den folgenden Schritt überspringen. Dort ist ssh in der Regel installiert, im Pfad und kann als Tunnel gestartet werden ohne Fensterchen aufzumachen.

2. ssh-Tunnel aufbauen

Subversion unterstützt einen Haufen unterschiedlicher Protokolle. Neben dem direkten Dateizugriff auf das Repository und einem eigenen Protokoll für lokale Aufrufe unterstützt es WebDAV über http(s) durch ein Apache-Modul und kann über verschiedene Remote-Shell-Protokoll tunneln. Wenn man die Repositories (so wie wir) auf einem UNIX-Server lagert und keine Lust hat, sich mit dem svnDAV-Apache-Modul und seiner zweiten Benutzerverwaltung herumzuschlagen, dann ist das svn+ssh-Protokoll eine günstige Wahl. Leider kommt Windows ohne ssh-Client (im Repository Explorer sieht man unklare Fehlermeldungen wie „Das Verzeichnis ist nicht da.“), deshalb muß Abhilfe geschaffen werden. mehr…