riina-k.net

音楽・小説・プログラミングを手がけるリイナの拠点。

サーバ引っ越しで VirtualHost で引っかかったお話

仮想サーバを借りている『さくらクラウド』の石狩第1ゾーンで、旧プランが来年にサービス終了というお知らせが来てました。
2020/09 石狩第1ゾーン 旧プラン環境閉鎖について

まだ1年以上ありますが、早いことに越したことはないと思い、使ってないサブドメインの整理も兼ねて、新プランで別途サーバを契約し旧 riina-k.info の引っ越しを行なうことにしました。

バーチャルホストの作成手順忘れて、1ヶ月くらい原因不明のエラーに悩まされてました。

やりたいことは旧 riina-k.info と同じ。
Apache でバーチャルホスト切って複数の環境を載せるだけ。
こっちのサーバでは敢えて Docker は載せない。妙なこだわり

とりあえず new.riina-k.info というサブドメインを作成し、そのドメインだけ新サーバを見に行く設定を作りました。
SSL 証明書は Let’s Encrypt で作成済み。
『riina-k.tv に SSL(HTTPS) を導入してみた』 のときの作業をそのまま行いました。
注意点として、certbot-auto コマンドが certbot に名前が変わってました。

バーチャルホストの設定ファイルはこんな感じ。

/etc/httpd/conf.d/vhosts-new.riina-k.info.conf

<VirtualHost *:80>
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot /var/www/vhosts/new.riina-k.info/public
    ServerName new.riina-k.info

    ErrorLog logs/vhosts/new.riina-k.info/ssl_error_log
    CustomLog logs/vhosts/new.riina-k.info/ssl_access_log combined env=!VLOG

    <Directory /var/www/vhosts/new.riina-k.info/public>
        AllowOverride All
    </Directory>

    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf

    SSLCertificateFile      /etc/letsencrypt/live/new.riina-k.info/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/new.riina-k.info/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/new.riina-k.info/chain.pem
</VirtualHost>

ポート 80 のほうはそもそも使わないので、リダイレクトの設定だけしてドキュメントルート・サーバ名・ログ出力をばっさり削りました。

ところが。

https://new.riina-k.info にアクセスすると

<h1>new server</h1>

うん????
これ実は、/var/www/html/index.html に設置してる HTML なんです。
つまりデフォルトのドキュメントルートを見ちゃってる。

リダイレクト設定を外し、ドキュメントルートの設定を復活させて http://new-riina-k.info にアクセスしてみると

<h1>new.riina-k.info</h1>

こっちはちゃんと /var/www/vhosts/new.riina-k.info/public/index.html に設置した HTML が出てきた。なんで……??

~~ ここで力尽き、解決を諦めた ~~

そして1ヶ月後の今日。
リダイレクトもできてたわけだし、vhosts-new.riina-k.info.conf の問題じゃなさそう。
本格調査をし、ついに原因が分かりました。
犯人は /etc/httpd/conf.d/ssl.conf です!!
どうやらこの中でポート 443 へのアクセスをすべて拾ってデフォルトの設定にされてしまっていたようでした。
ssl.conf-old とリネームして読み込ませないようにし、

/etc/httpd/conf/httpd.conf

(略)
Listen 80
Listen 443 https
(略)

これだけ書いて Apache をリスタート。
これで https://new.riina-k.info にアクセスすると

<h1>new.riina-k.info</h1>

できたーーーー!!!!
証明書も正しく載ってるし、これで移行作業が進めることができるようになりました。

  1. コメント 0

  1. トラックバック 0

return top