FIREFOX SYNC SERVER DEBIAN FAQ

Aus OPPServer.net Wiki | OPPs Wiki
Zur Navigation springen Zur Suche springen

FIREFOX SYNC SERVER DEBIAN FAQ (Stand 14.05.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]

Alle Befehle sind als user root auszufuehren:

Die noetigen Pakete installieren:

aptitude install libapache2-mod-wsgi python-dev mercurial python-virtualenv php-services-json sqlite3 libmysqlclient-dev mysql-server


Benutzer ffsync erstellen:

adduser --system --home /home/ffsync --group ffsync
passwd ffsync
usermod -s /bin/bash ffsync


Den Apache User zu der Gruppe ffsync hinzufuegen:

adduser www-data ffsync


Mysql einrichten:

mysql -u root -p mysql
create database ffsync;
CREATE USER 'ffsync'@'localhost' IDENTIFIED BY 'ffsync';
SET PASSWORD FOR 'ffsync'@'localhost' = PASSWORD('P@ssw0rt');
grant all on ffsync.* to 'ffsync'@'localhost';
quit


Den User wechseln:

su - ffsync


Den Server holen und installieren:

hg clone https://hg.mozilla.org/services/server-full
mkdir data tmp
cd server-full
make build
bin/easy_install Mysql-Python


In sync.wsgi folgendes aendern:

os.environ['PYTHON_EGG_CACHE'] = '/tmp/python-eggs'

in

os.environ['PYTHON_EGG_CACHE'] = '/home/ffsync/tmp/python-eggs'


ini_file = os.path.join(_CURDIR, 'development.ini')

in

ini_file = os.path.join(_CURDIR, 'server.ini')


cp development.ini server.ini

In server.ini folges aendern:

[server:main]
use = egg:Paste#http
host = 0.0.0.0

in

[server:main]
use = egg:Paste#http
host = 192.168.0.2 << Beispiel


[handler_syncserver_errors]
class = handlers.RotatingFileHandler
args = ('/tmp/sync-error.log',)

in

[handler_syncserver_errors]
class = handlers.RotatingFileHandler
args = ('/home/ffsync/tmp/sync-error.log',)


In etc/sync.conf folgendes aendern:

[captcha]
use = true
public_key = xyz
private_key = xyz
use_ssl = true

Die Keys kann man hier https://www.google.com/recaptcha/admin/create generieren.


Im folgenden sind nur die Aenderungen aufgefuehrt:

[storage]
backend = syncstorage.storage.sql.SQLStorage
sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync
...
quota_size = 20480
[auth]
backend = services.user.sql.SQLUser
sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync

[nodes]
# You must set this to your client-visible server URL.
# fallback_node = http://example.com/path/to/sync
fallback_node = http://ffsync.oppserver.net/

[smtp]
host = localhost
port = 25
sender = ffsync@oppserver.net

[reset_codes]
backend = services.resetcodes.rc_sql.ResetCodeSQL
#sqluri = sqlite:////tmp/test.db
sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync


Apache und Vhost einrichten:

Hier wieder weiter als User root:

a2enmod wsgi

/etc/apache2/sites-available/ffsync.oppserver.net.conf Datei anlegen:

<VirtualHost *:80>
DocumentRoot "/home/ffsync/server-full"
ServerName ffsync.oppserver.net
CustomLog ${APACHE_LOG_DIR}/ffsync.oppserver.net-access.log combined
ErrorLog  ${APACHE_LOG_DIR}/ffsync.oppserver.net-error.log
<Directory "/home/ffsync/server-full">
Order deny,allow
Allow from all
</Directory>
WSGIProcessGroup ffsync
WSGIDaemonProcess ffsync user=ffsync group=ffsync processes=2 threads=25
WSGIPassAuthorization On
WSGIScriptAlias / /home/ffsync/server-full/sync.wsgi
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot "/home/ffsync/server-full"
ServerName ffsync.oppserver.net
CustomLog ${APACHE_LOG_DIR}/ffsync.oppserver.net-access.log combined
ErrorLog  ${APACHE_LOG_DIR}/ffsync.oppserver.net-error.log
SSLEngine on
SSLCertificateFile /usr/share/ssl-cert/oppserver.net.pem
<Directory "/home/ffsync/server-full">
Order deny,allow
Allow from all
</Directory>
WSGIProcessGroup ffsync
WSGIDaemonProcess ffsyncs user=ffsync group=ffsync processes=2 threads=25
WSGIPassAuthorization On
WSGIScriptAlias / /home/ffsync/server-full/sync.wsgi
</VirtualHost>
</IfModule>
a2ensite ffsync.oppserver.net.conf
/etc/init.d/apache2 reload

Ich musste bei meinem VPS die threads beim WSGIDaemonProcess von 25 auf 10 senken, damit nicht zuviel RAM Verbrauch an stand.

Um den Sync Server beim Systemstart und jetzt zu starten, erstellen wir ein init Script (nano /etc/init.d/ffsync) mit folgenden Inhalt:

#!/bin/bash
### BEGIN INIT INFO
# Short-Description: Mozilla Sync Server
# Provides:          ffsync
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

RUNDIR=/var/run/ffsync
DAEMON=/home/ffsync/server-full/python
PIDFILE=/var/run/ffsync.pid
MESSAGELOG=/home/ffsync/tmp/sync-messages.log

PID=`pidof -x -o %PPID paster`
case "$1" in
  start)
    echo "Starting Mozilla Sync Server"
    [ -d $RUNDIR ] || mkdir $RUNDIR
    [ -z "$PID" ] && su ffsync -c "cd /home/ffsync/server-full && bin/paster serve server.ini &>$MESSAGELOG &"
    if [ $? -gt 0 ]; then
      echo "Dont start succesfully. (Maybe it is running?)"
    else
      PID=`pidof -x -o %PPID paster`
      echo $PID >$PIDFILE
      echo "Start succesfully."
    fi
    ;;
  stop)
    echo "Stopping Mozilla Sync Server"
    [ ! -z "$PID" ]  && kill $PID >/dev/null 2>&1
    if [ $? -gt 0 ]; then
      echo "Dont stop succesfully. (Maybe it is not running?)"
    else
      echo "Stop succesfully."
    fi
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "usage: $0 {start|stop|restart}"
esac
exit 0


Jetzt geben wir dem Script die richtigen Rechte:

chmod +x /etc/init.d/ffsync

Nun starten wir den Sync Server:

service ffsync start

Als letztes wenn alles funktioniert tragen wir das Script in die Runlevel ein:

update-rc.d ffsync defaults