共用サーバのバックアップ

共用サーバも自動で毎日バックアップを取ることにした。

今回クライアントに提供しているサーバ(VPS)のバックアップを外部サーバに自動バックアップをとるように設定したのだが、その理由は2つ。

  • サービスとしてバックアップ機能がない
    近々提供予定ということだったのだが・・・とりあえず現状バックアップの手段が提供されていない。
  • ローカルに保存するのは怖い
    やはり外部の(別の)メディアにバックアップしておきたい。

過去に何度となくトラブルに遭遇し、その都度痛い目を見ているので、今回はすごく真面目に取り組んでいる(気付くのが遅い・・・)。そしてこれを機に運用中の共用サーバもバックアップをとることにしたというわけ(サーバの停止はそのまま収入の減少にもつながるので)。

まずサーバでバックアップ用のコマンドが使えるかどうかチェック。PHPが使えるのでsystem関数を使ってパスが通っているかどうかをチェックする。

system(‘which mysqldump’);
system(‘which tar’);
system(‘which bash’);
system(‘which gzip’);
system(‘which ssh’);
system(‘which ftp’);
system(‘which expect’);
var_dump(__FILE__);

コマンドがあればパスを吐き出してくれる。うん、うん、だいたい使えそう。

MySQLはmysqldumpで吐き出す。この時、最初は-xオプションでロックをかけようとしていたのだけれど、それだとdumpできなかった。まぁ、共用サーバだからしょうがない。-xオプション無しでdump。そしてそれをパイプに渡してgzip。これでOKだ。現在使っている共用サーバは複数のMySQLデータベースを使用できるのだが、それらのユーザ情報は共通にしてあるので、–all-databasesオプションを使えば一発で全てのDBをdumpできる。

次にファイル。HTMLとかPHPとか画像とか。これはtarで固めてgzip。ただしバックアップファイルの保存先を上手く指定してやらないといけない。あとメールデータとかゴミとか不要なのはデータ領域の無駄なのでバックアップしない。そのためシェルスクリプトを組んで、バックアップをとるデータのリストを作成し、それを引数としてtarに渡すことにした。これでファイルのバックアップもOK。

上記の二つはcronで1日1回処理。これを外部サーバに転送する。上記二つの処理は一つのシェルスクリプト内で記述しているのでそこで完結させたいのだが、外部サーバのログイン情報を共有サーバに保存しておいておくのはとてもイヤ。だからやむなく外部サーバから共有サーバをつつくことになる。今回はFTPにした(しかも非暗号化・・・)。FTPSでコマンドラインでのアクセス方法がわからなかったので仕方なかった。

もうひとつの方法として、共有サーバで圧縮したファイルの保存先を共有SSL領域にしておいて、そこに対して外部サーバからwgetというのも考えた。これでベーシック認証かけてIPアドレスではじいておけば、こちらのほうがベターかも知れない。それはそれで今後の課題とする。

何はともあれ、root権有りサーバも、root権無しサーバも、自動バックアップが出来るようになった。あとは・・・もうちょっと手を加えれば完了。

結局DTIを借りてみた

VPSはどれを借りるのか悩んだ結果、とりあえず安価なDTIを借りてみることにした。


DTI ServersMan VPS Standard
保証メモリ512MB/最大1.5GB
HDD30GB
月額980円
初期0円
2ヶ月無料

とりあえずお試し利用で2ヶ月使えて、初期費用が無料、月額費用も980円と安価な点に魅力を感じた。他にここを選んだ点として、OSが64ビット対応(なんとなく気分的にいつも64ビットを選んでいる)、OSの初期化が可能(最近のVPSなら当たり前っぽいけど)、iptablesが使える(そしてウェブの管理画面からiptablesの初期化も出来る)、がある。そして上位プランにアップグレード可能なこと。

噂によると、どうもこのVPSはWebArenaと同等のソフトウェアで構成されているらしい。だとすればコストパフォーマンスはすばらしく高いことになる。

申し込む際にスペックを選ぶのだが、その際管理ツールの有無を聞かれたのでやむなく32ビット版を選択(64ビット版では管理ツールがない)。管理ツールはBlue Onyx(懐かしい)。しかし久しぶりに使ったせいか、使い方が全くわからない。っていうか使いにくい。PleskやcPanelと比較すると使いづらさは否めない。30分ほど操作してみて、まぁやむを得ないか、と思いつつFTP設定してファイルをアップロードしようと思ったけどアップロードできない。ご丁寧にマニュアルを読み返したけど、それでもできない。

