VirtuosoのSPARQLエンドポイントを80番ポートで公開する方法

By | 2015年1月20日

VirtuosoはデフォルトでSPARQLエンドポイントを8890ポートで公開している。

このままだと80ポートくらいしかアクセス出来ないやたらと厳しいネットワーク環境では見ることが出来ない。

基本的には以下を参考にすれば良い。

Proxying Virtuoso Via Apache2

一年半くらい前に設定したときはこれで行けたような気がするんだけど、最近また設定することがあってやってみたら503エラーがでて成功しなかった。

いろいろググってこんな記事を見つけた。

apache proxy to virtuoso 7.1 #89

この通りに設定してみる

$ sudo vi /etc/httpd/conf/httpd.conf
ProxyPass /sparql http://localhost:8890/sparql
ProxyPassReverse /sparql http://localhost:8890/sparql
<Location /sparql>
    Order allow,deny
    allow from all
    ProxyHTMLURLMap         / /sparql/ c
    ProxyHTMLURLMap http://localhost:8890/ /sparql
    SetOutputFilter         INFLATE;DEFLATE;proxy-html
    #SetOutputFilter proxy-html
</Location>

これでもまだエラー。

さらにググって見るとこんな記事を発見。

RDFストア環境構築(Virtuoso編)3

すばらしい。この分野でやっと日本語の記事が出てくるようになったのか・・・感動

こちらの記事ではSELinuxを無効にしていたので実践。

$ setenforce 0

さらに/etc/selinux/configファイルを編集

$ sudo vi /etc/selinux/config

#SELINUX=enforcing これをコメントアウト
SELINUX=disabled これを追加

これで再起動してみたら成功

しかしSPARQLの結果で日本語が文字化けしてしまう。

SetOutputFilterの行を削除してみる。

$ sudo vi /etc/httpd/conf/httpd.conf
ProxyPass /sparql http://localhost:8890/sparql
ProxyPassReverse /sparql http://localhost:8890/sparql
<Location /sparql>
 Order allow,deny
 allow from all
 ProxyHTMLURLMap / /sparql/ c
 ProxyHTMLURLMap http://localhost:8890/ /sparql
 SetOutputFilter INFLATE;DEFLATE;proxy-html ここを削除
 #SetOutputFilter proxy-html
</Location>

これで成功。

コメントを残す

メールアドレスが公開されることはありません。