🐙

AWS EC2を用いたVirtuoso RDFストアの構築

2022/08/16に公開

はじめに

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サーバを立ち上げておきます。

sudo yum install httpd -y
cd /var/www/html
sudo vi index.html

<p>test</p>

sudo systemctl start httpd
sudo systemctl enable httpd

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

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

sudo su
cd
yum install -y gcc gmake autoconf automake libtool flex bison gperf gawk m4 make openssl-devel readline-devel git
git clone https://github.com/openlink/virtuoso-opensource.git
cd virtuoso-opensource
./autogen.sh
./configure --prefix=/usr/local/ --with-readline 
make
make install

そして、以下を実行して、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

以下を入力します。

ProxyPass        /sparql http://localhost:8890/sparql retry=5
ProxyPassReverse /sparql http://localhost:8890/sparql
ProxyPass        /conductor http://localhost:8890/conductor retry=5
ProxyPassReverse /conductor http://localhost:8890/conductor

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

service httpd restart

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に配置します。

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

cd /var/www/html

wget -p -e robots=off https://jpsearch.go.jp/rdf/sparql/easy/index.html
mv -f jpsearch.go.jp/rdf/sparql/easy/* .
rm -rf jpsearch.go.jp

# endpointのURLの置換
before=https://jpsearch.go.jp/rdf/sparql
after=https://abc.xyz/sparql
find *.js -type f | xargs sed -i "s@$before@$after@g"

# 不足する画像のダウンロード
wget https://jpsearch.go.jp/rdf/sparql/easy/wpfav.png

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

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

データの追加

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

https://zenn.dev/nakamura196/articles/7d4ac7556e2b21

まとめ

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

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

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

Discussion