VPSでNode.jsが動く環境を作る その2

開発

前回の記事ではVPS上にapacheを導入して、HTTPサーバを立てるまで実施しました。

今回はその続きの作業から行っていきます。

サブドメインを作成し、DNSレコードをVPSに紐づける

VPSへの通信はhttpsなので、SSL証明書を適応する必要があります。

適用するSSL証明書を発行する為に、ドメインを確定しておく必要があるので、

SSL用のサブドメインを作成します。

※本記事では共用レンタルサーバ上のサイト(https://medjeworks.net/)に、コンテンツ配信環境用のVPSを繋げている為、サブドメインを取得しています。 VPSにメインサイトを構築する場合は、メインドメインの取得してください。


サブドメインを追加

MedjeWorksのサイトは「お名前.com」さんでドメインを取得しているので、

サブドメインの追加作業もそちらのポータルから実施します。

Webコンテンツ配備用のサブドメインを「contents.medjeworks.net」に設定


DNSレコードを設定

続いて、サブドメインのDNSレコード情報を設定します。

AタイプのDNSレコードで、VPSのIPアドレスを設定

これでサブドメイン(contents.medjeworks.net)の参照先がVPSになりました。

※ドメインを管理しているサービスにもよりますが、DNSレコード情報の反映まで時間がかかる場合があります

証明書を適用していないので警告が出ていますが、

前回の記事で立ち上げたHTTPサーバへアクセスできました!

SSL証明書を準備して適用する

VPSをサブドメインの宛先として設定できたので、次はSSL証明書を作成して適用します。

SSL証明書の作成

VPSのコンソール操作に戻ります。

SSL証明書の発行に必要なCSRを生成

$ openssl genrsa -des3 -out private.key 204
8        #秘密鍵ファイルとパスフレーズは適切に管理しましょう
$ openssl req -new -key private.key -out server.csr #サーバSSL証明書の発行が完了したら削除します
$ chmod 640 private.key                             #移動後の権限管理は適切に

$ mv private.key /etc/ssl/private/private.key

ConoHaのポータルのメニューから、「セキュリティ」→「SSL」を押して、

SSL証明書の申し込みを進める

CSRの入力を求められるので、↑で出力したserver.csrの内容をコピペ

必要な情報を画面に沿って入力

上記画面の様に、認証IDが表示されたら、説明通りTXTタイプのDNSレコードを追記しましょう。

MedjeWorksのドメイン本体はお名前.comで設定しているので、お名前.comのポータルで操作します。

contents.medjeworks.net と www.contents.medjeworks.netのサブドメインに対するTXTタイプのDNSレコードをそれぞれ設定します。

※双方で認証IDの文字列が異なるので、注意


再びConoHaポータルの画面に戻って「認証依頼」ボタンを押します。

※contents.medjeworks.net と www.contents.medjeworks.netそれぞれで「認証依頼」ボタンを押します

申請完了画面になったらOK


SSL証明書をVPSに適用する

ポータルの「セキュリティ」→「SSL」の中に、先程生成したSSL証明書があるので、

これをVPSのHTTPサーバーに適用します。

「証明書」からSSL証明書がダウンロードできるので、PEM形式でダウンロード

ダウンロードしたSSL証明書ファイルをVPSにアップロード

$ mv <アップロードした証明書> /etc/ssl/certs/ssl.pem
$ chmod 640 /etc/ssl/certs/ssl.pem

apacheのconfファイル(/etc/apache2/sites-available/default-ssl.conf)を変更

# Before
SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile   /etc/ssl/private/ssl-cert-snakeoil.key

#After
SSLCertificateFile      /etc/ssl/certs/ssl.pem
SSLCertificateKeyFile   /etc/ssl/private/private.key

confを書き換えたらapacheを再読み込み

$systemctl reload apache2
 ※ここでパスフレーズを聞かれたら、private.keyファイルを生成した際のパスフレーズを入力

これでSSL証明書の設定は完了です。


それではブラウザのキャッシュやら履歴やらをクリアして、https://contents.medjeworks.netにアクセスしてみます。

ちゃんと証明書が適用されてますね!

※尚、この設定だとVPSを再起動した際、apacheが秘密鍵ファイルのパスフレーズ入力を毎回求めてくるので、面倒な場合はパスフレーズを解除するかスクリプトを組んで回避してください(自己責任でお願いします)

apacheの仮想ホスト設定(任意)

テスト環境用等サブドメイン毎にホストを分けておく方が何かと活用しやすいので、仮想ホストとして設定しておきます。

$ sudo mkdir /var/www/contents.medjeworks.net
# cd /var/www/contents.medjeworks.net
$ sudo chmod 744 .
$ sudo touch index.html  #テスト用HTML
$ sudo chmod 644 index.html
$ sudo vim index.html

index.htmlを表示テスト用の適当な内容を設定

<html>
  <head>
    <title>MedjeWorks contents</title>
  </head>
  <body>
    <p>Hello World!!</p>
  </body>
</html>

仮想ホストを設定する為にapacheの設定ファイルを追加します

$ sudo cd /etc/apache2/sites-available
$ sudo touch contents.medjeworks.net.conf
$ sudo chmod 644 contents.medjeworks.net.conf
$ sudo vim contents.medjeworks.net.conf

内容は下記のとおり

<VirtualHost *:443>
    ServerAdmin <サーバ開発者のメールアドレス>
    ServerName contents.medjeworks.net
    ServerAlias www.contents.medjeworks.net
    DocumentRoot /var/www/contents.medjeworks.net/
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/ssl.pem
    SSLCertificateKeyFile /etc/ssl/private/private.key
    <Directory "/var/www/contents.medjeworks.net/">
        Order allow,deny
        Options FollowSymlinks Includes
        Allow from all
        Require all granted
        AllowOverride all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

追加した設定ファイルの有効化とデフォルトの設定ファイル無効化

$ sudo a2ensite contents.medjeworks.net.conf
$ sudo a2dissite 000-default.conf

$ sudo apache2ctl configtest #構文チェック用コマンド
Syntax OK

$ sudo systemctl reload apache2 #apache再読み込み

ブラウザで表示を確認

「/var/www/contents.medjeworks.net/index.html」に配置した内容が表示出来ました。

続きは次回へ!

コメント

タイトルとURLをコピーしました