Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Google Cloud Platform に構築した Virtuoso を無料でSSL化

Google Cloud Platform(以下 GCP といいます)の、Always Free(無期限の無料枠)を利用して、RDFストア Virtuoso を構築する方法について以下の記事で紹介しました。

Google Cloud Platformの無期限無料枠を利用した Virtuosoの構築方法

その続編として、無料ドメイン Freenom と、無料SSL証明書 Let's Encrypt を利用した Virtuoso の SSL化について紹介します。これも初学者向けに丁寧に書いたので冗長な記事になっています。ご了承ください。

Freenom で無料ドメインの取得

無料で好きなドメインを取得できる Freenom というサービスがあります。まず以下のサイトにアクセス。
https://www.freenom.com/ja/index.html

トップレベルドメイン(ドメイン名のドットの右側の文字)は、以下の5種類であれば無料で利用できます。
.TK   .ML   .GA   .CF   .GQ
(私がやったときは .ML は調子が悪く登録できませんでした・・・)

ドメイン名は、短い文字列(3文字以内)や辞書に載っているような単語は有料となります。

好きなドメイン名を決め、下記のように入力欄に打ち込み 利用可能状況をチェックします をクリック。
利用可能であれば、下記のように 「はい、XXXXX.XXは利用可能です!」 と表示されます。その状態で チェックアウト をクリック。
2020-06-25 (3).png

ドメインの維持期間の設定画面に遷移します。
デフォルトでは3ヶ月になっていますが、12ヶ月までは無料なので12ヶ月にします。(期間終了後、無料で更新もできます。)
Continue をクリック。
2020-06-25 (4).png

次に確認画面が表示されます。あなたのメールアドレスを入力し、Verify My Email Address をクリック。
2020-06-25 (6).png

しばらくすると以下のような認証用メールが届くので、記載してある認証用URLを開きます。
2020-06-25 (7).png

必要事項を入力し、I have read and agree...にチェックを入れ、Complete Order をクリックします。
(この入力情報が Whois に出るわけではありませんので安心してください)
これでドメインの登録が完了です。
2020-06-25 (9).png

次にDNSの設定をします。トップページから Survice -> My Domeins
2020-06-25 (10).png

Manage Domain をクリック。
2020-06-25 (11).png

Name 欄が空欄のところと www のところの両方の Target 欄に GCPの外部IP を入力し、Save Changes をクリック。
2020-06-25 (13).png
以上で、DNSのAレコードにあなたのGCPインスタンスのIPアドレスが記録され、ドメイン名でアクセスできるようになります。

ドメインが利用できるようになるまでしばらく時間をおいたのち、以下のように、WEBブラウザから http://ドメイン名:ポート8890番 でVirtuosoのウェルカム画面が出るか確認します。

http://linkedopendata.ga:8890 (ドメイン名は取得したものに変更すること)

8890番ポートへのアクセスをリバースプロキシで転送

ここからはGCPのターミナル内での作業となります。
左上のナビゲーションメニュー -> コンピューティング の中の Conpute Engine -> VMインスタンス から、SSH -> ブラウザウィンドウで開く を選択
24.png

Apacheのmod_proxyモジュールを有効にして、ポート8890番へのアクセスを転送するリバースプロキシの設定をします。
まずApacheをインストール

$ sudo apt-get update && sudo apt-get install apache2 -y

mod_proxy モジュールを有効に

$ sudo a2enmod proxy
$ sudo a2enmod proxy_http

リバースプロキシを設定するための .conf ファイルを新規作成

$ sudo vi /etc/apache2/conf-enabled/virtuoso-reverse-proxy.conf

以下のとおり記述し、:wq で保存し vi を終了

virtuoso-reverse-proxy.conf
ProxyRequests Off
# conductor/にアクセスがあったときのみconductorへ
ProxyPass /conductor/ http://localhost:8890/conductor/
ProxyPassReverse /conductor/ http://localhost:8890/conductor/
# 上記以外のアクセスは Query Editor
ProxyPass / http://localhost:8890/sparql/
ProxyPassReverse / http://localhost:8890/sparql/

Apacheを再起動

$ sudo systemctl restart apache2

ブラウザでそれぞれの画面が出るか確認

SSLの有効化

ポート443番を有効化し、SSLでアクセスできるように準備します。

mod ssl モジュールを有効に

$ sudo a2enmod ssl

default-ssl.conf を編集し上書き保存

$ sudo vi /etc/apache2/sites-available/default-ssl.conf
default-ssl.conf
<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin webmaster@localhost  
                ServerName XXXXXXXX.XX  <-- ここにあなたが取得したドメインを追記
                ....以下変更不要

default-ssl.conf へのシンボリックリンク作成

$ sudo a2ensite default-ssl

Apacheを再起動

$ sudo systemctl restart apache2

Let's Encryptの導入

次に、取得したドメインに対し、無料SSL証明書 Let's Encrypt を導入します。

$ sudo apt-get install letsencrypt python-letsencrypt-apache
$ sudo letsencrypt run --apache

しばらくすると Let's Encrypt のインストール用の設定画面が出て、いくつか質問が出ますので答えていきます。

下記の質問が出たら、1: のところに適用させたいドメインが表示されていることを確認し、何も入力せずそのまま Enter

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: linkedopendata.ga
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or
leave inputblank to select all options shown (Enter 'c' to cancel): 

次にメールアドレスを聞かれたらあなたのメールアドレスを入力
次に (A)gree/(C)ancel を聞かれたら A
次に Electronic Frontier Foundation からのメール送信の受託について聞かれたら N

次に下記のリダイレクト設定について聞かれたら、1 を入力し Enter

Please choose whether or not to redirect HTTP traffic to HTTPS, 
removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver
configuration.
2: Redirect - Make all requests redirect to secure HTTPS 
access. Choose this for
new sites, or if you're confident your site works on HTTPS.
You can undo this change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 

Congratulations! You have successfully..... のメッセージが出れば成功です。

Apacheを再起動

$ sudo systemctl restart apache2

ブラウザでSSL証明書が適用されているか確認
ブラウザのキャッシュをクリアしてから確認すること)

Let's Encryptの自動更新の設定

Let's Encrypt の有効期限は3ヶ月ですので、自動更新できるよう設定を行います。

Certbot の Let's Encrypt更新(renew) のドライランを実行

$ sudo certbot renew --dry-run

これだけで Cron に勝手に登録され、サーバーが生きている限り renew を適宜実行してくれますので、手動更新しなくても大丈夫です。

おわりに

以上で、完全無料かつ安全な Virtuoso エンドポイントが完成です。
Conductor で自分の作ったRDFを登録してみたり、SPARQL Endpoint から API でデータを取得したりして使い倒しましょう。

参考にさせていただいたサイト

mirkohm
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away