PostgreSQLのDBバックアップ&復旧方法

PostgresのDBをバックアップし、その後復旧する方法です。
(._.) φ メモメモ

バックアップ方法
(postgresqlは起動した状態にしておく)

% pgdumpall > backup.db

復旧方法
(postgresqlを起動し、initdbだけしておく)

% psql -e template1 < backup.db

復旧時の注意点は、やっぱり -e をつけないとだめなようです。

恐ろしきかなld-elf.so.1の罠。

なんとなく会社でFreeBSDにantivirをインストールしていたarakawaさんが、こんな事を言いました。

「ELF interpreter /libexec/ld-elf.so.1 not found」 が出るのですよ。

そういえばうちのサーバくんでも出たっけ。

そのときはとりあえずしのぎで、/usr/libexec/ld-elf.so.1 を /libexec/ld-elf.so.1 にコピーして終了。
その後なんとなく気持ち悪いので、以下のコマンドを入れてシンボリックリンクにでもしたいなぁ、と思いやってしまいました。

# cd /libexec
# mv ld-elf.so.1 ld-elf.so.1.orm (ormではなくorgのタイプミス…今後オルムファイルと呼びましょう。)

そして、シンボリックリンクでも張ろうと思った矢先、

# cd /
# mv libexec libexec.orm
ELF interpreter /libexec/ld-elf.so.1 not found
Aborted.

なぬ……………………………………………………。

