Ein umfangreich(er)es Tutorial zum Aufsetzen des "offiziellen" Python Firefox Sync Servers

Als Server verwendet der Autor ein Debian Squeeze. Das Tutorial vervollständigt das offizielle Tutorial http://docs.services.mozilla.com/howtos/run-sync.html, da einige Schritte übernommen wurden ist der Inhalt CC-SA 2.5 . Getestet hat der Autor das MYSQL backend, dieser Weg der Konfiguration ist wahrscheinlich anspruchsvoller als der mit SQlite, letzteres Backend wird also (vorerst) nicht beschrieben, bis es jmd. hinzufügt. Der Autor hofft, dass euch nichts an dem Artikel fehlt und es euch deshalb nicht so geht wie bei dem offiziellen TuT, welches bei einer Datenbank in /tmp mit der Doku aufhört.

Wer sich PostgreSQL als Backend wünscht: http://blog.davekoelmeyer.co.nz/2011/12/11/set-up-firefox-sync-to-connect-to-a-postgresql-database/

Update Mozilla hat in der Woche nach dem erstellen dieses Tutorials ein bisschen Doku nachgetragen. Zwar ist sie immer noch nicht vollständig aber immerhin sind mal mögliche weitere parameter gelistet. Wer ein größeres Setup plant, sollte auf jeden Fall die offizielle mit beachten. Sie behandelt auch memcached sql backends und Ähnliches.

Laufzeitumgebung einrichten

  • Dependencies installieren
sudo aptitude install python-dev mercurial sqlite3 python-virtualenv libmysqlclient-dev libapache2-mod-wsgi
  • Serverumgebung einrichten (Mozilla richtet ein eigenes Py-Environment ein)
hg clone https://hg.mozilla.org/services/server-full
cd server-full
make build
bin/easy_install Mysql-Python
  • useradd sync; groupadd sync; gpasswd -a sync sync
  • MYSQL-User „weave“ anlegen, Datenbank „weave“ anlegen (gelingt schnell mit webfrontend (z.B. phpMA, adminer) oder wer es kann per Hand)
  • Nutzer „weave“ alle Rechte an DB „weave“ geben, keiner anderen
  • Apache2 modwsgi laden: <code>a2enmod modwsgi</code>

Konfiguration

  • mv development.ini sync.ini
  • in sync.ini muss debug auf False gesetzt werden
  • Die Datei etc/sync.conf muss angepasst werden. Ein Beispiel:
[global]
clean_shutdown = false

[captcha]
use = true
public_key = RECAPTCHA_PUB_KEY
private_key = RECAPTCHA_PRIV_KEY
use_ssl = true

[storage]
backend = syncstorage.storage.sql.SQLStorage
sqluri = mysql://weave:PASSWORT@loccalhost/weave
standard_collections = false
use_quota = true
quota_size = 5120
pool_size = 100
pool_recycle = 3600
reset_on_return = true
display_config = true
create_tables = true

[auth]
backend = services.auth.sql.SQLAuth
sqluri = mysql://weave:PASSWORT@localhost/weave
#sqluri = sqlite:////tmp/test.db
pool_size = 100
pool_recycle = 3600
create_tables = true
fallback_node = http://127.0.0.1:5000/

[smtp]
host = localhost
port = 25
sender = weave@mozilla.com

[cef]
use = true
file = syslog
vendor = mozilla
version = 0
device_version = 1.3
product = weave
  • Das Datenbank-Schema wird in der Standard-Konfiguration selbsttätig angelegt (create_tables = true), ungleich wie in einer älteren Version Anfang 2011

Permissions anpassen

Da wir in der folgenden virtualhost-conf den Nutzer, bzw die Gruppe des wsgi-scripts auf sync setzen und es unter diesen Berechtigungen ausführen lassen, können wir diesen Nutzer auch den gesamten Ordner „geben“.

chown -R sync:sync $DOCROOT/ffsync

Danach entziehen wir others alle Berechtigungen, sollten noch welche existieren:

chmod -R u=rwX,g=rwX,o= $DOCROOT/ffsync/

Fallback Lokal Server starten

FFSync benötigt aus welchem Grund auch immer, sofern man einen public server betreibt, einen lokalen „Fallback Node“, der mit der sync.ini Konfiguriert wird. (Ohne diesen bekommt man im schlimmsten Fall ohne irgendwelche Fehlermeldungen keinen Sync hin)

$FFSYNC_DIR/bin/paster serve sync.ini

Nun muss dieser Prozess allerdings für die gesamte Laufzeit des Apache am Laufen gehalten werden, eine Lösung mithilfe der daemontools und passendem Beispiel gibt's hier

Apache-Vhost Konfiguration

Ein Beispiel für eine CFG mit SSL wäre folgende Konfiguration, das Installationsverzeichnis ist $DOCROOT/ffsync:

<IfModule mod_ssl.c>
<VirtualHost *:443>
	ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        WSGIProcessGroup sync
        WSGIDaemonProcess sync user=sync group=sync processes=2 threads=25
        WSGIPassAuthorization On
        WSGIScriptAlias /ffsync /var/www/ffsync/sync.wsgi

	<Directory /var/www/ffsync>
		Order allow,deny
		Allow from all
                AllowOverride None
                AddHandler cgi-script .cgi
                AddHandler wsgi-script .wsgi
	</Directory>
	Alias /user/1.0 /var/www/ffsync/1.0/index.php
	Alias /user/1 /var/www/ffsync/1.0/index.php

        ErrorLog /var/log/apache2/error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog /var/log/apache2/access.log combined

	SSLEngine on

	SSLCertificateFile    /etc/ssl/certs/ff_sync.crt   # CHANGE
	SSLCertificateKeyFile /etc/ssl/private/ff_sync.key # CHANGE

	<FilesMatch "\.(cgi|shtml|phtml|php)$">
		SSLOptions +StdEnvVars
	</FilesMatch>
	<Directory /usr/lib/cgi-bin>
		SSLOptions +StdEnvVars
	</Directory>

	BrowserMatch "MSIE [2-6]" \
		nokeepalive ssl-unclean-shutdown \
		downgrade-1.0 force-response-1.0
	BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>
</IfModule>

Möglicherweise muss man zusätzlich zu dem Directory-Eintrag enthaltenen Extension-Registrierung für .wsgi im ffsync-Ordner auch noch einen solchen Eintrag in der /etc/apache2/httpd.conf tätigen:

  • <code>AddHandler wsgi-script .wsgi</code>

Client einrichten

 
 
projekte/firefox_sync.txt · Zuletzt geändert: 2012-01-17 16:59 von bongo
Recent changes RSS feed Valid XHTML 1.0 Valid CSS Driven by DokuWiki