概要。
ミニPCを仮想化し、仮想ゲストを構築した。その仮想ゲストをWordPressのサーバにし、Webサイトに公開するまでの手順をここで記載する。
1. UbuntuをWordPress化。
以下の手順のSSL対応を省略して、WordPressのインストールを行う。ここでは特に新規での情報はない。
2. ドメインの購入。
色々比較したが、自分はお名前.comで購入した。
3. CloudFlareの設定
以下の手順がわかりやすい。これを最後まで実行して、WebサーバとPCを繋ぐところまで進める。
この時、一点詰まった。
ドメインの名前と一緒になってしまうといけないという事で、サブドメイン+ドメイン名をつけた。
そして、CloudFrontとWebサーバ間の間をHttpsにするために、以下の手順を実行した。
Cloudflareでオリジン証明書の発行
Cloudflareのダッシュボードにログインし、対象のドメインを選択します。
「SSL/TLS」タブに移動し、次に「オリジンサーバー」タブをクリックします。
「証明書の作成」ボタンをクリックし、次の設定を確認して証明書を作成します:
有効期限: デフォルトでは15年間の証明書を選べます。
ホスト名: ドメイン名(例: mydomain.com)およびワイルドカード(例: *.mydomain.com)を指定可能です。
証明書(Certificate)と秘密鍵(Private Key)が表示されるので、それを保存します。後でApacheの設定で使います。
証明書: origin.pem
秘密鍵: origin.key
2. Apache(httpd)に必要なモジュールの確認
ApacheでHTTPS通信を行うために、SSLモジュールが有効になっているか確認します。次のコマンドを使用してモジュールを有効にします。
dnf -y install mod_ssl
3.オリジン証明書と秘密鍵の配置
Cloudflareからダウンロードした証明書(origin.pem)と秘密鍵(origin.key)を安全なディレクトリに保存します。たとえば、/etc/ssl/certs/と/etc/ssl/private/ディレクトリに配置します。
bash
コードをコピーする
sudo mkdir -p /etc/ssl/certs /etc/ssl/private
sudo mv origin.pem /etc/ssl/certs/
sudo mv origin.key /etc/ssl/private/
sudo chmod 600 /etc/ssl/private/origin.key
4 ApacheのSSL設定
ApacheのSSL設定ファイルを編集します。通常は、/etc/httpd/conf.d/ssl.conf(CentOSなどの場合)や/etc/apache2/sites-available/default-ssl.conf(Ubuntuなどの場合)にあります。
SSL設定を以下のように記述します。SSLCertificateFileとSSLCertificateKeyFileには、Cloudflareの証明書と秘密鍵のパスを指定します。
<VirtualHost *:443>
ServerAdmin webmaster@mydomain.com
ServerName mydomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/origin.pem
SSLCertificateKeyFile /etc/ssl/private/origin.key
# 他の設定(必要に応じて)
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
その後、FWの443を開ける。
sudo ufw allow 443
sudo ufw reload
- Apacheの再起動
最後に、Apacheを再起動して設定を反映させます。
sudo systemctl restart apache2
正しいSSL証明書なら、これでサブドメイン+ドメインでアクセスする事ができるのだが、今回は自己証明書のため、以下のエラーが起こる。
解決策は以下の通り。
I got this working by going into the Tunnel setup and enabling no-tls-verify on the tunnel.
これで、サブドメイン+ドメインでアクセスできるようになる。
参考サイトまとめ
概念的な意味ではこれがわかりやすい。(次回以降の汎用性の高さを考えて。)