AWS EC2を用いたVirtuoso RDFストアの構築
はじめに
AWS EC2を用いたVirtuoso RDFストアの構築に関する備忘録です。独自ドメイン設定、HTTPS接続、Snorqlの設置、までを行います。
本記事以外にも、Virtuoso構築に関する有益な記事が多数存在しています。参考にしてください。
前提
ACM Certificateは作成済みとします。以下の記事などを参考にしてください。
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をインストールします。
以下を実行してください。上記の記事から一部変更しています。
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番ポートで公開する設定を行います。再度、合同会社ミドリアイティさんの以下の記事を参考にします。
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
は先ほど設定した独自ドメインです。
以下の記事を参考に、CORSを許可します。
具体的には、以下です。
パスワードの変更
dbaなどのアカウントの初期パスワードを変更します。具体的には、以下です。
Snorqlの設定
Snorqlはブラウザ用SPARQLインターフェイスです。ジャパンサーチでも採用されています。
ここでは、「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データの登録を行います。
まとめ
EC2にVirtuosoおよびSnorqlを立てる一通りの手続きをまとめました。この他にも、セキュリティグループの強化や、dbaユーザのパスワード変更を含む取り扱いなど、各種設定が必要です。
改めて記事にしたいと思います。
SPARQLエンドポイントを構築する際の参考になりましたら幸いです。
Discussion