さくらのクラウドにソーリーサーバーを作る

  • 投稿日:
  • by
  • カテゴリ:

サーバーメンテナンスなどでWebサーバーを1時間ほど止めるとき、まったくレスポンスがないと利用者が困るので
どのページにアクセスしてもメンテナンス告知ページを表示するようにする。
具体的には、あらかじめDNSのTTLを短くしておき、メンテの際にソーリーサーバーのIPに振り向ける。
本番サイトはSSL化していたので、ソーリーサーバーもhttps受け入れる想定。

そのソーリーサーバーを立てた時のメモ:
1)さくらのクラウドで一番安いプランを契約して起動。環境はCentOS6.9、Apache2.2
2)SSHでログインしてhttpdインストール
yum -y install httpd
3)mod_sslをインストール
yum -y install mod_ssl
4)告知ページを作成してドキュメントルートに保存
vi /var/www/html/maintenance.html
5)アパッチの設定(httpはhttpsに飛ばす。どのURLにアクセスしても503ステータスでメンテページに飛ばす、ただし画像は除く)
vi /etc/httpd/conf/httpd.conf

-------------------
ErrorDocument 503 /maintenance.html
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName twipla.jp
DocumentRoot /var/www/html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
</VirtualHost>
<VirtualHost *:443>
ServerName twipla.jp
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /cert.pem
SSLCertificateKeyFile /privkey.pem
SSLCertificateChainFile /chain.pem
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpg|jpeg)$ [NC]
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteRule ^.*$ - [R=503,L]
</IfModule>
</VirtualHost>
-------------------

6)ssl.confにも書かないとリダイレクトされないかも。
vi /etc/httpd/conf.d/ssl.conf

-------------------
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpg|jpeg)$ [NC]
RewriteCond %{REQUEST_URI} !=/maintenance.html
RewriteRule ^.*$ - [R=503,L]
</IfModule>
-------------------

7)SSL証明書(cert.pem、privkey.pem、chain.pem)を本番環境からコピーしてきてhttpd.confで指定した場所に配置。
8)httpsでアクセスできるよう443ポートをあける
vi /etc/sysconfig/iptables

-------------------
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
-------------------

9)iptables再起動
/etc/init.d/iptables restart

10)アパッチ起動、自動起動ON
service httpd start
chkconfig httpd on

以上でサーバーの準備は完了。
手元のパソコンのhostsファイルを書き換えて、ドメイン名でアクセスしてみて動作確認する。
問題なければメンテ時にDNSのIPを書き換える。