これ、とんでもなく大事なファイルなんですね。(泪
調べたら、ld-elf.so.1さんはFreeBSDのバイナリを実行するのにとても大事そうなファイルなんだそうです。

おかげで、cpもlsもmvもなにもできないし、新たにsshでログインしてもまるでダメ。
あーあ、CD起動でなおさなくちゃいけないのかなぁとか思った矢先、そうだlinx_baseがたしか入っていたな、FreeBSDのELFバイナリじゃなければ…ということで、以下のコマンドを入れてみるわけです。

# /compat/linux/bin/bash
bash#

助かった…。ありがとうLinuxカーネルさん。あんたにちょっとだけ感謝するよ。

その後、慣れないbashでなんとかシンボリックリンクを作って逃げました。

うーん、これとても驚異ですね。。。まさしく「アキレス腱」です。

BIND8

昔の記事をblog側に持ってきて編集してみました。
書いた当初からずいぶん時間が経っているので、ちょっとおかしなところがあるかもしれません。

ドメインを取得・申請したので、ネームサーバを立ててみます。

今回はよく使われている(と思われる)bind8を、FreeBSDに入れてみましょう。
bind8のソースプログラムは、Internet Software Consortium (ISC)から持ってきます。

まずは、ダウンロードをして、展開、コンパイルまでしましょう。

> fetch ftp://ftp.isc.org/isc/bind/src/8.4.1/bind-src.tar.gz Receiving bind-src.tar.gz (1432277 bytes): 100%
> tar xzf bind-src.tar.gz
(カレントにsrcというディレクトリができます。)

> cd src
> make
Making /usr/home/kentaro/src/.systype
Making .settings
/usr/home/kentaro/src/include
…あとは気長に待ちましょう(^^;

コンパイルが無事完了したら、インストールします。この場合では、/etc/namedb以下にインストールされます。
(Linuxはどうなのでしょう…?/var/namedとか?)

>su Password:(rootになりましょう)
# make install
mkdir -p /usr/local/bind/include/arpa
set -x; for x in inet.h nameser.h nameser_compat.h; do install -c -m 444 $x /usr/local/bind/include/arpa/$x; done
+ install -c -m 444 inet.h /usr/local/bind/include/arpa/inet.h
……………

インストールが終わりましたら、設定ファイルを書きます。

[ /etc/namedb/named.conf ]options {
directory “/etc/namedb”;
};

zone “.” {
type hint;
file “named.root”;
};

zone “localhost” {
type master;
file “localhost”;
allow-query { any; };
};

zone “0.0.127.IN-ADDR.ARPA” {
type master;
file “localhost.rev”;
};

//
// kenti.jp
zone “kenti.jp” {
type master;
file “db/kenti.jp.zone”;
allow-update { none; };
};

設定で注意するのは、赤字にしたところです。/etc/namedbをホームとして、それぞれのファイルを参照する形になります。今回、kenti.jpはそこにディレクトリを作成し、kenti.jp.zoneというゾーンファイルを作成する形となりますので、さらに以下のファイルを作成しました。
(名前→IPを表す正引きファイル)

[ /etc/namedb/db/kenti.jp.zone ]$ORIGIN kenti.jp.
$TTL 3600
@ IN SOA ns.kenti.jp. postmaster.kenti.jp. (
2002120801 ;serial
10800 ;refresh
3600 ;retry
604800 ;expiry
86400 ) ;minimum
;
IN NS ns.kenti.jp.

;
IN MX 10 mx.kenti.jp.
* IN MX 10 mx.kenti.jp.
;
;
; KENTI ZONE
;
ns IN A 61.206.126.90
www IN A 61.206.126.90
mx IN A 61.206.126.90

なにやら不可思議な記述が書いてありますが、順に説明すると以下のようになります。

$ORIGIN
ゾーンセクション。この場合kenti.jp.となる。
$TTL
有効時間。秒単位で指定するので、この場合3600秒=1時間。
@
$ORIGINで指定されたもの(ここでは、kenti.jp.)を指す言葉になります。
SOA
SOAの後ろの@は、ns.kenti.jpのようにホスト名で書き換えます。次にあるpostmasterは、自分のメールアドレス(ユーザ名+ドメイン名)を指定します。何かあった場合、このアドレスに対して問い合わせがくるようになります。注意点は、メールアドレスの@を、「.」(ピリオド)に直して書くことです。
;
セミコロンの後は、コメントになります。
;serial
シリアルナンバー。内容を更新したら、かならずこの数値を変化させて、変更があったことを他DNSサーバへ知らせます。シリアルは、1,2,3…と適当な数字で増やしていってもいいのですが、上記のように日付+2桁の数字、で入れておくと管理しやすいです。
;refresh
リフレッシュ時間。このゾーンを確認する間隔を指定。この場合10800秒=180分=3時間。
;retry
上のリフレッシュ時間において、ゾーン確認に失敗した場合の再試行までの待ち時間。この場合3600秒=1時間。
;expiry
このファイルで定義されている内容の有効期限。この場合604800秒で7日(1週間)。
;minimum
ファイル自体の有効期限。この場合86400秒=24時間。
NS
NSレコード(ネームサーバ)の指定。
ここでは、一般的にこのDNSサーバの名前を指定しています。
MX
MXレコード(メールサーバ)の指定。
メールサーバの名前を指定します。なお、サーバ名の前にある「10」はメールサーバの優先度を指定しています。複数メールサーバがあれば、20,30といったように記述することも出来ます。
A
Aレコードの指定。
この場合、ns.kenti.jp.のIPアドレスはいくつか、を指定しています。これが設定できてないと、www.kenti.jpはどのIPなのか、といった参照が出来ません。
ほかに、mailにもAレコードが指定してあります。これがないと、MXで指定した名前のIPがわからなくなってしまうからです。
CNAME
今回は出てきませんが、別名という意味で使われます。
ftp IN CNAME www
とすれば、ftp.kenti.jpはwww.kenti.jpの別名だよ、と指定することが出来ます。
※トラブルの原因になるので、なるだけAレコードで書いた方が良いと思われます。特に、MXはCNAMEで書きますとトラブルの元になります。
PTR
これも今回は出てきません。IPから名前を表す、逆引きに使用するレコードです。
61.206.126.90 IN PTR ns.kenti.jp.
という具合で書きます。
kenti.jpで使用しているIPは、プロバイダから既に逆引きの名前が割り当てられており、変更することが出来ないので逆引きのゾーンは作成しませんでした。

設定ファイルが出来たので、namedを起動します。

# /usr/sbin/ndc start
new pid is 708

起動後、/var/log/messageなどを見て、エラーが出てないことを確認しましょう。(^_^)v
動いているようであれば、以下のように名前が解決できるようになります。

# nslookup www.kenti.jp Server: localhost Address: 127.0.0.1Name: www.kenti.jp
Address: 61.206.126.90

また、OS起動時(この場合は、FreeBSD)にnamedを起動させるようにするには、以下の方法があります。

[ /etc/rc.conf ] 以下の2行を追加するnamed_enable=”YES”
named_program=”/usr/sbin/named”

Linuxのような起動方法として、FreeBSDでは以下のスクリプトを書いてあげれば自動起動してくれます。
(パーミッションの設定は755としておくといいのかな…。)

[ /usr/local/etc/rc.d/named ] 新規に作成します#!/bin/sh

case “$1” in

start)
if [ -x /usr/sbin/named ]; then
echo named
/usr/sbin/ndc start
fi
;;
stop)
/usr/sbin/ndc stop
;;
*)
echo “$0 start|stop”
;;
esac

