[ENC]BladeXP's Blog

Was die Welt nicht alles braucht!

Firefox Datenbanken komprimieren

geschrieben von encbladexp am 06.01.2009 19:23:00.

Seit einiger Zeit nimmt Firefox ja für mehr und mehr Sachen sog. SQLite Datebanken. Diese sind zwar recht praktisch, werden aber mit der Zeit doch recht groß, und der Firefox natürlich dadurch relativ lahm.

Jemand vom Ubuntuusers Webteam hat mir daher folgenden Tip gegeben:

for f in ~/.mozilla/firefox/*/*.sqlite; do sqlite3 $f 'VACUUM;'; done

Der Befehl sorgt dafür das SQLite die Datenbanken von Sachen befreit die schon längt gelöscht wurden, wie viele andere Dateibasirende Datenbanken gibt auch SQLite seinen schon belegten Speicher nicht einfach so frei. Erst durch VACUUM wird das erledigt, welches Firefox dummerweise nicht selbst macht.

Zuvor sollte Firefox unbedingt beendet werden!

Das hat mir bei meinem Firefox ca. 30 MByte mehr freien Platz gebracht, und natürlich hakt Firefox nichtmehr so sehr wenn man mal in der History rumwühlt.

Internet Explorer 7 kann nicht installiert werden

geschrieben von encbladexp am 05.01.2009 21:12:00.

Wer kennt es nicht, man muss mal (für einen Kunden, oder ggf. sogar einen Freund) Windows installieren. Und was fällt einem mal wieder auf: Fehlermeldungen unter Windows haben nicht unbedingt was mit dem Problem zu tun.

Aktuelles Beispiel von heute, ein frisch installiertes Windows XP Professional mit Service Pack 3. Der Kunde wollte gleich mal iTunes und auch den Adobe Reader (Version 9) drauf haben. Nachdem der Kunde zufrieden war kam noch der Rest an sinnvoller Software sowie natürlich die Windows Updates. Bei den Windows Updates ist ja seit einiger Zeit auch der Internet Explorer in Version 7 dabei.

Heute wollte sich dieser aber auf Teufel komm raus nicht installieren lassen, es kam nur die Fehlermeldung Installation von Internet Explorer 7 ist fehlgeschlagen. Auf den Desktop legte mir dessen Installer eine HTML Datei ab, welche wiederum auf diesen Microsoft KB Artikel verlinkte. Da steht zwar viel drin, aber die eigentliche Lösung war nicht dabei.

Gottseidank gibt es Google, damit war das Problem in wenigen Minuten gefunden: Der Zuvor Installierte Adobe Reader stört beim Upgrade vom Internet Explorer einfach, ich hab keine Ahnung ob Microsoft oder Adobe schuld ist. Aber nachdem der Adobe Reader von der Platte war ging das Upgrade ohne Murren!

Windows XP + AHCI + ICH10R

geschrieben von encbladexp am 30.12.2008 16:48:00.

Wer kennt es nicht, jedes neue Board verfügt ja über AHCI. Allerdings hat man keine große Lust an der Installations-CD von Windows XP rumzufummeln, ein Floppy Laufwerk hat man ohnehin nicht mehr in der Nähe.

Hier eine kleine Anleitung wie man AHCI nachrüsten kann.

Vorbereitungen

  • Windows XP (Home oder Professional ist egal) muss installiert sein, hierzu AHCI oder RAID im BIOS abschalten
  • Man hat folgende Treiber von Intel heruntergeladen:
    • 32-bit Floppy Configuration Utility
    • Intel(R) Matrix Storage Manager

Es ist ratsam vor der Umstellung ein Backup zu machen!!!

Installation

  1. Das 32-Bit Utility auf den Desktop entpacken
  2. In das neue Verzeichniss wechseln
  3. Die Datei IaStor.sys nach %SystemRoot%\System32\Drivers\ kopieren
  4. Mit der Rechten Maustaste diese beiden Dateien installieren:
    • iaAHCI.inf
    • iaStor.inf
  5. Den Geräte-Manager öffnen (Systemsteuerung»System»Hardware»Gerätemanager)
  6. Bei allen Intel Storage Controllern (nicht den IDE Krams) folgende Schritte durchführen:
    1. Treiber aktualisieren
    2. Nein, keine Verbindung mit Windows Update
    3. Keine Suche, Ort selbst angeben
    4. Datenträger
    5. Durchsuchen (dort hin wechseln wo sich die iaAHCI.inf befindet)
    6. Aus der Liste den passenden Controller auswählen und bestätigen, den Nachfolgenden Hinweis mit Ja, ich will! bestätigen. Den Neustart des Systems aber verschieben.
  7. Wenn alle Controller so umgestellt wurden kann das System neu gestartet werden, aber: Unbedingt verhindern das Windows startet und ins BIOS gehen. Jetzt kann der SATA Controller auf AHCI umgestellt werden und das System sollte ordentlich booten. In der Regel benötigt man 2 reboots bis Windows der Meinung ist alles an neuer Hardware erkannt zu haben.

Abschlussarbeiten

Jetzt sollte man noch den Intel Matrix Storage Manager Installieren, was als Diagnosetool u.a. sehr praktisch sein kann.

Fazit

Es geht auch einfach, im Internet gibt es viele Anleitungen die erklären wie es geht. Meistens soll man hier mal nen Registry-Key ändern, dort mal ne Datei löschen usw... was zumindest in diesem Fall mehr als unnötig war.

Deswegen: Bevor ihr irgendwas 1:1 von wo runterkopiert, prüft doch erstmal ob es nicht auch einfacher geht.

Evolution: Fehler bei Ordner wird gesäubert

geschrieben von encbladexp am 13.12.2008 16:34:00.

Heute habe ich folgendes Bemerkt als ich Userdaten von einer Ubuntu Gutsy Installation unter Intrepid wiederherstellt habe. Und zwar bekommt man in Evolution wenn man STRG+E (Dieser Shortcut steht für Ordner Säubern) drückt die Fehlermeldung:

  Fehler bei Ordner wird gesäubert.
  Zusammenfassung und Ordner stimmen nicht überein, sogar nach einer Synchronisierung

Im Internet wird oft geraten doch einfach alles aus dem Posteingang in einen neuen Ordner zu sichern und dann den Posteingang zu löschen. Das ist natürlich sehr umständlich, gerade wenn man doch ein paar mehr Ordner hat. Wenn man unter ~/.evolution/mail/local/ schaut findet man dort etliche Dateien. Und zwar für jeden Mailordner eine Datei die so heist wie der Ordner selbst. Dann gibt es für jede Dieser Dateien noch einen Ordner mit dem Namen Ordnername.sbd und dann noch diverse Dateien wie z.B. Ordnername.ev-summary.

Man sollte natürlich vor dem Bearbeiten der Ordnerstruktur den Evolution Data Server mit evolution --force-shutdown beenden! Desweiteren sollte man vor jeder Änderung an der Ordnerstruktur von Evolution ein Backup machen!!!

Man sollte für jeden Unterordner ab ~/.evolution/mail/local/ das hier machen:

rm *.ibex* *.cmeta *.ev-summary*

Dadurch werden die Ordnermetadaten gelöscht, Evolution kümmert sich beim nächsten Start darum das alles wieder passt. Nun wird auch STRG+E wieder funktionieren.

Corsair Flash Voyager GT 16GB

geschrieben von encbladexp am 01.12.2008 18:13:00.

Heute habe ich endlich mal meinen neuen USB Stick bekommen, einen Corsair Flash Voyager GT mit 16GB Kapazität. Das erste was ich getestet habe war natürlich die Geschwindigkeit, den wo GT drauf steht sollte ja auch GT drin sein.

Beim Lesen schafft der Stick laut sudo hdparm -tT --direct /dev/sdf diese Werte:

/dev/sdf:
 Timing O_DIRECT cached reads:    70 MB in  2.04 seconds =  34.36 MB/sec
 Timing O_DIRECT disk reads:  104 MB in  3.05 seconds =  34.11 MB/sec

Das sind relativ brauchbare Werte würde ich mal so sagen.

Gerade beim schreiben sind ja USB Sticks gerne mal langsam, auch das habe ich mit sudo dd if=/dev/zero of=/dev/sdf bs=4096 getestet, und kam dabei auf diese Werte:

3964929+0 Datensätze ein
3964928+0 Datensätze aus
16240345088 Bytes (16 GB) kopiert, 834,167 s, 19,5 MB/s

Würde ich Awards verteilen, der Corsair Flash Voyager GT würde einen bekommen, das einzige was etwas stört ist der Preis von um die 48€. Für das Geld bekommt man aber wirklich was gutes!

Hochzeit: Squid 3 und Active Directory

geschrieben von encbladexp am 24.11.2008 17:16:00.

Nein, ich heirate nicht. Aber ich habe Squid 3 erfolgreich mit einem Active Directory verkuppelt.

Vorbereitungen

Unter Windows muss folgendes erledigt sein:

  • Proxy Server muss im Microsoft DNS Dienst bekannt sein
  • Proxy Server muss als "Trusted Host" im AD angelegt sein

Der Proxy Server sollte entweder eine "richtige" statische IP, oder auch eine Reservierung via DHCP haben. Auch muss die Uhrzeit mit NTP Synchron gehalten werden, den Kerberos ist sehr pingelig was das angeht!

Auf der Linux Seite benötigt man natürlich den root-Account, oder ähnliche Rechte (sudo usw...). Alle nachfolgenden Befehl müssen als root eingegeben werden!

Proxy Server

Auf dem Proxy Server selbst braucht man folgende Pakete:

  • krb5-user
  • squid3
  • winbind

Kerberos Setup

Die Kerberos Konfigurationsdatei (/etc/krb5.conf) sollte so aussehen:

[libdefaults]
 default_realm = DOMAIN
[realms]
 DOMAIN = {
  kdc = 192.168.1.1
  admin_server = 192.168.1.1
 }
[domain_realm]
.domain = DOMAIN
[appdefaults]
pam = {
 ticket_lifetime = 1d
 renew_lifetime = 1d
 forwardable = true
 proxiable = false
 retain_after_close = false
 minimum_uid = 1
}

In meinem Fall war DOMAIN der Domänenname und 192.168.1.1 dessen IP-Adresse. Es ist natürlich wichtig das man dafür eine Funktionierende Namensauflösung hat, Optimal ist es wenn man dafür den DNS Server vom AD nimmt. Da sollte ja ohnehin alles drin sein was man braucht.

Natürlich ist für das Kerberos Setup ein Test nicht schlecht:

kinit user@DOMAIN

Man wird nun nach dem Passwort für den AD-User user gefragt. Wenn alles geklappt hat bekommt man von klist folgende Ausgabe:

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: user@DOMAIN

Valid starting    Expires           Service principal
11/26/08 20:57:19 11/27/08 06:57:20 krbtgt/DOMAIN@DOMAIN
        renew until 11/27/08 20:57:19

Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached

So sieht man das man erfolgreich ein TGT (eine Art "Chef-Ticket") bekommen hat, mit diesem könnte man dann Ticket für einzelne Dienste anfordern, was uns aber jetzt nicht weiter interessiert.

Samba / Winbindd Setup

Nachdem jetzt Kerberos läuft, können wir an den nächsten Schritt gehen: Samba (genauer Winbind) will jetzt Domänenmitglied werden, und das geht mit so einer /etc/samba/smb.conf:

[global]
workgroup = DOMAIN
realm = DOMAIN
password server = HOSTNAME.DOMAIN
security = ADS
winbind refresh tickets = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind cache time = 10
winbind use default domain = yes

password server muss der DNS Name vom AD Server sein. Der Rest dürfte selbsterklärend sein. Nun kann man der Domäne beitreten:

net ads join -U user@DOMAIN

Dannach kann man den winbindd starten, was wie gewohnt über

/etc/init.d/winbbind start

geht. Ob dies funktioniert hat kann man mit wbinfo -t prüfen:

checking the trust secret via RPC calls succeeded

Dann kann man auch noch die Gruppen im AD anzeigen lassen, dies geht mit wbinfo -g:

gruppe1
gruppe2
gruppe3
usw...

Damit Squid (genauer ntlm_auth) auch was mit Winbind Anfangen kann muss das Verzeichnis /var/run/samba/winbindd_privileged der Gruppe windbind_priv gehören, und von dieser Lesbar sein.

Squid Setup

Jetzt kommt der letzte Schritt, und zwar die Anpassung der /etc/squid3/squid.conf, hier gehört folgendes noch mit rein:

auth_param ntlm program /usr/bin/ntlm_auth --require-membership-of=DOMAIN\\GRUPPE --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 10
auth_param basic program /usr/bin/ntlm_auth --require-membership-of=DOMAIN\\GRUPPE --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Domain Proxy Server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
authenticate_cache_garbage_interval 10 seconds
authenticate_ttl 0 seconds
acl AuthorizedUsers proxy_auth REQUIRED
http_access allow all AuthorizedUsers

Von dem Parameter cache_effective_user bzw. cache_effective_group sollte man die Finger lassen (die Zeile sollte also ein Kommentarzeichen am Anfang haben), da sonst ntlm_auth nicht mit den nötigen Rechten läuft.

Es ist wichtig das der User proxy auch in der Gruppe winbindd_priv ist:

sudo adduser proxy winbindd_priv

Mit diesen Einträgen erreicht man das SSO bevorzugt wird, jedoch auch noch der alte Benutzername/Passwort Dialog möglich ist. Dies ist vor allem dann sinnvoll wenn man nicht nur NTLM fähige Clients hat. Ich habe bei der Gelegenheit auch gleich eingestellt das nur Mitglieder der AD Gruppe GRUPPE das Recht haben ins Internet zu gehen, was gerade in großen Firmen gewünscht wird.

Jetzt kann man mit /etc/init.d/squid3 start den Squid Proxy starten, und kann einen Test unter Windows machen (z.b. mit dem Internet Explorer). Das der Proxy Server auch schön auf den Clients eingetragen wird, davon gehe ich jetzt einfach mal aus.

Umstieg auf Gigabit LAN

geschrieben von encbladexp am 13.11.2008 17:20:00.

Heute bin auch ich endlich auf Gigabit Ethernet (oder LAN, wie man will) umgestiegen, was im Endeffekt nichts anders heist als das mein Netgear FS108 Fast Ethernet Switch einem Netgear GS108v2 Gigabit Ethernet Switch weichem musste. Zum neuen Switch kann ich kaum viel sagen, ist ja nur ein Unmanaged Switch. Was aber sofort auffällt ist das er wesentlich kleiner ist, und deutlich weniger LED's hat. Was ich eigentlich schade finde, den die extra Activity LED's beim FS108 werde ich wohl vermissen. Abgesehen davon ist mir nichts weiter Neagtiv aufgefallen, naja bis auf das es Netgear nicht schafft eine Bohrschablone beizulegen :-(

Von der Performance her wollte ich natürlich gleich mal wissen was mein Flepo den so aus seinen Gigabit Slots rausholt:

  • FS108 » 10,82 MByte / Sekunde
  • GS108 » 21,32 MByte / Sekunde

Das heist also der Flepo ist definitiv zu langsam (Das theoretische Maximum wären übrigens 125 MByte pro Sekunde Brutto) um ein Gigabit Ethernet auszulasten, was bei der lahmen CPU vom Flepo allerdings nur wenig verwunderlich ist! Auch darf man nicht vergessen das die Handelsüblichen NAS Systeme (wo Privatkunden angeboten bekommen) auch ungefähr in dieser Leistungsklasse Operieren.

RAID

geschrieben von encbladexp am 12.11.2008 19:01:00.

Wer kennt es nicht, man kauft ein neues Board und es kann sogar RAID. Oder man hat ein ordentliches Betriebssystem, auch das kann RAID. Und dann gibt es noch so ein paar verrückte die für mehrere 100€ einen RAID-Controller verkaufen wollen! Wer denkt RAID == RAID, der irrt gewaltig.

Hardware RAID

Ein Hardware RAID ist die Königsklasse was Performance, Leistung, Features und auch Preis angeht. Hardware RAID Controller haben in der Regel einen eigenen Leistungsfähigen CPU. Diese Controller sind allerdings eher weniger was für den Heimrechner, und das nicht nur weil sie einfach zu Teuer sind: Oft fehlt dem Mainboard einfach der nötige Steckplatz (PCI-X wird man kaum in einem SOHO Rechner finden, um nur mal ein Beispiel zu nenne). Auch schafft es diese Art der RAID-Controller sogar nen Kurzschluss auf den Datenleitungen zu ertragen, ohne gleich den Geist aufzugeben.

Vorteile

  • Gute Performance
  • Viele Features
  • Hohe Ausfallsicherheit
  • Das Betriebssystem bekommt nichts vom RAID mit, sondern bekommt das fertige Array als Block Device nutzbar
  • Unabhängig vom Installierten Betriebssystem, da Treiber für alle gängigen Betriebssystem vorliegen

Nachteile

  • Platten nicht ohne einen Ersatzcontroller (oder zumindest einem der Kompatibel ist) nutzbar
  • Teuer

Software RAID

Ein Software RAID ist das was anspruchsvollere Betriebssystem gleich mit dabei haben. Das RAID wird komplett im Hauptprozessor berechnet, d.h. man merkt es etwas an der Performance. Auch hat es nicht jedes Feature eines Hardware RAID Controllers.

Vorteile

  • Benötigt keine extra Treiber für einen RAID Controller
  • Verschiedene Datenträgertypen (SATA und ATA z.B.) können gemischt werden
  • Unabhängig (bis auf die Platten) von einer bestimmten Hardware

Nachteile

  • Langsamer als ein Hardware RAID
  • Ausfallsicherheit niedriger, da in die meistens Boards bei nem Plattenfehler der den Bus zuknallt einfach dichtmachen und nichts mehr geht
  • Abhängig vom Betriebssystem, ein Linux RAID wird nicht mit BSD oder gar Windows laufen

Fake RAID

Und dann gibt es noch die Sagenumwogenen Fake RAID Controller. Nur was ist ein Fake RAID eigentlich? Fangen wir mal mit den verschiedenen Namen an die sowas haben kann:

  • FakeRAID
  • DriverRAID
  • DummyRAID

Leider muss ich euch jetzt enttäuschen, das ist kein Hardware RAID. Sondern nicht anderes wie ein Software RAID wo man nen Treiber für braucht, und natürlich noch die Hardware von $HERSTELLER. Und genau da ist auch das ersten Problem, den was ist wenn mein Board hinüber ist? Bei Hardware RAID kann ich schauen das ich nen neuen Controller bekomme der Kompatibel ist, oder aber der alte ist noch OK. Bei Software RAID baue ich einfach die Platten in eine andere Kiste, fertig. Nicht so einfach bei nem FakeRAID, da gibt es viele Lustige Sachen die sich die Hersteller da einfallenlassen haben:

  • RAID Konfiguration wird auf dem EEPROM/Flash vom Board gespeichert, d.h. selbst ein neues Board kann ggf. kein RAID mehr finden (sowas ist heute aber nichtmehr üblich, wird aber der Vollständigkeit halber erwähnt).
  • RAID geht nur mit Generation X vom Chipsatz Y. Das ist ne doofe Situation, ein Board für Sockel 478 bekommt man nur noch bei eBay, ob das mit den alten Platten aus dem RAID noch was anfangen kann ist dafür aber wie Lotto spielen.

In der Praxis haben solche FakeRAID's so schöne Namen wie "Intel Matrix RAID", gemeint ist in der Regel so gut wie Ausnahmslos das RAID welches ein Mainboard mitbringt!

Vorteile

  • Gäbe es Treiber für so viele Betriebssystem wie bei Hardware RAID Controller wäre es nett, doch das ist leider nicht der Fall!

Nachteile

  • Kein echtes Hardware RAID
  • Unterstützung für andere Betriebssysteme als Windows oft Fraglich
  • Bindung an einen Hersteller, und noch schlimmer vielleicht sogar eine Board Generation

Fazit

Wer ein RAID im Server braucht, und das Geld hat sollte ein Hardware RAID kaufen, aber dann bitte dran denken nen Backup-Controller zu haben, den sonst ist man bei nem Controllerausfall der Gelackmeierte! In allen anderen Fällen, und wenn man nicht zwingend eine Unterstützung für mehr als ein Betriebssystem braucht ist Software RAID der Weg zum Ziel. Die Fake RAID's, sollte man aussen vor lassen, die laufen meistens eh nur unter Windows oder sehr umständlich (dmraid lässt grüßen) mit Linux!

Imapbiff

geschrieben von encbladexp am 09.11.2008 18:52:00.

Wer kennt es nicht, man will mal schnell wissen ob es neue Mails in den wichtigsten IMAP Ordnern auf dem Server gibt. Doch leider gibt es (AFAIK) keinen brauchbaren biff Klienten für die Konsole, schade für Leute wo nur mal E-Mail's checken wollen, dafür aber kein X11 brauchen möchten!

Vor ein paar Tagen Stand ich auch vor diesem Problem, da ich sowieso mutt als Mail Client verwende und Python mag, bot es sich an sowas selbst zu schreiben.

Installation

Keine Angst, es muss nix Großartig installiert werden. An die neueste Version von imapbiff.py kommt man über Subversion:

svn co http://svn.stefan-betz.net/imapbiff

Nun hat man im Ordner imapbiff/trunk schon das ganze Programm imapbiff.py welches man sich nach belieben wohin kopieren kann.

Konfiguration

Beim ersten Start legt imapbiff Automatisch eine Konfigurationsdatei mit dem Namen ~/.imapbiffrc. Diese sieht so aus:

[main]
username = youruser
ssl = yes
password = securepassword
port = 993
server = imap.example.com

Die Felder sind IMHO Selbsterklärend und müssen an die Eigene Situation angepasst werden.

Verwendung

Das ganze sieht dann so aus wenn man imapbiff.py das 2. mal startet:

0 NEW and 8 UNSEEN Mail(s) in Mailinglisten/Inyoka
1 NEW and 1 UNSEEN Mail(s) in Mailinglisten/Ubuntu-LoCo
2 NEW and 2 UNSEEN Mail(s) in INBOX

Hinweis: imapbiff.py fragt nur IMAP Ordner nach neuen Mails ab die "Subscribed" (Abonniert) sind, andere Ordner werden nicht Berücksichtigt!

Bugs

Das Programm ist noch nicht richtig fertig, und es fehlt noch so einiges an Features, folgendes müsse noch gemacht werden:

  • Imapbiff zählt falsch, neue und ungelesene Nachrichten (sieht man am Beispiel) haben z.b. den selben Zähler.
  • Support für mehrere IMAP Konten (Erledigt in SVN Revision 7)
  • Support für Kommandozeilenparameter
  • Support um alle Ordner abzufragen
  • imapbiff.py stolpert aktuell über Ordner die zwar Abonniert sind, die es aber nicht mehr gibt (IMHO eigentlich ein Bug im IMAP Server, kann auch sein das dies nur bei GMX so ist)

Abgesehen davon funktioniert es schon recht brauchbar. Wer Verbesserungsvorschläge oder Patches hat die das ein oder andere Defizit beheben kann mir diese gerne an info@stefan-betz.net mailen.

SVN und Apache

geschrieben von encbladexp am 09.11.2008 18:35:00.

SVN über Apache 2 auf einem Debian oder Ubuntu System einzurichten ist kein großer Akt. Aber dafür gibt es schon massig schlechte Anleitungen, u.a. von Leuten die noch nie was vom Debian-Way gehört haben. Da wird kein a2enmod oder so modernes Zeug empfohlen, nein da wird noch schön an der /etc/apache2/httpd.conf rumeditiert.

Einfacher, und vor allem schneller geht es natürlich wenn man diesen (oder einen ähnlichen) weg befolgt.

Installation

Ich geh mal davon aus das der Apache Webserver schon installiert und für den "normalen" Betrieb Konfiguriert wurde. Nun fehlen nur noch die Pakete:

  • libapache2-svn
  • subversion

Vorbereitungen

Meine Repositories liegen unter /var/lib/svn, was auch sehr sinnvoll ist. Auf zusätzliche Verzeichnisse unterhalb vom /-Dateisystem sollte man absehen, den dies werden gerne mal bei Backups vergessen, und sich auch nicht gerade FHS Konform.

Der erste Schritt besteht also darin dieses Verzeichnis anzulegen (Debian Anwender sollten wenn sie eh schon root sind einfach das sudo weglassen):

sudo mkdir /var/lib/svn

Wichtig sind noch die Dateirechte (und Eigentümer!!!) für dieses Verzeichnis, den der Apache Webserver muss darauf sowohl lesen als auch schreiben dürfen. Dies stelle ich mit folgendem Befehl sicher:

sudo chown -R www-data:www-data /var/lib/svn

Natürlich muss man das immer machen wenn man in diesem Verzeichniss was verändert (Ausnahme ist natürlich es wurden durch den Webserver geändert, oder mit dem Pseudouser www-data), da sonst ggf. der Dateieigentümer nicht mehr passt!

Konfiguration

Jetzt geht es an die Konfiguration vom Apache.

Notwendige Module

Nachfolgende Module Apache Module sind nötig damit das ganze auch funktioniert:

auth_basic
authz_default
authn_file
authz_host
authz_user
dav
dav_svn

Dies sollte man einfach mit a2enmod machen. In der Regel sind all diese Module aber schon nach der Installation geladen!

Virtual Host Konfiguration

Nun geht es (in meinem Fall) an die Datei /etc/apache2/sites-available/svn, dies ist der Virtual Host für meine SVN Subdomain:

<VirtualHost *>
        ServerName svn.example.com
        ServerAdmin admin@example.com
        <Location />
         DAV svn
         SVNParentPath /var/lib/svn
         AuthType Basic
         AuthName "Subversion Repository Access"
         AuthUserFile /etc/apache2/svn.htpasswd
         <LimitExcept GET PROPFIND OPTIONS REPORT>
          Require valid-user
         </LimitExcept>
        </Location>
        ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined
        ServerSignature On
</VirtualHost>

Diese Virtual Host kann man nun mit a2ensite svn aktivieren.

Benutzerverwaltung

Natürlich muss man noch die in der Virtual Host Konfiguration angegeben htpasswd Datei anlegen und mit Benutzern füllen:

sudo htpasswd -c /etc/apache2/svn.htpasswd benutzer
sudo chown www-data:www-data /etc/apache2/svn.htpasswd

Weiter Benutzer kann man ebenfalls mit htpasswd anlegen:

sudo htpasswd /etc/apache2/svn.htpasswd neuerbenutzer

Nun kann der Apache Webserver neu gestartet werden:

sudo /etc/init.d/apache2 force-reload

Repositories

Das bringt natürlich alles noch nichts ohne irgendwelche Repositories zu haben. Das Anlegen eines Repositories geht wie gewohnt über:

sudo -i
sudo -u www-data svnadmin create /var/lib/svn/dasisteinrepo
exit

Hat man schon ein anderes Repository, welches man bisher z.b. über file: genutzt hat kann man hiermit

svnadmin dump file:///pfad/zum/repository | gzip --best > svn.dump.gz

einen Dump vom alten Repository erzeugen, und mit

zcat svn.dump.gz | svnadmin load file:///var/lib/svn/dasisteinrepo

in das neue Repository laden. Hier bitte wieder daran denken das die Dateirechte noch passen!

Mit diesem Repository kann man wie mit jedem anderen Arbeiten, nur das man jetzt über http darauf zugreift, ein Checkout würde z.B. jetzt so aussehen:

svn co http://svn.example.com/dasisteinrepo

Sobald man versucht was am Repository zu ändern bekommt man eine Aufforderung wegen Benutzer & Passwort. Hat man keine Zugangsdaten kann man nur Auschecken.

Sicherheit

Es gibt zu dieser Konstellation aber noch ein paar Punkte bezüglich der Sicherheit:

  • Jeder Benutzer (valid-user) kann jedes Repository bearbeiten » Abhilfe schafft hier die Dokumentation vom Apache, in dem man z.b. Gruppen usw. anlegt.
  • Die Übertragung ist nicht Verschlüsselt, und daher für tcpdump usw.. kein Problem! Es ist sinnvoll bei wichtigen Sachen auf HTTPS auszuweichen!