このブログのあるサーバは yum でインストールした nginx で動かしてるのだけど、nginx の場合はパッケージでインストールすると、いろいろとオプションを設定することもできないわけで、どうするかなと。
でまぁパッケージの nginx を動かしてる裏でソースコードの nginx を make するとかきっとややこしいぞとか思ったわけで、他に私がやりやすい方法はないかと考えたわけです。
足りない頭を使った結果、「作業中、サイトのメンテナンス画面を 503 で表示させるために、使っていない Apache を起動しよう」という結論になりました。要するにブログを止めている間、検索エンジンに対しては HTTP ステータスコード 503 を返すようにしてメンテナンス中であることを知らせつつ、裏でのんびり作業しようと思い付いた次第であります。
メンテナンス画面をステータスコード 503 で返す理由というのは、『Webサイトのメンテナンス中画面を出す正しい作法と.htaccessの書き方 | Web担当者Forum』を参考にしてください。単純に「メンテナンス中です」という内容の html を表示すると、検索エンジン側で「コンテンツが消えた判定」をされる恐れがあるからです。いやそうじゃないから。
というわけで、Apache を起動しないまま放置していた httpd.conf をまずは弄る……前に、現在のルートとは別のディレクトリを作成しておくというようなことを踏まえた手順など。
- nginx で設定してるルート(/var/www/html)とは別の Apache 用メンテナンス告知専用ディレクトリ(/var/www/maintenance)を作成する。
sudo mkdir /var/www/maintenance
- maintenance ディレクトリに、現在メンテナンス中であることを書いた maintenance.html を作っておく。内容はご自由に。
cd /var/www/maintenance sudo vi maintenance.html // 手元で作成して scp で送り込むと楽ですね
- 最低限の設定を httpd.conf に行う。サイトへのアクセスはすべて、ステータスコード 503 を吐いて maintenance.html へリダイレクトされるようにする。
sudo vi /etc/httpd/conf/httpd.conf
# ServerTokens On ServerTokens Prod ...... # ServerName www.example.com:80 ServerName yourdomain:80 ...... # DocumentRoot "/var/www/html" DocumentRoot "/var/www/maintenance" ...... #
...... # ServerSignature On ServerSignature Off ...... <virtualHost *:80> DocumentRoot /var/www/maintenance ServerName yourdomain ErrorDocument 503 /maintenance.html RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteRule ^.*$ - [R=503,L] </virtualHost> sudo apachectl configtest // httpd.conf の構文チェック Syntax OK
- nginx を止めて httpd を起動する。
sudo /etc/init.d/nginx stop sudo /etc/init.d/httpd start
- サイトのトップページや個別記事にアクセスして、maintenance.html が表示されることを確認する。
- 5で問題なければ httpd を止めて nginx を起動し、元に戻す。
sudo /etc/init.d/httpd stop sudo /etc/init.d/nginx start
こうしておくと、メインである nginx を長時間弄る時でも Apache に切り替えてメンテナンスしていることを告知しつつあれこれできるんじゃないかと。Web サーバを振り替えて作業するので、本番サーバ上でも焦らないで済むかなぁとか思ったりしたのであります。
あ、当然のことながら httpd の自動起動は設定しないこと。
そのような流れで、本日は Apache の設定だけ完了。これで、いつでもメンテナンスモードに切り替えることができるようになりましたっと。うちの Apache はメンテナンス告知をするためだけにインストールされた娘ということになりました。アンインストールしないで残しておいて良かったわ。
本番本命の nginx 切り替えは時間のある時かな。もうちょっとしたら GW に突入するし、そこで作業してもいいかとか。その気になればどこかの週末にでも。ともかくメンテナンス画面が出たら、「ああ何かやってんだな」と思っていただけますと幸いです。