Προαπαιτούμενα
Εγκαταστήστε τα απαραίτητα πακέτα
Κατασκευή του διακομιστή
Συγχρονισμός διαμόρφωσης διακομιστή
Εκκίνηση του διακομιστή συγχρονισμού
Διαμόρφωση διακομιστή Ιστού
Διαμόρφωση του πελάτη (Firefox)
Το Firefox Sync είναι μια δυνατότητα συγχρονισμού του προγράμματος περιήγησης που σας επιτρέπει να μοιράζεστε τα δεδομένα και τις προτιμήσεις σας (όπως τους σελιδοδείκτες, το ιστορικό, τους κωδικούς πρόσβασης, τις ανοιχτές καρτέλες και τα εγκατεστημένα πρόσθετα) σε όλες τις συσκευές σας. Η Mozilla προσφέρει επίσης μια εφαρμογή "διακομιστή συγχρονισμού" για χρήση με το Firefox Sync για χρήστες και επιχειρήσεις που προτιμούν να φιλοξενούν τα δικά τους δεδομένα συγχρονισμού. Αυτό το άρθρο σας δείχνει πώς να ρυθμίσετε το Mozilla Sync Server.
Προαπαιτούμενα
- Ένα νέο Vultr CentOS 6 που αναπτύχθηκε πρόσφατα
- Ένας χρήστης sudo .
Εγκαταστήστε τα απαραίτητα πακέτα
Ενημερώστε το σύστημα:
sudo yum check-update
Για να δημιουργήσετε και να εκτελέσετε το Sync Server, θα χρειαστεί να εγκαταστήσετε αυτά τα πακέτα:
Mecurial
sqlite3
git
Python 2.6.6
Python 2.6.6 virtualenv
Python 2.6.6 SetupTools
Python 2.6.6 Developer Tools
Εγκαταστήστε την πιο πρόσφατη έκδοση του Mercurial:
sudo yum install mercurial
Εγκαταστήστε τα απαραίτητα εργαλεία ανάπτυξης και βιβλιοθήκες:
yum groupinstall 'Development Tools' 'Development Libraries'
yum install tk-devel libjpeg-devel mysql-devel python-devel httpd-devel zlib-devel bzip2-devel
Εγκαταστήστε το SQLite3:
sudo yum install sqlite
Εγκαταστήστε και δημιουργήστε την Python 2.6.6:
cd $home
sudo wget http://python.org/ftp/python/2.6.6/Python-2.6.6.tgz
sudo tar xzvf Python-2.6.6.tgz
cd $home/Python-2.6.6
sudo ./configure --prefix=/opt/python2.6 --enable-thread --enable-shared --enable-unicode=ucs4
sudo make
sudo make install
Κατασκευή του διακομιστή
Θα κλωνοποιήσουμε το αποθετήριο Git του διακομιστή συγχρονισμού και, στη συνέχεια, θα εισαγάγουμε το φάκελο:
git clone https://github.com/mozilla-services/syncserver
cd syncserver
Εκτελέστε την εντολή build, η οποία θα κατεβάσει τις εξαρτήσεις και θα μεταγλωττίσει τον κώδικα:
make build
Εκκινήστε τον διακομιστή συγχρονισμού και βεβαιωθείτε ότι λειτουργεί σωστά:
bin/paster serve development.ini
Θα δείτε κάτι σαν αυτό:
Starting server in PID 5952.
serving on 0.0.0.0:5000 view at http://127.0.0.1:5000
Συγχρονισμός διαμόρφωσης διακομιστή
Η διαμόρφωση του διακομιστή συγχρονισμού είναι πολύ απλή, υπάρχουν μόνο μερικές παράμετροι για αλλαγή στο αρχείο διαμόρφωσης ( ./syncserver.ini).
Ανοίξτε το αρχείο διαμόρφωσης με τον αγαπημένο σας επεξεργαστή κειμένου (για παράδειγμα nano ./syncserver.ini).
[server:main]
use = egg:gunicorn
host = 0.0.0.0
port = 5000
workers = 1
timeout = 30
[app:main]
use = egg:syncserver
[syncserver]
# This must be edited to point to the public URL of your server,
# i.e. the URL as seen by Firefox.
public_url = http://localhost:5000/
# This defines the database in which to store all server data.
#sqluri = sqlite:////tmp/syncserver.db
# This is a secret key used for signing authentication tokens.
# It should be long and randomly-generated.
# The following command will give a suitable value on *nix systems:
#
# head -c 20 /dev/urandom | sha1sum
#
# If not specified then the server will generate a temporary one at startup.
#secret = INSERT_SECRET_KEY_HERE
# Set this to "false" to disable new-user signups on the server.
# Only request by existing accounts will be honoured.
# allow_new_users = false
# Set this to "true" to work around a mismatch between public_url and
# the application URL as seen by python, which can happen in certain reverse-
# proxy hosting setups. It will overwrite the WSGI environ dict with the
# details from public_url. This could have security implications if e.g.
# you tell the app that it's on HTTPS but it's really on HTTP, so it should
# only be used as a last resort and after careful checking of server config.
force_wsgi_environ = false
[browserid]
# Uncomment and edit the following to use a local BrowserID verifier
# rather than posting assertions to the mozilla-hosted verifier.
# Audiences should be set to your public_url without a trailing slash.
#backend = tokenserver.verifiers.LocalVerifier
#audiences = https://localhost:5000
# By default, syncserver will accept identity assertions issues by
# any server. You can restrict this by setting the below to a list
# of allowed issuer domains.
#allowed_issuers = www.mysite.com myfriendsdomain.org
Η διεύθυνση του διακομιστή σας πρέπει να καθοριστεί μέσω της παραμέτρου public_url:
public_url = http://fsync.example.com
Σημείωση : η προεπιλεγμένη τιμή του public_url, http://localhost:5000/, θα λειτουργήσει για σκοπούς δοκιμής στον τοπικό σας υπολογιστή.
Θα sqluriκαταργήσουμε τον σχολιασμό της επιλογής και θα βάλουμε την τοποθεσία ή URI, που θα επιτρέψει στον διακομιστή να συνδέσει τη βάση δεδομένων και να αποθηκεύσει τις πληροφορίες της:
sqluri = sqlite:////path/to/database/file.db
Εάν θέλετε να χρησιμοποιήσετε άλλο τύπο DB:
sqluri = pymysql://username:password@db.example.com/sync
Για την secretπαράμετρο, θα πρέπει να δημιουργήσουμε ένα μυστικό κλειδί για διακριτικά ελέγχου ταυτότητας:
head -c 20 /dev/urandom | sha1sum
Καταργήστε το σχόλιο της γραμμής της μυστικής παραμέτρου και, στη συνέχεια, αντιγράψτε/επικολλήστε τη συμβολοσειρά που επιστράφηκε στη μυστική παράμετρο:
secret = db8a203aed5fe3e4594d4b75990acb76242efd35
Σημείωση : Εάν δεν βάλετε τίποτα σε αυτήν την παράμετρο, ο διακομιστής θα δημιουργήσει ένα, αλλά θα είναι διαφορετικό κάθε φορά που γίνεται επανεκκίνηση του διακομιστή.
Καταργήστε το σχόλιο της allow\_new\_usersπαραμέτρου και ορίστε την έτσι ώστε trueνα επιτρέπεται στον λογαριασμό μας να συνδεθεί στον διακομιστή μας για πρώτη φορά:
allow_new_users = true
Στη συνέχεια θα αποσχολιάσουμε την audiencesπαράμετρο και θα βάλουμε το ίδιο πράγμα με την public_uriπαράμετρο:
audiences = http://fsync.example.com
Τέλος, απλώς προσθέστε την ακόλουθη γραμμή στο τέλος του αρχείου σας:
forwarded_allow_ips = *
Αυτή η γραμμή θα σας βοηθήσει να αποφύγετε μηνύματα λάθους και ζητήματα εξουσιοδότησης.
Εκκίνηση του διακομιστή συγχρονισμού
Για να ξεκινήσετε τον διακομιστή συγχρονισμού, μπορείτε να χρησιμοποιήσετε μία από τις ακόλουθες εντολές:
./path/to/syncserver/local/bin/gunicorn --threads 4 --paste /path/to/syncserver/syncserver.ini &
Αυτό σας επιτρέπει να επιλέξετε τη θέση του αρχείου διαμόρφωσης. καθώς και το όρισμα --threads 4, το οποίο επιτρέπει την εκχώρηση περισσότερης ενέργειας στον διακομιστή συγχρονισμού.
Για να ξεκινήσετε τον διακομιστή κάθε φορά που εκκινείται η παρουσία σας, μπορείτε να προσθέσετε την ακόλουθη γραμμή στο crontab σας πληκτρολογώντας την crontab -eεντολή:
@reboot ./path/to/syncserver/local/bin/gunicorn --paste /path/to/syncserver/syncserver.ini &
Διαμόρφωση διακομιστή Ιστού
Μπορείτε να χρησιμοποιήσετε διαφορετικούς διακομιστές Ιστού που είναι συμβατοί με το WSGIπρωτόκολλο. Για παράδειγμα:
Nginx με το uWSGI.
Apache σε συνδυασμό με το mod_wsgi.
Nginx
Για το Nginx, πρέπει να χρησιμοποιήσετε τον ενσωματωμένο διακομιστή μεσολάβησης του Nginx όπως φαίνεται παρακάτω:
server {
listen 80;
server_name fsync.example.com;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_read_timeout 120;
proxy_connect_timeout 10;
proxy_pass http://127.0.0.1:5000/;
}
}
Nginx + uWSGI
Είναι δυνατό για τους χρήστες Nginx να χρησιμοποιούν μόνο την υποδοχή WSGI.
Εγκατάσταση uWSGIμέσω Pip:
pip install uwsgi
Εγκαταστήστε uWSGIμέσω λήψης tarball πηγής:
wget https://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd <dir>
make
Σημείωση : Μετά την κατασκευή, θα έχετε ένα uwsgiδυαδικό αρχείο στον τρέχοντα κατάλογο.
Μόλις εγκατασταθεί, ξεκινήστε με τις ακόλουθες επιλογές:
uwsgi --plugins python27 --manage-script-name \
--mount /<location>=/path/to/syncserver/syncserver.wsgi \
--socket /path/to/uwsgi.sock
Στη συνέχεια, χρησιμοποιήστε την ακόλουθη διαμόρφωση Nginx:
location /<location>/ {
include uwsgi_params;
uwsgi_pass unix:/path/to/uwsgi.sock;
}
Απάχης
Εγκατάσταση mod_wsgi:
apt-get install libapache2-mod-wsgi
Στη συνέχεια χρησιμοποιήστε τον ακόλουθο vhost:
<VirtualHost *:80>
ServerName sync.example.com
DocumentRoot /path/to/syncserver
WSGIProcessGroup sync
WSGIDaemonProcess sync user=sync group=sync processes=2 threads=25 python-path=/path/to/syncserver/local/lib/python2.7/site-packages/
WSGIPassAuthorization On
WSGIScriptAlias / /path/to/syncserver/syncserver.wsgi
CustomLog /var/log/apache2/sync.example.com-access.log combined
ErrorLog /var/log/apache2/sync.example.com-error.log
</VirtualHost>
Αφού εγκατασταθεί και ρυθμιστεί ο διακομιστής, μπορείτε να ρυθμίσετε τις παραμέτρους του προγράμματος-πελάτη Firefox για επιτραπέζιους υπολογιστές ώστε να συνομιλεί με τον νέο σας διακομιστή συγχρονισμού. Πριν ξεκινήσετε, εάν είστε ήδη συνδεδεμένοι με διακομιστές Firefox Sync, πρέπει να αποσυνδεθείτε. Διαφορετικά, η σύνδεση με τον νέο διακομιστή ενδέχεται να μην λειτουργεί.
Αρχικά, ανοίξτε μια νέα καρτέλα και εισαγάγετε την ακόλουθη διεύθυνση:
about:config
Στη γραμμή αναζήτησης, εισαγάγετε identity.sync.tokenserver.uriκαι αλλάξτε την τιμή του στη διεύθυνση URL του διακομιστή σας με μια διαδρομή token/1.0/sync/1.5:
http://sync.example.com/token/1.0/sync/1.5