ubuntu VPSの自鯖上にサブドメインを構築する

はい、show-go.works 廣井翔伍です。

前回の初回の投稿で、このサイトをつくるにあたってしたことについて自分の後学のために、まとめています。「同じようなことをやってみよう」「VPSで、公開サイトをつくってみよ」、と思っている人に届けばいいなーと思います。

初回投稿

レンタルサーバじゃなくてVPSの動機

今時、とてもお手軽にWordpressサイトが作れるのに、なんでわざわざVPS?と思われる方がほとんどと思います。

Webサイト運営は10代の頃からやってきました。でも、趣味でやってたので、当然、趣味のレベルを出ませんでした。でも、仕事上で使えたらいいなとおもいました。

そこで、今回、自分の趣味ではなく、きちんと仕事レベルで使い物になるよう、作業していこう、というところを主眼に置いてあえて一見タイパが悪そうな作業もしてます。

そして、自分に何かに挑戦することを課してやりつづけ、きちんと他者から批判可能な形でオープンな場所に表現して置き続けるということをしてみたいとおもいます。

ということで、サーバサイドの構築から作業をやってみてます。

あとは、AIを実際に試してみる機会にもしてみたかったのです。ChatGPT3.5ですけれど、それなりに使えると噂ですので、自分の体感として、新規学習と並行して成果物を用意するといった、教えてくれる人がいないとかなりタイパの悪い作業に望んだとしても、まずまずの時間でやりたいことができるのではないか、と考えました。

期待すること

こうなったらいいな、と、する前に期待していたことは以下の通りです。

  • 当分やってなかった、サーバの設定をやって勘を取り戻す。
  • 環境構築から公開まで設定を、体感する。
  • セキュリティについて、自分でリスクを想定しながら確認する。
  • 成果物としてWordpressが動くことで、自分の学習や情報発信用のブログが結果的に手に入る。
  • ついでにChatGPTを実用してみて、自分なりの感想が言える。

取り組む前に思ってたのは、こんなところです。

とりあえず、実際にwordpressが動く程度までやってみることで、Linux〜フロントエンドまでのサービスを準備するのに最低限必要なことについての勘を取り戻す。なお、この記事長くなったので、結果として、前編後編に別れてしましました。

前半部分では、サブドメインで公開webサーバー公開までを行なってます。

課題と作業の流れ

先ほども触れましたが、wordpressサイトを用意するだけなら、ここまでする必要性はまったくないんですけれども、「ちゃんとするため」にあえて、サーバの設定なども今回やってみています。

これまで作業をしてきたメモがevernoteとか手元にあるので、それを参考にすればそれなりに何も調べなくても、wordpressが動くところまで設定はできそうだったのだけれども過去資料の参照は禁止にして、ChatGPTとweb検索の併用で作業を進めました。

なんなら、どのような手順で進めるべきかの方針についても、自分がある程度の真偽判定ができることから、今回はChatGPTに質問してアウトラインを作ってもらって、それで問題なければマル乗りして、という形でChatGPTを活用してみています。

以下具体的な作業内容

それでは、作業内容です。おおまかに記録をとってみてたので、それをそのまま掲載してみています。なお、ガンガンChatGPTに話を振ってます。

作業の概要をChatGPTに質問

まず、hogehoge.comにfugafugaというサブドメインを設定したいとしたら、どうしたらいいですか、と質問してみました。以下ChatGPTの回答

fugafuga.hogehoge.com サブドメインを HTTPS で公開するために、以下の手順を実行する必要があります。以下の手順は、Apache Webサーバーと Certbot を使用して、Let’s Encrypt 証明書を取得し、設定を変更するものです。以下は具体的な手順です:

  1. サブドメインのDNSレコードを設定: DNS管理パネルで、fugafuga.hogehoge.com のAレコードまたはCNAMEレコードを設定して、サブドメインが正しいサーバーIPアドレスを指すようにします。このステップを完了することで、サブドメインはサーバーに正しくルーティングされます。
  2. Certbotのインストール: Certbotは、Let’s EncryptからSSL証明書を取得するためのツールです。UbuntuでCertbotをインストールします。sudo apt update sudo apt install certbot python3-certbot-apache
  3. CertbotでSSL証明書を取得: Certbotを使用して、fugafuga.hogehoge.com のSSL証明書を取得します。sudo certbot --apache -d fugafuga.hogehoge.com Certbotは証明書の取得手続きを自動的に行います。証明書が取得されると、CertbotはApacheの設定も自動的に更新します。
  4. Apache設定の確認: CertbotはApacheの設定を更新するため、正しく設定されていることを確認しましょう。Apacheの設定ファイルを開き、SSL設定が正しいか確認します。sudo nano /etc/apache2/sites-available/fugafuga.hogehoge.com.conf SSL設定やドメインの設定が正しいことを確認して、問題があれば修正します。
  5. Apacheの再起動: Apacheの設定を変更した場合、サーバーを再起動して変更を適用します。sudo systemctl restart apache2

