の形で呼ぶ。
//
// anchor_idはフレームを使う場合最低限各フレームごとに設定。お互い他のフレームを書換えたときにへんな干渉をさけるため。
// その他ページの種別毎などで変えてもよいが、あまり小分けにするとcookieが増える。
// 同じanchor_idで保存されるcookieは1セットのみ。でも単独ページ表示のサイトなら概ねこれで充分。
anchor_id = "anc_main";
noanchor = false; // bodyにanchorをしかけたときなど場合によって一時無効にするためのフラグ。
// アンカーの記憶。
function anchor_save(object_id, page_id) {
if(noanchor) { anchor_erase(); return; }
get_scroll();
setcookie(anchor_id+"_pid", page_id, 0);
setcookie(anchor_id+"_st", scroll_top, 0);
setcookie(anchor_id+"_sl", scroll_left, 0);
if(object_id) {
object_top = scroll_top + get_object_top(object_id);
object_left = scroll_left + get_object_left(object_id);
setcookie(anchor_id+"_oid", object_id, 0);
setcookie(anchor_id+"_ot", object_top, 0);
setcookie(anchor_id+"_ol", object_left, 0);
} else {
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
}
// アンカーの適用。
function anchor_apply(page_id) {
if((saved_page_id = getcookie(anchor_id+"_pid")) && page_id != saved_page_id) { return; }
get_scroll();
if((anchor_st = getcookie(anchor_id+"_st")) != "" && (anchor_sl = getcookie(anchor_id+"_sl")) != "") {
anchor_st = parseInt(anchor_st);
anchor_sl = parseInt(anchor_sl);
} else {
anchor_st = scroll_top;
anchor_sl = scroll_left;
}
if((object_id = getcookie(anchor_id+"_oid"))
&& (anchor_ot = getcookie(anchor_id+"_ot")) != ""
&& (anchor_ol = getcookie(anchor_id+"_ol")) != "") {
offset_top = (scroll_top + get_object_top(object_id)) - parseInt(anchor_ot);
offset_left = (scroll_left + get_object_left(object_id)) - parseInt(anchor_ol);
} else {
offset_top = offset_left = 0;
}
window.scrollTo(anchor_sl + offset_left, anchor_st + offset_top);
}
// アンカー消去。あえてとっておく必要がなければanchor_apply()後すぐ消去が望ましい。
function anchor_erase() {
setcookie(anchor_id+"_pid", "", -1);
setcookie(anchor_id+"_st", "", -1);
setcookie(anchor_id+"_sl", "", -1);
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
//-->
倉金家ホームページ
趣味の部屋/サーバー構築メモ その2
今まで自動(DHCP)でつないでいたLANをサーバーとして稼動させるため固定に変更します。 また他のマシンとファイル共有(NFS)の設定を行い、データ移行の準備を行います。 |
|
|
LANの再設定
インターネット接続はLinuxをインストールしたとき自動(DHCP)に設定していましたが、サーバーとして稼動させるにはIPアドレスを固定する必要があります。 管理メニューよりネットワーク(ネットワーク設定)を起動。 デバイスのeth0を選んでいったん停止して編集。 ・コンピュータの起動時にデバイスを起動 自動的にIPアドレスを取得:dhcpとなっていますので ・固定のIPアドレス設定 に変更 手動IPアドレス設定はルーターの設定に合わせて | アドレス | : | 192.168.1.5 | | サブネットマスク | : | 255.255.255.0 | | ディフォルトゲートウェイアドレス | : | 192.168.1.1 |
|
といった感じで登録。 DNSにはネームサーバーが稼動するまではルーターのDNS機能を使うことにして、ルーターのアドレス192.168.1.1などを登録しておきます。(プロバイダーのDNSを登録してもよい。) 保存して起動、さらに再起動してちゃんとつながることを確認し、OK。 昔に比べるとえらい楽になったなあ。
|
NFSクライアントの設定
古い(現行)のサーバーのファイルを見たりコピーするために、NFSクライアントとしての設定を行います。
まずマウントポイントを作成します。 どこでもいいのでしょうが、/mntフォルダに作成することにします。 設定とホームディレクトリを読み込むために/etcと/homeを読み込めるようにします。 #mkdir /mnt/oldetc #mkdir /mnt/oldhome などとしてディレクトリを作成。
/etc/fstabにマウントの設定をしておけば起動時にマウントしてくれますが、とりあえずマウントは手動で行うことにします。fstabに自動マウントを設定した場合相手のコンピュータが起動していないなどでマウントできない場合タイムアウトまで延々待たされますので、設定するならnoautoオプションでマウント情報を与えておくのみにしたほうがいいです。
|
さらにすぐマウント/アンマウントができるようにスクリプトを書いて実行権限をつけ、デスクトップに置いておきます。 マウントスクリプト mountNFS.sh 読み込む相手のIPアドレスを192.168.1.2とすれば #! /bin/sh mount -t nfs 192.168.1.2:/home /mnt/oldhome mount -t nfs 192.168.1.2:/etc /mnt/oldetc exit
アンマウントスクリプト umountNFS.sh #! /bin/sh umount -t nfs /mnt/oldhome umount -t nfs /mnt/oldetc exit
|
|
現行サーバーにはすでにNFSサーバーとしての設定がしてあって稼動していますので、マウント一発、ファウルが見れるはずです。 #./mountNFS.sh (またはファイルをダブルクリック) でマウント、/mnt/oldhomeを覗いてみると、OK! ちょっとファイルを開いてみると、見事に文字化けしています。 前のサーバーの言語コードはEUC-JPで今度のはUTF-8だから当然といえば当然。エディタのエンコーディングをEUC-JPに指定してちゃんと読めました。(残念ながら自動判別というのがない。)
内容を確認して今度はアンマウント。 #./umountNFS.sh (またはファイルをダブルクリック) アンマウント確認、OK!
|
NFSサーバーとファイアウォールの設定
今度はこちらのコンピュータ内のファイルを公開するためにNFSサーバーとしての設定をしますが、ファイアウォールがらみで設定をしなくてはなりません。NFSはディフォルトでは空いているポートを使うため、そのままではファイアウォールが構築できません。 設定の方法は3つ。 1) | ファイアウォールを使わない。 | 2) | ファイアウォールをローカルアドレス(192.168.xxx.xxx)に対してすべて許可するように設定してNFSはディフォルトのまま使う。(ローカルアドレス内でのみNFSが使える。) | 3) | ポートを固定してファイアウォールを使う。固定IPのインターネット回線からならNFSがつなげられる。 |
|
1)は論外。 2)は以前やった方法。実に簡単。実質これでまったく問題はない。 3)は設定がちょっと面倒。でも別宅がある人にはいいかもしれない。 セキュリー的にはたぶん2)がもっとも安全。
|
設定するファイルは /etc/hosts.allow /etc/hosts.deny /etc/exports /etc/sysconfig/nfs … 2)の方法でやるなら設定不要。 /etc/sysconfig/iptables 各設定ファイルを設定 /etc/hosts.deny portmap: ALL lockd: ALL mountd: ALL rquotad: ALL statd: ALL
/etc/hosts.allow portmap: 192.168.0.0/255.255.0.0 lockd: 192.168.0.0/255.255.0.0 mountd: 192.168.0.0/255.255.0.0 rquotad: 192.168.0.0/255.255.0.0 statd: 192.168.0.0/255.255.0.0
/etc/exports /etc 192.168.0.0/255.255.0.0(ro) /home 192.168.0.0/255.255.0.0(ro)
これでLAN内のコンピュータに対しては読出しモードで接続を許可します。 |
|
続いてファイアウォールの設定を行います。 2)の方法でやるなら /etc/sysconfig/iptablesの -A RH-Firewall-1-INPUT -i lo -j ACCEPT の次に -A RH-Firewall-1-INPUT -s 192.168.0.0/16 -j ACCEPT を書くだけ。(ただしRH-Firewall-1-INPUTという記述はRedHat系のみ?) 実際やってみてOK。 あまり簡単すぎておもしろくないので3)をやってみます。 インターネットからもつなぐなら同様にhosts.allowとexportsを設定します。 /etc/sysconfig/nfs を編集します。 以下の記述の頭の#を消して指定を有効化します。 RQUOTAD_PORT=875 LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892 STATD_PORT=662 STATD_OUTGOING_PORT=2020
NFSを起動または再起動します。 #service iptables restart #service portmap restart 続けて #rpcinfo -p で使用しているポートの確認。以下のようになっています。 プログラム バージョン プロトコル ポート 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 662 status 100024 1 tcp 662 status 100011 1 udp 875 rquotad 100011 2 udp 875 rquotad 100011 1 tcp 875 rquotad 100011 2 tcp 875 rquotad 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100021 1 udp 32769 nlockmgr 100021 3 udp 32769 nlockmgr 100021 4 udp 32769 nlockmgr 100021 1 tcp 32803 nlockmgr 100021 3 tcp 32803 nlockmgr 100021 4 tcp 32803 nlockmgr 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100005 1 udp 892 mountd 100005 1 tcp 892 mountd 100005 2 udp 892 mountd 100005 2 tcp 892 mountd 100005 3 udp 892 mountd 100005 3 tcp 892 mountd |
|
この結果と/etc/sysconfig/nfsを見ながら/etc/sysconfig/iptablesに以下のようにこれらのポートを許可する設定を書き加えます。 場所は後ろのほうの -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT の直前がいいかと。 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 662 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 662 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 892 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2020 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 2020 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT
|
|
以上完了したらファイアウォールを再起動し、NFSの起動(または再起動)と自動起動の設定 #service iptables restart #service portmap restart #service nfs restart #service nfslock restart #chkconfig portmap on #chkconfig nfs on #chkconfig nfslock on 再度つないで確認し、OKです。
|
|
|