在Debian 9或Ubuntu 16 04上安装FirefoxSync Server

・12 分钟阅读

使用不同的系统?

Firefox Sync是一个浏览器同步功能,允许你在所有设备上共享数据和首选项(例如,书签,历史记录,密码,打开标签和已安装的add-ons),Mozilla还为使用Firefox同步的用户和企业提供了"Sync Server"应用程序,用于托管自己的同步数据,本文向你展示了如何设置Mozilla Sync Server。

前提条件

  • 新部署的Debian 8、Debian 9或Ubuntu 16 04服务器实例,
  • 一个sudo用户

安装必要的软件包

更新系统:


sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

要构建并运行Sync Server,你需要安装以下软件包:

  • python-dev
  • git
  • build-essential (C++编译器GCC编译器、制作和其他所需的工具),
  • sqlite3 (如果想使用MySQL数据库而不是SQLite,可以用mariadb-servermysql-server替换sqlite3包),
  • nginx (Web服务器,你可以从),

安装软件包:


sudo apt-get install -y git git-core python-dev python-virtualenv build-essential sqlite3 nginx

构建服务器脚本

通过键入以下命令,我们将克隆Sync Server的Git存储库,然后输入该文件夹:


git clone https://github.com/mozilla-services/syncserver
cd syncserver

运行生成命令,该命令将下载依赖项,并且编译代码。

 
make build

 

Sync Server配置

Sync Server的配置非常简单,只有几个参数可以在配置文件(./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

如果要使用另一种类型的数据库:


sqluri = pymysql://username:password@db.example.com/sync

对于"secret"参数,我们必须为认证令牌生成一个密钥:


head -c 20 /dev/urandom | sha1sum

取消对secret参数的行的注释,然后将返回的字符串复制/粘贴到secret参数中:


secret = db8a203aed5fe3e4594d4b75990acb76242efd35

注意:如果在该参数中不放入任何内容,服务器将生成一个,但是,每次重新启动服务器时它都会不同。

对于"allow_new_users"参数,取消注释,并且设置为true以允许我们的帐户第一次连接到我们的服务器:


allow_new_users = true

然后,我们将修改"audiences"参数并将相同的事件与"public_uri"参数一起放置,而不忘记对该行进行取消注释:


audiences = http://fsync.example.com

最后,只需在文件末尾添加以下行:


forwarded_allow_ips = *

这一行将帮助你避免错误消息和授权问题。

启动Sync Server

要启动Sync Server,你可以启动以下命令:


./path/to/syncserver/local/bin/gunicorn --threads 4 --paste /path/to/syncserver/syncserver.ini &

:或者这个

 
make serve &

 

第一个选项允许选择配置文件的位置; 同时还将参数--threads 4放在这里,它允许为Sync Server分配更多的。

要在每次引导实例引导时启动服务器,可以通过键入crontab -e命令将以下行添加到rtc :


@reboot ./path/to/syncserver/local/bin/gunicorn --paste /path/to/syncserver/syncserver.ini &

Web服务器配置

你可以使用与WSGI协议兼容的不同的web服务器,例如:

  • 带参数的nginx
  • Apache与mod_wsgi结合使用,

Nginx

对于nginx,必须使用nginx'sproxy,如下所示:


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 +最大值

Nginx用户可以仅使用WSGI套接字。

通过Pip安装uWSGI

 
pip install uwsgi

 

通过下载源tarball安装uWSGI


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;
}

Apache

安装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 Server进行,开始之前,如果你已经连接到FirefoxSync Server,则必须注销,否则,与新服务器的连接可能无法工作。

首先,打开一个新标签,并且输入以下地址:

 
about:config

 

在搜索栏中,输入identity.sync.tokenserver.uri并将它值更改为具有token/1.0/sync/1.5路径的服务器的URL :


http://sync.example.com/token/1.0/sync/1.5

杨和超 profile image