これで、fugafuga.hogehoge.com サブドメインはHTTPSで公開され、Let’s EncryptのSSL証明書を使用してセキュリティが確保されています。適切な設定を行ったら、ブラウザで https://fugafuga.hogehoge.com を開いて確認してください。設定が正しく行われていれば、サブドメインは正常にアクセスできるはずです。

from chatGPT

ChatGPTの用途、概要、アウトラインの確認も結構バカにならないな、と思いました。

実は、本当に、冷静に、本当にCNAMEレコードのことを忘れてたので、聞いてよかったです。どうせ気がついたとはいえ、おかげ様で、スムーズに作業を進めることができました。

chatGPTで参考学習 Aレコードと、CNAMEレコード

ちょっと寄り道して、Aレコードと、CNAMEレコードのメリットデメリットについては、きちんと調べたことがなかったので、あくまで参考レベルとしてChatGPTさんに質問してみる。

fugafuga.hogehoge.com サブドメインを正しいサーバーIPアドレスに指すには、DNSレコードのタイプと値を設定する必要があります。以下は具体的な手順です:

  1. サブドメインのAレコード: この方法は、サブドメインを特定のIPアドレスに関連付けるために使用します。あなたのサブドメインを特定のIPアドレスにリダイレクトする場合に使用します。例:
    • タイプ: A
    • ホスト名: fugafuga(これがサブドメイン名です)
    • IPアドレス: サブドメインを公開したいサーバーのIPアドレス
    例えば、fugafuga.hogehoge.com のIPアドレスが 192.168.1.100 の場合、Aレコードは次のようになります:タイプ: A ホスト名: fugafuga IPアドレス: 192.168.1.100
  2. サブドメインのCNAMEレコード: この方法は、サブドメインを既存のドメインにエイリアス(関連付け)する場合に使用します。通常、既存のドメインのAレコードまたはCNAMEレコードを指定します。例:
    • タイプ: CNAME
    • ホスト名: fugafuga(これがサブドメイン名です)
    • データ: サブドメインをエイリアスしたい既存のドメイン名
    例えば、fugafuga.hogehoge.com を hogehoge.com の別の部分にエイリアスする場合、CNAMEレコードは次のようになります:タイプ: CNAME ホスト名: fugafuga データ: hogehoge.com

DNSの変更が反映されるまでには時間がかかることがあるため、設定を変更した後、DNSのキャッシュをクリアするか、少し待つ必要があります。また、DNSレコードの設定方法は、DNS管理パネルによって異なることがありますので、ご利用のDNSホスティングサービスのドキュメンテーションを確認してください。

from ChatGPT

いたせり尽せり情報。すごいなあ。

TTLってなんでしたっけ

レコードを設定しようとした時に、本当に思い出せない項目があってショックをうけました、なんだったかしらこれ。TTL。

ここまできたら、恥を忍んで、ChatGPTに前にも調べたのに全然何も思い出せなかったTTLについても質問してみる。本当に何も思い出せない。全く思い出せない、でも恥ずかしくない、そう、ChatGPTならね。

TTL(Time To Live)は、DNSレコードがキャッシュされている期間を示す値です。TTLの適切な値は、具体的な要件に依存します。TTLは秒単位で設定されます。

適切なTTLの値を選択する際に考慮すべき要因は次の通りです:

  1. サイトの更新頻度: サイトのコンテンツが頻繁に変更される場合、短いTTLを選択することが重要です。これにより、DNSキャッシュが比較的速く期限切れとなり、新しい情報にアクセスできます。
  2. サイトのトラフィック: サイトが高トラフィックである場合、TTLが短いとDNSサーバーに負荷がかかる可能性があるため、適度な値を選びます。
  3. DNSインフラストラクチャの信頼性: サイトのDNSインフラストラクチャが信頼性が高く、高可用性である場合、TTLを短く設定しても問題がないかもしれません。しかし、DNSサーバーに信頼性の問題がある場合は、TTLを長く設定し、DNSレコードのキャッシュをより長い間維持することが有用です。
  4. サイトの冗長性: サイトが冗長なサーバーやデータセンターでホスティングされている場合、TTLが短いとユーザーが異なるサーバーや場所に迅速に切り替えることができます。

