SPARQLthon46/togogenome-proxy

提供:TogoWiki

(版間での差分)
移動: 案内, 検索
(Nginx の設定)
(Nginx の設定)
83行: 83行:
== Nginx の設定 ==
== Nginx の設定 ==
-
もともとの SPARQL エンドポイントの設定 location /sparql {} を location /sparql-orig {} に変更し、
+
sparql-proxy をそのまま公開する場合は、80 番ポートで起動するか、
-
外に見せる /sparql を sparql-proxy のもの http://localhost:ポート番号/ で置き換える
+
 
-
(この proxy は /sparql-orig を使用するように設定して起動しておく)。
+
<pre>
 +
server {
 +
    listen      80;
 +
    server_name  ホスト名;
 +
 
 +
    location / {
 +
        proxy_pass http://localhost:ポート番号/;
 +
    }
 +
}
 +
</pre>
 +
 
 +
のようにすればよい。すでに既存のサービスがホスト名で動いており、サブパスにデプロイしたい場合は、
 +
 
 +
<pre>
 +
http {
 +
  server {
 +
    listen 80;
 +
    location ~ ^/proxy/(.*)$ {
 +
      proxy_pass http://localhost:ポート番号/$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";
 +
    }
 +
  }
 +
}
 +
</pre>
 +
 
 +
のようにすると http://ホスト名/proxy に設置できる。この場合 SPARQL エンドポイントは http://ホスト名/proxy/spraql 管理画面は http://ホスト名/proxy/admin となる。
 +
 
 +
TogoGenome の場合、上記に加え、SPARQL エンドポイントは http://dev.togogenome.org/sparql で運用していたため、
 +
もともとの SPARQL エンドポイントの設定 location /sparql {} を location /sparql-backend {} に変更し、
 +
location /sparql {} を sparql-proxy のもの http://localhost:ポート番号/sparql で置き換えた
 +
(この proxy は /sparql-backend を使用するように設定して起動しておく)。
TogoGenome ではバックエンドがさらに複数台サーバにロードバランスされているので、下記のような設定になった。
TogoGenome ではバックエンドがさらに複数台サーバにロードバランスされているので、下記のような設定になった。
116行: 150行:
</pre>
</pre>
-
これで、もともと素の Virtuoso が晒されていたが、プロキシサーバで隠蔽されるとともにキャッシュによって高速なレスポンスが期待できる。
+
これで、もともと素の Virtuoso が晒されていた SPARQL エンドポイントがプロキシサーバで隠蔽されるとともに、キャッシュによって高速なレスポンスが期待できる。
-
 
+
-
まだ sparql-proxy のトップ画面 http://localhost:ポート番号/ や /admin についてはこの設定では表示できていない。
+
-
 
+
-
<pre>
+
-
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";
+
-
    }
+
-
  }
+
-
}
+
-
</pre>
+
-
 
+
-
このような設定が提案されているが、試したところうまく動いていないため保留。
+

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

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-proxy をそのまま公開する場合は、80 番ポートで起動するか、

server {
    listen       80;
    server_name  ホスト名;

    location / {
        proxy_pass http://localhost:ポート番号/;
    }
}

のようにすればよい。すでに既存のサービスがホスト名で動いており、サブパスにデプロイしたい場合は、

http {
  server {
    listen 80;
    location ~ ^/proxy/(.*)$ {
      proxy_pass http://localhost:ポート番号/$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";
    }
  }
}

のようにすると http://ホスト名/proxy に設置できる。この場合 SPARQL エンドポイントは http://ホスト名/proxy/spraql 管理画面は http://ホスト名/proxy/admin となる。

TogoGenome の場合、上記に加え、SPARQL エンドポイントは http://dev.togogenome.org/sparql で運用していたため、 もともとの SPARQL エンドポイントの設定 location /sparql {} を location /sparql-backend {} に変更し、 location /sparql {} を sparql-proxy のもの http://localhost:ポート番号/sparql で置き換えた (この proxy は /sparql-backend を使用するように設定して起動しておく)。

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 エンドポイントがプロキシサーバで隠蔽されるとともに、キャッシュによって高速なレスポンスが期待できる。

個人用ツール