Weave Sync und Reg Server Setup unter Debian Lenny

Update vom 16.4.: Der Artikel ist schon einigermaßen veraltet. Daher würd ich den nicht mehr so genau nehmen. Einige Anmerkungen und für einige Probleme haben engagierte Nutzer Kommentare geschrieben.

Wer wie ich mal einen Weave Sync Server unter Debian aufsetzen will, um einen eigenen Server zu haben mit dem das neue Firefox Sync Addon synchronisiert, dem wird die folgende Anleitung helfen.

Voraussetzung für die Anleitung ist ein installierter Apache2 mit mindestens php 5.1, php-json, php-mysql und eine MySQL Installation.

Zunächst hab ich in /var/www ein neues Verzeichnis erstellt und die Server (Sync und Reg Server heruntergeladen, beides entpackt und die Ordner umbenannt:

mkdir weave && cd weave
wget http://hg.mozilla.org/services/sync-server/archive/tip.tar.gz
wget http://hg.mozilla.org/services/reg-server/archive/tip.tar.gz
tar xfz tip.tar.gz
tar xfz tip.tar.gz.1
mv reg-server-828798f908a0/ reg-server
mv sync-server-55d5049f6eeb/ sync-server

Als nächstes hab ich erstmal einen neuen Vhost für den Apache angelegt und entsprechend der beiden Anleitungen (Sync und Reg) konfiguriert. Die sieht nun so aus:

<VirtualHost myserver.de:80>
        ServerName myserver.de
        Redirect / https://myserver.de
</VirtualHost>
<VirtualHost myserver.de:443>&lt;br />
        SSLEngine On
        SSLCertificateFile /etc/apache2/ssl/server-cert.pem
        SSLCertificateKeyFile /etc/apache2/ssl/server-key.pem
        ServerAdmin webmaster@myserver.de
        ServerName myserver.de
        DocumentRoot /var/www/weave
        Alias /1.0      /var/www/weave/sync-server/1.0/index.php
        Alias /user/1.0 /var/www/weave/reg-server/1.0/index.php
        Alias /user/1   /var/www/weave/reg-server/1.0/index.php
        Alias /misc/1.0/captcha_html    /var/www/weave/reg-server/1.0/captcha.php
        Alias /misc/1/captcha_html      /var/www/weave/reg-server/1.0/captcha.php
        Alias /weave-registration-static        /var/www/weave/reg-server/1.0/static
        Alias /weave-password-reset             /var/www/weave/reg-server/1.0/forgot_password.php
        CustomLog /var/log/apache2/weave/access.log combined
        ErrorLog /var/log/apache2/weave/error.log
        DirectoryIndex index.php index.html index.htm
        ServerSignature Off
        <Directory "/var/www/weave/">
                Options Indexes FollowSymLinks
                AllowOverride none
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Anschließend muss eine neue Datenbank erstellt werden. Auf dieser muss dann der folgende SQL-Code ausgeführt werden, der die Tabellen erstellt:

CREATE TABLE `collections` (
  `userid` int(11) NOT NULL,
  `collectionid` smallint(6) NOT NULL,
  `name` varchar(32) NOT NULL,
  PRIMARY KEY  (`userid`,`collectionid`),
  KEY `nameindex` (`userid`,`name`)
) ENGINE=InnoDB;
CREATE TABLE `wbo` (
  `username` int(11) NOT NULL,
  `collection` smallint(6) NOT NULL default '0',
  `id` varbinary(64) NOT NULL default '',
  `parentid` varbinary(64) default NULL,
  `predecessorid` varbinary(64) default NULL,
  `sortindex` int(11) default NULL,
  `modified` bigint(20) default NULL,
  `payload` longtext,
  `payload_size` int(11) default NULL,
  PRIMARY KEY  (`username`,`collection`,`id`),
  KEY `parentindex` (`username`,`collection`,`parentid`),
  KEY `modified` (`username`,`collection`,`modified`),
  KEY `weightindex` (`username`,`collection`,`sortindex`),
  KEY `predecessorindex` (`username`,`collection`,`predecessorid`),
  KEY `size_index` (`username`,`payload_size`)
) ENGINE=InnoDB;
create table users (
 id int(11) NOT NULL PRIMARY KEY auto_increment,
 username varchar(32),
 password_hash varbinary(128),
 email varbinary(64),
 status tinyint(4) default '1',
 alert text,
 reset varbinary(32) default null
) engine=InnoDB;

Schließlich müssen die beiden Server nur noch eingerichtet werden. Zunächst den Sync Server:

cd /var/www/weave/sync-server/1.0/
cp default_constants.php.dist default_constants.php

Anschließend wird die weave_constants.php bearbeitet. Direkt in der Zeile nach <?php werden die folgenden Zeilen eingefügt, die auf die eigenen Bedürfnisse angepasst werden müssen:

define('WEAVE_AUTH_ENGINE', 'mysql');
define('WEAVE_MYSQL_AUTH_HOST', '<db host>');
define('WEAVE_MYSQL_AUTH_DB', '<db name>');
define('WEAVE_MYSQL_AUTH_USER', '<db username>');
define('WEAVE_MYSQL_AUTH_PASS', '<db password>');
define('WEAVE_STORAGE_ENGINE', 'mysql');
define('WEAVE_MYSQL_STORE_READ_HOST', '<db host>');
define('WEAVE_MYSQL_STORE_READ_DB', '<db name>');
define('WEAVE_MYSQL_STORE_READ_USER', '<db username>');
define('WEAVE_MYSQL_STORE_READ_PASS', '<db password>');
define('WEAVE_MYSQL_STORE_WRITE_HOST', WEAVE_MYSQL_STORE_READ_HOST);
define('WEAVE_MYSQL_STORE_WRITE_DB', WEAVE_MYSQL_STORE_READ_DB);
define('WEAVE_MYSQL_STORE_WRITE_USER', WEAVE_MYSQL_STORE_READ_USER);
define('WEAVE_MYSQL_STORE_WRITE_PASS', WEAVE_MYSQL_STORE_READ_PASS);

Nachdem nun der Sync Server konfiguriert ist, muss der Reg Server noch konfiguriert werden.

cd /var/www/weave/reg-server/1.0/
cp weave_user_constants.php.dist weave_user_constants.php

Die kopierte weave_user_constants.php muss nun noch mit folgenden anzupassenden Zeilen nach dem Lizenzblock ergänzt werden:

# ***** END LICENSE BLOCK *****
define('WEAVE_AUTH_ENGINE', 'mysql');
define('WEAVE_MYSQL_AUTH_HOST', '<db host>');
define('WEAVE_MYSQL_AUTH_DB', '<db name>');
define('WEAVE_MYSQL_AUTH_USER', '<db username>');
define('WEAVE_MYSQL_AUTH_PASS', '<db password>');
define('WEAVE_SHA_SALT', '<hier einen langen, zufälligen salt eingeben; wichtig für sha256>');

Das war es eigentlich schon. Wenn ihr beim Einrichten des Plugins nun eure eigene URL https://myserver.de eingebt, solltet ihr euch einen Account erstellen können und mit dem Server synchronisieren können. Ich hatte leider noch ein Problem mit dem Sync Server.

Ich habe auf meinem Server nur die deutsche Locale installiert:

strubbl:~$ locale -a
C
de_DE.utf8
POSIX

Dadurch gab es einen Fehler. Dieser wurde in der Datei /var/www/sync-server/1.0/weave_user/mysql.php in Zeile 84 geworfen. Die Zeile 83 lautet:

if (setlocale(LC_CTYPE, "UTF8", "en_US.UTF-8") == false)

Wenn man die Locale en_US nicht installiert hat, einfach durch die ersetzen, die man hat. Bei mir ist das dann de_DE und die Zeile sieht wie folgt aus:

if (setlocale(LC_CTYPE, "UTF8", "de_DE.UTF-8") == false)

Wenn es endlich alles läuft, wird man auf die Webseite geleitet: First Run.

Richtet man einen zweiten PC mit dem Sync Account ein, wird man dann auf die Webseite geleitet: Second Run.

UPDATE

Der Bjoern hat das Tutorial vor kurzem gecheckt und einige kleine Anmerkungen gemacht. Ich hab z.Z. keinen eigenen Weave Server mehr am Laufen.

Juli 1, 2010 · 4 Minuten

Bash: Ändern von Strg+w…

… , sodass Teile eines Pfades gelöscht werden anstatt ganzer Wörter.

Wer gerne in der bash arbeitet und mit dem Tastenkürzel Strg+w komplette Wörter links des Cursors löscht, dem könnte der folgende Schmankerl gefallen.

set bind-tty-special-chars off
"\C-w": unix-filename-rubout

Diese beiden Zeilen müssen der inputrc hinzugefügt werden. Dazu kann entweder die systemweite (bei Debian z.B.) /etc/inputrc oder aber die benutzerspezifische ~/.inputrc genutzt werden.

Nun noch der Vorher-Nachher-Vergleich. Als Beispiel-Input nehme ich die folgende Zeile:

cd /home/strubbl/

Wenn man nun Strg+w vor der Änderung nutzt, wirkt es wie folgt:

cd 

Der komplette Pfad wurde gelöscht.

Mit der Änderung in der inputrc kann man nun auch Teile des Pfades löschen. Die einmalige Benutzung des Tastenkürzels bewirkt:

cd /home/

Wie praktisch, find ich!

Habe mich eben auch noch von frakturfreak aufklären lassen, dass es sich bei Strg+w und Strg+y um ein Konzept namens einen Kill-Ring handelt (, das vom Emacs stammt) – quasi eine Zwischenablage für Textpassagen darstellt. Nett!

Woher ich das habe? phrakture ist schuldig und zeigt auf seinen Git-Diff.

März 5, 2010 · 1 Minute

Alte Kernel inkl. Header entfernen

Durch Zufall bin ich auf den folgenden Befehl gestoßen, um mal alle alten angesammelten Kernel meines Ubuntus zu löschen. Damit spart man sich das mühselige Eintippen.

$ dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo aptitude purge -y

Ausgeführt sieht es dann in etwa so aus:

Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Lese Status-Informationen ein... Fertig
Lese erweiterte Statusinformationen
Initialisiere Paketstatus... Fertig
Die folgenden Pakete werden ENTFERNT:
  linux-headers-2.6.31-10{p} linux-headers-2.6.31-10-generic{p} linux-headers-2.6.31-11{p} linux-headers-2.6.31-11-generic{p} linux-headers-2.6.31-12{p}
  linux-headers-2.6.31-12-generic{p} linux-headers-2.6.31-13{p} linux-headers-2.6.31-13-generic{p} linux-headers-2.6.31-14{p}
  linux-headers-2.6.31-14-generic{p} linux-headers-2.6.31-15{p} linux-headers-2.6.31-15-generic{p} linux-image-2.6.31-10-generic{p}
  linux-image-2.6.31-11-generic{p} linux-image-2.6.31-12-generic{p} linux-image-2.6.31-13-generic{p} linux-image-2.6.31-14-generic{p}
  linux-image-2.6.31-15-generic{p}
0 Pakete aktualisiert, 0 zusätzlich installiert, 18 werden entfernt und 0 nicht aktualisiert.
Muss 0B an Archiven herunterladen. Nach dem Entpacken werden 1.172MB frei werden.
Wollen Sie fortsetzen? [Y/n/?]

Ich spare damit ab sofort über einen Gigabyte. Feine Sache!

(via linuxundich.de)

Dezember 13, 2009 · 1 Minute

Munin Plugins apache_* unter Debian installieren

Da ich es eben gemacht habe, wollte ich hier eben mal noch dokumentieren, wie man die Munin-Plugins apache_accesses, apache_processes und apache_volume unter Debian Etch oder Ubuntu Hardy zum Laufen bringt. Sie sind leider nicht so einfach zu installieren wie manch andere Munin-Plugins, aber ich habe es mit dieser Methode unter beiden genannten Distribution erfolgreich testen können.

Zuerst installieren wir libwww-perl (und alles was wegen Abhängigkeiten benötigt wird). Danach aktivieren wir das Apache2-Modul status:

sudo aptitude install libwww-perl
sudo a2enmod status

Anschließend können wir die Munin-Plugins aktivieren:

sudo ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
sudo ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes
sudo ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume

Jetzt sollte munin-node neugestartet werden:

sudo /etc/init.d/munin-node restart

Folgender Inhalt muss nun noch in die /etc/apache2/httpd.conf:

ExtendedStatus on
<Location /server-status>&lt;br />
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from localhost
</Location>

Ob das der richtige Ort für diese Konfigurationsdinge ist, weiß ich nicht. Aber es funktioniert :)

Zu guter letzt muss noch der Apache2 neugestartet werden:

sudo /etc/init.d/apache2 restart

In ein paar Minuten sollten wir nun sehen, wie Munin beginnt, fleißig Graphen zu zeichen:

Juli 8, 2008 · 1 Minute

Gentoo und Windows parallel mit Grub

Wer – so wie ich letztens – sein Gentoo next to Windows zum Laufen bringen möchte, kann es sich einfach installieren. Aber wer dann sein Windows wieder starten will, wird sehen, dass Grub nicht so nutzerfreundlich wie unter Debian die menu.lst fein erstellt. Vielleicht hab ich auch einfach noch nicht das Tool dazu gefunden. Aber wer Windows in Grub zur Auswahl stellen will, dem sollte die Zeile, nach der ich einige Zeit suchen musste, helfen:

rootnoverify (hd0,0)
Januar 20, 2008 · 1 Minute