はじめに

AWS EC2を用いたVirtuoso RDFストアの構築に関する備忘録です。独自ドメイン設定、HTTPS接続、Snorqlの設置、までを行います。

本記事以外にも、Virtuoso構築に関する有益な記事が多数存在しています。参考にしてください。

https://midoriit.com/2014/04/rdfストア環境構築virtuoso編1.html

https://qiita.com/mirkohm/items/30991fec120541888acd

https://zenn.dev/ningensei848/articles/virtuoso_on_gcp_faster_with_cos

前提

ACM Certificateは作成済みとします。以下の記事などを参考にしてください。

https://dev.classmethod.jp/articles/specification-elb-setting/#toc-3

EC2

まずEC2のインスタンスを作成します。

Amazon Linuxを選択し、インスタンスタイプはt2.microとしました。

ネットワーク設定については、「セキュリティグループを作成する」を選択し、「HTTPSトラフィックを許可する」と「HTTPトラフィックを許可する」の両方にチェックを入れます(以下の図では、後者にのみチェックが入っている状態ですのでご注意ください)。

インスタンスの状態が「実行中」になったら、画面右上の「接続」ボタンを押して、サーバに接続します。

接続後、以下を実行して、apacheサーバを立ち上げておきます。

scs<ssudupuudd>ddootooveyavsssurityym/<sswi/ttiwnpeenwd>mms/eccthxttat.lllmhlltsemtnhlaatrbttlpedhth-ttyptdpd

ELB作成

「ロードバランシング」の「ターゲットグループ」を選択します。

「Create target group」から、[Basic configuration]で「Instances」を選択して、あとは下図のように設定します。「VPC」は先ほど立ち上げたEC2インスタンスと同じものを選択しています。

「Register targets」の画面において、画面上部でインスタンスを選択して、「Include as pending below」ボタンをクリックします。すると、下図のように、選択したインスタンスが画面下部に移動します。

その後、「Create」ボタンを押します。

次に、「ロードバランサー」から「ロードバランサーの作成」を行います。

「Create Application Load Balancer」を選択し、以下のように「Network mapping」で複数のサブネットを選択します。

次がポイントですが、「Security groups」において、選択済みの「default」を削除して、先にEC2インスタンスの作成時に作成したセキュリティグループ「lanch-wizard-XX」など選択します。

また、「Listeners and routing」は、「HTTPS」を選択して、「Forward to」に先ほど作成したターゲットグループを選択してください。

さらに、「Secure listener settings」の「Default SSL/TLS certificate」において、「From ACM」から作成済みのACM certificateを選択してください。

その後、画面下部の「create」ボタンを押します。

Route 53

レコード名を設定したのち、「エイリアス」を有効にして、以下のように、ALBへのエイリアスなどを選択します。

その後、画面下部の「レコードの作成」をクリックします。

指定した独自ドメインにHTTPS接続できれていれば成功です。

Virtuosoのインストール

合同会社ミドリアイティさんの以下の記事を参考に、Virtuosoをインストールします。

https://midoriit.com/2014/04/rdfストア環境構築virtuoso編1.html

以下を実行してください。上記の記事から一部変更しています。

scygcmmuduid/aadmtackkovuoeeicitnsnlrofiusotgintnuegsaeonutls.ralhoselt-hl-toypp-sepg:nrc/sec/ofguigirxmtc=ahe/kuuebs.rac/uoltmoo/ccoaoplne/fnlai-unwtkio/tmvhai-krreteualodislboit-nooeoplenfsloeuxrcbei.sgointgperfgawkm4makeopenssl-develreadline-develgit

そして、以下を実行して、Virtuosoを立ち上げます。

/usr/local/bin/virtuoso-t+configfile/usr/local/var/lib/virtuoso/db/virtuoso.ini

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

次に、SPARQLエンドポイントを80番ポートで公開する設定を行います。再度、合同会社ミドリアイティさんの以下の記事を参考にします。

https://midoriit.com/2014/06/rdfストア環境構築virtuoso編3.html

vi/etc/httpd/conf.d/mod_proxy.conf

以下を入力します。

PPPPrrrrooooxxxxyyyyPPPPaaaassssssssRReevveerrssee////ssccppooaannrrddqquullcctthhoottrrttpphh::tt/tt/ppll::oo/cc/aalllloohhccooaasslltthh::oo88ss88tt99::0088//88ss99pp00aa//rrccqqoollnnddruuecctttrooyrr=5retry=5

そして、apacheを再起動します。

servicehttpdrestart

CORSの許可

上記の設定により、ブラウザを使用して、以下からconductorにアクセスできます。abc.xyzは先ほど設定した独自ドメインです。

https://abc.xyz/conductor

以下の記事を参考に、CORSを許可します。

https://qiita.com/misshie/items/f603bf5a3971ab576907

具体的には、以下です。

パスワードの変更

dbaなどのアカウントの初期パスワードを変更します。具体的には、以下です。

Snorqlの設定

Snorqlはブラウザ用SPARQLインターフェイスです。ジャパンサーチでも採用されています。

https://www.kanzaki.com/works/ld/jpsearch/snorql_ldb-about

ここでは、「Snorql for Japan Search」をコピーさせていただき、/var/www/htmlに配置します。

サーバに接続した状態で、以下を実行します。

cwmr#baf#wdgvmefigeeftnet--noedtvfrdrra-fpe=hrpjo=h.t/pjihtjtw-spnttspweesttpswaeps-:/rraUs:t/hocrR:y/tbhcLpjmo.haepltg.jbssogpcfe=.os.aoj.exrfpjaycf/przxhrc/a.hdhsrgtf.pgot/gas.psorjsp.qsp:ajle//rpdr/q/djlr-fp/di/sefsea/"passsaryp@rc/a$qh*rbl.qe/glfeooa.rsjeyp@//$wrapdfffta/evsr.p@pagnr"gql/easy/index.html

これにより、https://abc.xyz/にアクセスすると、snorqlが表示されます。

上記ページの文言などは、後から適宜修正します。

データの追加

以下の記事などを参考に、RDFデータの登録を行います。

まとめ

EC2にVirtuosoおよびSnorqlを立てる一通りの手続きをまとめました。この他にも、セキュリティグループの強化や、dbaユーザのパスワード変更を含む取り扱いなど、各種設定が必要です。

改めて記事にしたいと思います。

SPARQLエンドポイントを構築する際の参考になりましたら幸いです。