とりあえず、そんなこんなで一段落といったところでしょうか。(^^;

ネットワーク管理・サーバ管理はどうあるべきか。

職場から家に帰ってくると、なんともPCの電源をいれるのがかったるい今日この頃です。

なんとも最近は、仕事にたいして憂鬱というかなんというか、すべてに対してかったるいです(笑)。
私のやっている仕事はネットワーク管理・サーバ管理なのですが、そもそも本来どういう仕事なのでしょうか。

(今日はちょっと愚痴っぽい表記です。笑)

ネットワーク管理者の仕事として、一般的には

・ネットワークトラフィックの監視

・ネットワーク機器状態の把握、設定情報の把握

・クライアントに対する接続設定などのサポート

・情報セキュリティへの機敏な対応

というのがあげられるだろうと思います。
一方、サーバ管理者の仕事として、

・サーバ動作の監視

・ハッキング、クラック、ウィルス対策

・サーバ内におけるユーザ情報の把握

・サーバ内で動作しているソフトウェアの把握

・クライアントへの利用方法などの徹底

等があげられると思います。なんでこんなことを今自分が書いているのかというと、本来のネットワーク管理・サーバ管理とはかけ離れた業務をしていたり、いろんな事情もありますが前任者からの引き継ぎもうまく出来ていなかったり、いつのまにか面倒なことに巻き込まれていたり(笑)することが多いなぁ…と思うのです。
(まぁ、それはそれで退屈するよりも幸せですが。)

話はそれますが、ある案件を処理するのに、

・客先への訪問

・提案してみる

・見積をだす

・注文を受ける

・場合によっては外注処理をする

・クライアント対応
・請求書を出す

・入金の確認をする

・場合によっては集金してくる

・外注したものの支払い手続きを済ます

というような内容が必要になってくると思います。また、これは日頃から考えなくちゃいけないのですが、どうやったら顧客拡大ができるだとか、売り上げを伸ばそうだとか、そういう問題もあります。

正直、なんだか自分は一人で会社をやっているような認識をしてしまうので、最近はとても疲れたような気がします…。

そんなわけで、今日はもう寝まーす。

FreeBSD5.3Rを入れてみる。その2(Apache2とPHP5)

Apache2をインストールしたときの記録です。

# ./configure –enable-so –enable-ssl

あとはmakeして普通にインストール。

次は、PHP5をインストールしたときの記録です。
(pgsqlは既に入れたものとします。)

./configure \
–with-apxs2=/usr/local/apache2/bin/apxs \
–with-xml –enable-mbstr-enc-trans –enable-mbstring \
–with-pgsql=/usr/local/pgsql –with-tsrm-pth

ここで、./configure時に、XML2がないぞとかエラーが出まして、進めませんでした。
いろいろ調べた結果、libxml2とlibxsltが必要です。

私の場合、

/usr/ports/textproc/libxml
/usr/ports/textproc/libxslt

を入れて進めてしまいました。いいのかなぁ(^^;

FreeBSD5.3Rをインストールしてみる。

我が家で稼働しているサーバ君ですが、新年を機に(?)HDDなんかを入れ替えてみようと思います。
…ついでにOSもずいぶん古いから、新しいのでも入れてみようかな…。

ということで作業を始める前に、まず現在使っているサーバ君のHDDを取り出し、別筐体マシンに入れてみます。
内容は、Celeron333マシンのサーバで使っていたHDD[4.3GB]を、Pentium166マシンへ入れて見る。
おぉ、動きます。

すごいね。
っていか、こんなんでいいの?
ということで、いま皆さんが見ているこれも、暫定サーバ君で動いています。

うーん、やっぱ遅いですなぁ。。。
コメント書くときは特に遅い。。。(^^;

ということで、続きます。(泪

ドメインの取得。

このサイト、kenti.jpのドメインを取得するにあたってのメモ書きです。
以前の内容をそのまま書き込んでます。

固定IPを取ったらドメイン…ということで、今度はドメインの申請です。

いろいろ考えたあげく、KENTI.JPというJPドメインを取得することに。短いと覚えやすいですしね(^^ゞ
ということで、なるだけ安く取得しよう…と21-domainというところで取得してみました。
指定事業者は「アンネット」という広島の会社みたいですが、まぁJPRS代理店ってことで大丈夫でしょう。

申請すると1時間ほどで手続き完了。翌朝3時には、JPNICへ反映されるという仕組みです。

なお、申請にあたってのネームサーバに、さきほどの固定IPと、公開するネームサーバ名を入力する必要があります。ネームサーバはns.kenti.jpとでもしておきます。

> whois -h whois.nic.ad.jp kenti.jp/e[ JPNIC & JPRS database provides information on network administration. Its ]
[ use is restricted to network administration purposes. For further infor- ]
[ mation, use ‘whois -h whois.nic.ad.jp help’. To suppress Japanese output, ]
[ add’/e’ at the end of command, e.g. ‘whois -h whois.nic.ad.jp xxx/e’. ]

Domain Information:
[Domain Name] KENTI.JP
[Registrant] Kentaro Hashimoto
[Name Server] ns.kenti.jp
[Created on] 2002/12/08
[Expires on] 2003/12/31
[Status] Active
[Last Updated] 2002/12/8 15:27:54 (JST)

固定IPの取得。

昔の記事をblog側に持ってきて編集してみました。
書いた当初からずいぶん時間が経っているので、ちょっとおかしなところがあるかもしれません。

そんなことで、まずは自宅でサーバをたてる際、安価に固定IPを取得する方法です。

※この方法は、FreeBSDで直接PPTPをする方法です。先日、YAMAHAのRTA55iでこれと同様に行う方法を書いてありますので、そちらも参考にしてください。

自宅にて固定IPのサービスを受けるには、OCNのIP1プランなど、いろいろあると思います。
しかし、自分のプロバイダに固定IPのプランはないし、なによりプロバイダ変更したくない…。(^^ゞ

ってことで、インターリンクが行っている固定IPプランを使用してみました。
親切なことに、 設定方法などもありますので簡単にインストールすることが出来ました。
付与されたIPは、61.206.126.Aで、ゲートウェイに61.206.126.1を経由してインターネットへ接続するという内容でした。

なおこの機能は、PPTPによるVPN接続を使っているので、リンクが切れると最悪切れっぱなし…ということもありえるので、以下のようなスクリプトを書いてみました。

内容は、/etc/ppp/myipchk.plをcronでまわして確認し、ゲートウェイへpingが飛ばなかったり、IPが付与されていなかったら接続しにいく…。という感じです。

[ /etc/ppp/myipchk.pl ]#!/usr/bin/perl
$ifcmd = `/sbin/ifconfig | /usr/bin/grep 61.206.126.A`;
$picmd = `/sbin/ping -c 5 61.206.126.1 | /usr/bin/grep %`;
if ($ifcmd !~ ‘61.206.126.A‘)
{
print “Status:IP not assigned.\n”;
system(“/etc/ppp/myip.sh”);
exit(0);
}
elsif ($picmd =~ ‘100%’)
{
print “Status:no route.\n”;
system(“/etc/ppp/myip.sh”);
exit(0);
}
else {
print “Status:Ok!\n”;
exit(0);
}
exit(0);

[ /etc/ppp/myip.sh ]#!/bin/sh
kill -9 `/bin/cat /var/run/tun0.pid`
sleep 10
/usr/local/sbin/pptp 203.141.128.100 myip &

このような感じで、まずは固定IPを取得することが出来ました。まぁ、1個あれば十分(^^ゞ
ifconfigすると、こんな感じです。

# ifconfig tun0tun0: flags=8051<up,pointopoint,running,multicast> mtu 1448
inet6 fe80::200:e2ff:fe15:1727%tun0 –> :: prefixlen 64 scopeid 0x3
inet 61.206.126.A –> 61.206.126.1 netmask 0xff000000
Opened by PID 1074</up,pointopoint,running,multicast>

InterLinkのMyIPサービスを使ってみる。

我が家のサーバで以前使っていたInterlinkさんの「MyIPサービス」を、YAMAHAのRT55iでも使用できるか実験してみました。

ちなみに、1週間だけですが無料でテスト用アカウントを貸し出してくれるようです。
良心的ですね。ということで実験してみました。
(ちなみに今は、MyIPサービスのようなVPNではなく、固定IPをプロバイダから頂いてます…。)

簡単ですが、我が家の環境はこんな感じ。192.168.100.1…ルータ
192.168.100.2…このwebなどを公開しているサーバ

192.168.100.1…ルータ
192.168.100.2…このwebなどを公開しているサーバ
ルータには事前に、動的なIPが付与されるプロバイダ情報が設定されているものとします。
ポイントは、サーバはVPN経由(固定IP)でインターネットへ行き、それ以外は動的なIPのほうへ経路を設定します。
…なんとなくかっこいいじゃないですか。(笑)

まず、テストアカウントを申し込むと、プロバイダからユーザID云々のかかれたメールが届くので、それを元にconfigを作成してみます。

## PP 2にVPNの要領でアカウントの定義
pp select 2
pp name WAN/VPN:InterLink2
pp bind tunnel 1
ip pp mtu 1280
ip pp nat descriptor 1100
pp auth accept chap mschap
pp auth myname (付与されたユーザID) (付与されたパスワード)
ppp ipcp ipaddress on
ppp ccp type mppe-any
pptp service type client
pp enable 2nat descriptor type 1100 masquerade
nat descriptor masquerade static 1100 1 192.168.100.2 tcp smtp,www,pop3,https,ftpdata-21,ftpdata
nat descriptor masquerade static 1100 2 192.168.100.2 tcp 22,domain
nat descriptor masquerade static 1100 3 192.168.100.2 udp 22,domain
## Tunnelの定義(PPTP)
tunnel select 1
tunnel encapsulation pptp
tunnel endpoint address (付与されたVPN接続先)
pptp tunnel disconnect time 600
pptp keepalive use off
tunnel enable 1

あとは、webサーバにきちんとデータが届くようにNATの定義をしてみます。

nat descriptor type 1100 masquerade
nat descriptor masquerade static 1100 1 192.168.100.2 tcp smtp,www,pop3,https,ftpdata-21,ftpdata
nat descriptor masquerade static 1100 2 192.168.100.2 tcp 22,domain
nat descriptor masquerade static 1100 3 192.168.100.2 udp 22,domain

最後に、webサーバは固定IP側のVPN経由へ行くように、DefaultGatewayの設定をします。

ip filter 501050 pass 192.168.100.2 * * * *
ip filter 501060 pass 192.168.100.1 * tcp,udp * smtp,pop3
ip route default gateway pp 1 filter 501060 gateway pp 2 filter 501050 gateway pp 1

あたりまえですが、webサーバのDefaultGatewayはルータ(192.168.100.1)にしておきます。
そうすると、固定IPでインターネットからアクセスを受けることが出来ます。
これでドメインを取得したり、遊べますねー。