一般的に、TTLの適切な値は、5分から1時間の範囲内で設定することが多いです。例えば、1800秒(30分)から3600秒(1時間)の間でTTLを設定することがよくあります。ただし、具体的な要件に基づいてTTLを調整することが重要です。必要に応じてTTLを変更できることを考慮して、柔軟な設定を行うことが良いでしょう。

from ChatGPT

サブドメインを設定する方法としてのバーチャルホスト

バーチャルホストって、言ったり、仮想ホストっていったりしますけれども、要するにドメインを記憶領域のどこに割り当てますか?という機能についてどうしたらいいんだっけ、ってなったのです。

とりあえず領域を割り当てて設定をしたところ、残念ながらcertbotがきちんと動作しませんでした。

で、バーチャルホストの設定についても、ChatGPTへ聞いてみた。

Certbotが仮想ホスト設定ファイルを認識しない場合、設定ファイルに不足している可能性があります。以下の点を確認し、設定ファイルを修正してみてください:

  1. 正しい設定ファイルの内容: 作成した /etc/apache2/sites-available/fugafuga.hogehoge.com.conf ファイルには、適切な仮想ホスト設定が含まれていることを確認してください。設定ファイルには少なくとも以下の要素が必要です:
    • <VirtualHost> ブロック内で ServerName ディレクティブが正しく設定されていること。
    • サブドメインに関連するドキュメントルート (DocumentRoot) の設定。
    • 必要に応じてSSL証明書の設定。
    例えば:<VirtualHost *:80> ServerName fugafuga.hogehoge.com DocumentRoot /var/www/html/fugafuga </VirtualHost> この設定は、ポート80を使用し、fugafuga.hogehoge.com サブドメインを /var/www/html/fugafuga ディレクトリに関連付けます。SSL証明書が必要な場合は、その設定も追加してください。
  2. 設定ファイルの有効化: a2ensite コマンドを使用して、新しい設定ファイルを有効にします。これにより、Apacheはその設定を読み込みます。sudo a2ensite fugafuga.hogehoge.com.conf
  3. Apacheの再起動: 設定ファイルの変更後、Apacheを再起動して変更を反映させます。sudo systemctl restart apache2
  4. Certbotの再実行: 修正した設定ファイルが有効になったら、Certbotを再実行してSSL証明書を取得し、設定ファイルを更新します。sudo certbot --apache -d fugafuga.hogehoge.com

これらの手順を実行して、設定ファイルを正しく有効化し、CertbotによってSSL証明書が設定されるはずです。設定ファイルに誤りがあるか、設定ファイルが正しく有効化されていない場合、Certbotは適切な仮想ホストを見つけられないことがあります。

from ChatGPT

a2ensiteコマンドとか知りませんでした。反省します。次に生かします。

httpからhttpsへのリダイレクト

httpをhttpsにする強制リダイレクト導入。httpのままだと、セキュリティ上の問題から今ひとつなので、強制リダイレクトもわすれずに。

Apache WebサーバーでHTTPSのみを強制するには、HTTPアクセスをHTTPSにリダイレクトする方法が必要です。これを実現するために、.htaccess ファイルまたは Apache の仮想ホスト設定を変更する方法があります。以下にそれぞれの方法を説明します。

.htaccess ファイルを使用する方法

  1. サーバーのドキュメントルートにある .htaccess ファイルを編集または作成します。
  2. 以下のコードを .htaccess ファイルに追加して、HTTPからHTTPSへのリダイレクトを設定します。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

  1. ファイルを保存します。
  2. ウェブサーバーを再起動するか、.htaccess ファイルの変更が即座に反映されるように設定してください。

仮想ホスト設定ファイルを使用する方法

  1. Apache の仮想ホスト設定ファイル(httpd.conf または .conf ファイル)を編集します。
  2. 仮想ホストの設定セクション内で、次の設定を追加します。
<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / <https://example.com/>
</VirtualHost>

上記の例では、example.com を実際のドメインに置き換えてください。

  1. ファイルを保存します。
  2. Apache サーバーを再起動します。

どちらの方法を選択するかは、環境と好みに依存します。.htaccess ファイルを使用する方法は、個別のディレクトリや仮想ホストごとに異なる設定を行いたい場合に便利です。一方、仮想ホスト設定ファイルを変更する方法は、サーバー全体に適用されるため、より一般的な場合に適しています。HTTPSのみを強制するために、上記の方法のいずれかを選んで設定を行ってください。

from ChatGPT

これで無事に、attentionをサブドメインにした、attention.show-go.worksサイトを作ることができました。それが、このサイトですね。

仮想ホストで、サブドメイン公開までの手順までです。しかし、chatGTP引用をおりまぜると、なんだか、長くなったので、とりあえずここまでにします。

ここから、WordPressが動くようにするために色々やっていきます。

後編に続きます。

後編

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です