SPARQLthon46/togogenome-proxy

提供:TogoWiki

(版間での差分)
移動: 案内, 検索
(Nginx の設定)
(Nginx の設定)
84行: 84行:
もともとの SPARQL エンドポイントの設定 location /sparql {} を location /sparql-orig {} に変更し、
もともとの SPARQL エンドポイントの設定 location /sparql {} を location /sparql-orig {} に変更し、
-
外に見せる /sparql を sparql-proxy のもの http://localhost:ポート番号/ に変更
+
外に見せる /sparql を sparql-proxy のもの http://localhost:ポート番号/ で置き換える
-
(この proxy は /sparql-orig を使用するように起動しておく)。
+
(この proxy は /sparql-orig を使用するように設定して起動しておく)。
TogoGenome ではバックエンドがさらに複数台サーバにロードバランスされているので、下記のような設定になった。
TogoGenome ではバックエンドがさらに複数台サーバにロードバランスされているので、下記のような設定になった。

2016年7月27日 (水) 13:14時点における版

sparql-proxy を dev.togogenome.org/sparql にデプロイする。

目次

インストール

インストール先は、例として /opt/proxy/{bin,git,src,log,cache} というディレクトリ構成とする。

% mkdir -p /opt/proxy
% cd /opt/proxy

% mkdir bin
% mkdir cache
% mkdir git
% mkdir log
% mkdir src

% cd src
% curl -O https://nodejs.org/dist/v6.3.1/node-v6.3.1-linux-x64.tar.xz
% tar xvf node-v6.3.1-linux-x64.tar.xz

% cd ../bin
% ln -s ../src/node-v6.3.1-linux-x64/bin/* .

% cd ../git
% git clone git@github.com:enishitech/sparql-proxy.git
% cd sparql-proxy
% npm install

なお、LTS 版の Node.js v4..4.7 では依存ライブラリのインストールに失敗するので、v0.12.5 か、上記のように最新版 (Node.js のサイト https://nodejs.org/en/download/ 参照) を使うのがよさそう。

テスト

プロキシを起動するポート番号、バックエンドの実際のSPARQLエンドポイント、管理ユーザの ID とパスワードを指定して起動。

% PORT=3000 SPARQL_BACKEND=http://sparql.uniprot.org/sparql ADMIN_USER=ore ADMIN_PASSWORD=himitsu npm start

として、http://localhost:3000/ を開き、

PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT ?image
WHERE {
  ?tax_id foaf:depiction ?image .
  ?image a foaf:Image .
}
LIMIT 10

を検索。結果が出ることを確認したら、http://localhost:3000/admin に↑で指定した user, password でログインして管理画面を開く。 指定したクエリ、実行時間などが表示されていることを確認。

起動スクリプト

ログファイルとキャッシュのディレクトリを指定し、プロキシを起動するポート番号、バックエンドの実際のSPARQLエンドポイント、管理ユーザの ID とパスワードを適宜書き換えて起動。

#!/bin/sh

PREFIX=/opt/proxy

export PATH="$PREFIX/bin:$PATH"

(
cd $PREFIX/git/sparql-proxy

QUERY_LOG_PATH=$PREFIX/log/proxy.log \
CACHE_STORE=file \
CACHE_STORE_PATH=$PREFIX/cache \
MAX_CONCURRENCY=3 \
TRUST_PROXY=true \
PORT=ポート番号 \
SPARQL_BACKEND=SPARQLエンドポイントのURI \
ADMIN_USER=管理ユーザ名 \
ADMIN_PASSWORD=パスワード \
$PREFIX/bin/npm start 2>&1 >> $PREFIX/log/server.log & 
)

Nginx の設定

もともとの SPARQL エンドポイントの設定 location /sparql {} を location /sparql-orig {} に変更し、 外に見せる /sparql を sparql-proxy のもの http://localhost:ポート番号/ で置き換える (この proxy は /sparql-orig を使用するように設定して起動しておく)。

TogoGenome ではバックエンドがさらに複数台サーバにロードバランスされているので、下記のような設定になった。

upstream virtuoso_cluster_dev_togogenome {
    least_conn;
    server ep3:ポート番号;
    server ep4:ポート番号;
    server ep5:ポート番号;
}

server {
    listen 80;
    server_name dev.togogenome.org;

    location /sparql {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Headers X-Requested-With;
        proxy_pass http://localhost:ポート番号/sparql;
        proxy_redirect default;
    }
    location /sparql-orig {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Headers X-Requested-With;
        proxy_pass http://virtuoso_cluster_dev_togogenome/sparql;
        proxy_redirect default;
    }
}

これで、もともと素の Virtuoso が晒されていたが、プロキシサーバで隠蔽されるとともにキャッシュによって高速なレスポンスが期待できる。

まだ sparql-proxy のトップ画面 http://localhost:ポート番号/ や /admin についてはこの設定では表示できていない。

http {
  server {
    listen 8888;
    location ~ ^/proxy/(.*)$ {
      proxy_pass http://localhost:3000/$1$is_args$args;
      proxy_redirect / /proxy/;
      proxy_cookie_path / /proxy/;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }
  }
}

このような設定が提案されているが、試したところうまく動いていないため保留。

個人用ツール