====== 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 mod_wsgi laden: a2enmod mod_wsgi ===== 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 [[.:daemontools:start|hier]] ==== Apache-Vhost Konfiguration ==== Ein Beispiel für eine CFG mit SSL wäre folgende Konfiguration, **das Installationsverzeichnis ist $DOCROOT/ffsync**: ServerAdmin webmaster@localhost DocumentRoot /var/www Options FollowSymLinks AllowOverride None WSGIProcessGroup sync WSGIDaemonProcess sync user=sync group=sync processes=2 threads=25 WSGIPassAuthorization On WSGIScriptAlias /ffsync /var/www/ffsync/sync.wsgi Order allow,deny Allow from all AllowOverride None AddHandler cgi-script .cgi AddHandler wsgi-script .wsgi 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 SSLOptions +StdEnvVars SSLOptions +StdEnvVars BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown 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: * AddHandler wsgi-script .wsgi ===== Client einrichten ===== * Einstellungen->Sync Neuen Account erstellen, ausfüllen * Server URL: https://example.com/ffsync**/** ===== Links ===== * [[http://blog.davekoelmeyer.co.nz/2011/12/03/setting-up-a-local-firefox-sync-server/]] * [[http://docs.services.mozilla.com/howtos/run-sync.html]]