結局1時間ほどでOS初期化を決定。64ビット版CentOSにして、環境設定も最初から自分でやることにした。本来このVPSではマルチドメインでいろいろサイトを運営・管理したい、という訳ではなく管理ツールも必要ないので躊躇無し。OS入れ替え後、ソフトのインストールをした。

さて、これから1ヶ月の間に使い倒して、評価していくことにする。

Postfixで応答がない

PHPからすっかり離れている今日この頃。でも、それなりに楽しんでいる。

Postfixの設定で、main.cfを編集してPostfixを再起動。別のサーバからアクセスしてみて、relayをしないよう正しく設定されているかどうかチェックしてみた(いちおう毎度不正なrelayチェックができないかどうかちゃんと調べている・・・あたりまえだけど)。調べ方は簡単、telnetでアクセスして、適当にメールアドレスを指定して、rejectしてくれるかどうか調べるだけ。

しかし・・・そもそもPostfixからの応答がない。telnetの応答の後のPostfixの応答がない。

Trying 1.2.3.4…
Connected to example.com.
Escape character is ‘^]’.

コマンドを打っても返事がない。おいおい。どういうこと?。こんなんだったっけ。毎回うろ覚えなのでしばし考える。

ひょっとして、と思ってmain.cfで修正した箇所をコメントアウトしてPostfixを再起動し、再度コマンドを投げてみた。

Trying 1.2.3.4…
Connected to example.com.
Escape character is ‘^]’.
220 example.com ESMTP Postfix

あ、返事してるじゃん。ってことは、Postfixでmain.cfの記述を変更して、たとえその記述に間違った記述があったとしても、起動自体はできてしまうことがあるっていうことか。

あーやだやだ。

現在検討中のサーバ

2011/03/22 | VPS

検討中のサーバ(VPSまたはクラウド)のリストアップメモ。

WebArena Cloud 9
1GB/50GB/月額4,800円/初期5,250円
2011年4月末までキャンペーン。リソースアップ可。重いけど春回復予定。最近トラブル頻発。

WebArena VPS
2GB/50GB/月額8,820円/初期5,250円
2011年4月末までキャンペーン。リソースアップ可。快適(ようやく)。


さくら VPS1G
1GB/30GB/月額1,480円/初期2,980円
2週間お試し。 64bitOS。上下プランあり。プラン途中変更不可。


カゴヤ 専用サーバ3G101
2GB/160GB/月額4,830円/初期9,450円
マルチドメイン10。アダルト可。上位プランあり。

カゴヤ クラウド・VPS
512MB/50GB/月額945円(予定)
現在未提供。アダルト可。リソースアップ可。

ラピッドサイト国内VPS
1GB/120GB/ 月額2,380円/初期5,250円
特記事項なし(未検証)。30日返金保証。上位プランあり。

FC2VPS スタンダード+
1GB/250GB/月額2,980円/初期4,800円
PLESK10(オプション+500円)。アダルト可。 重いという噂。30日返金保証。上下プランあり。

Joe’sウェブホスティング  プラン2
1.5GB/180GB/月額3,500円/初期7,000円
PLESK。海外サーバならアダルト可。 30日お試し。上下プランあり。


ServersMan VPS Pro
1GB/50GB/月額1,980円/初期0円
下位プランあり。キャンペーン(2ヶ月無料)。

chkconfig –list でpostfixが見つからない

すごく嫌なのだが、またサーバの設定をすることになった。

以前(といっても10年前の話だけど)は、ネットワーク屋さんではSMTPといえばqmailが流行だったように思う(主流はもちろんsendmailだったけど設定の難解さやセキュリティ問題等で避けられることが多かった)。

今はpostfixを使っている人が多いのではないだろうか。かくいう自分もpostfix。設定が簡単だし、デフォルトのyumリポジトリで簡単に管理できるからだ(OSはCentOS)。

今日、新たに借りたVPSの設定をしていて、起動時の設定を確認してみて少しあわてた。postfix自体はインストールされているのだがchkconfigの中にpostfixが見つからないのだ。ん~。何か理由があったような気がするけど、数年に1度しか設定しないのでわからない・・・。

とりあえずpostfixをいったんアンインストールし、再度インストール。しかしそれでも状況は変わらない。とよく確認してみると、chkconfigのリストの中にsendmailがある。あー、これかも。yumでsendmailをアンインストールして再度chkconfigで確認。ありました、ありました(というか現れました)。見つかりました、postfixが。

どちらも25番ポートを使うわけで、両方起動するようになっていると問題が起きるから、うまく制御されていたわけか。

あー、でも別ポートでそれぞれ起動させたい場合はどうなるんだろう、という疑問があったけど、自分はそういう使い方はしないので、これでヨシとした。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net