VirtuosoはデフォルトでSPARQLエンドポイントを8890ポートで公開している。
このままだと80ポートくらいしかアクセス出来ないやたらと厳しいネットワーク環境では見ることが出来ない。
基本的には以下を参考にすれば良い。
一年半くらい前に設定したときはこれで行けたような気がするんだけど、最近また設定することがあってやってみたら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>
これでもまだエラー。
さらにググって見るとこんな記事を発見。
すばらしい。この分野でやっと日本語の記事が出てくるようになったのか・・・感動
こちらの記事では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>
これで成功。