の形で呼ぶ。
//
// 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);
}
//-->
倉金家ホームページ
趣味の部屋/サーバー構築メモ その4
ホームページを表示するHTTPサーバーapache2.4を立ち上げました。 でも前のバージョン(2.2)とは変わった部分があってバックアップしたホームページデータをそのままでは表示することができず、多少の修正が必要でした。 |
|
|
しばらくさぼってしまったけど、再びサーバー構築を開始します。 HTTPサーバーapache。 apacheのバージョンは今迄は2.2だったけど今度は2.4になっている。
|
さっそく設定ファイル/etc/httpd/httpd.confを見て、...わ、ずいぶん変わっている。 少しあせり。まずアクセスの許可あるいは拒否の書き方が変わっている。 今まで Order Allow,Deny Allow from All
などと書いていたところが、 Require all granted
などとなっている。 調べてみると両方に対応するためには、上記の例だと、 <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require all granted </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Allow,Deny Allow from All </IfModule>
と書けばいいとある。でも両方書くと長くなるし、とてもわかりにくい。 まったく古い書き方そのままでもOKなのだろうか? もしそうでなければ .htaccessをすべて書き換えなくてはならない。 …どうやらだめらしい。困ったもんだ。しばらく古い書き方もOKにしてログに警告を出すくらいにしてくれればいいものを!httpd.confの中だけの変更ならよいが、.htaccessに記載されるものの変更は... 困る! |
|
さらには .htacccesss の Options には None 以外は必ず + か - をつけなくてはいけないようだ。 Options -Indexes +FollowSymLinks
などと。今まで + は書いていなかった。ないとエラーになってページが表示されない。
|
で、対処! 1) | 各サイトのVirtualHostの記載を確認、修正。 | 2) | 全サイトの.htaccessをすべて書き換え。ただしapache2.4専用に。どうせ今後は皆2.4になる。 | | apache2.2と2.4両対応の記述はそのうち暇があったらやろう。(ということはたぶんやらない。) | | しかるに、こまめに .htaccessを作っていたのがあだとなり、約200個のファイルを書き換え。 | 3) | バックアップスクリプトをちょこっと修正し、.htaccessはバックアップから外す。 |
|
というだけの話なのだが、200個の .htaccessを確認して修正するのはけっこうな手間でした。
|
さらに前回もそうだったが、/home内にホームページ用ディレクトリを作るとなぜだかSELinuxに阻まれる。これは ~]# setsebool -P httpd_enable_homedirs 1 ~]# setsebool -P httpd_read_user_content 1
でOK。/home内にホームページを作るのはごく普通だと思うんだけど。
|
apache2.4になってから、httpd.confの内容が少し変わっている。2.2からの移行の留意点: 1. | HostnameLookupsの記述はない。必要なら自分で追加しろということのようだ。 | | HostnameLookups On 追加。 | 2. | MPMのパフォーマンスについての記述はない。そのままでは負荷が大きくなると、 server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers), ... といったエラーが出る。以下追加。 | | <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule> | 3. | 同じLogLevelを指定してもErrorLogの出力内容が少しちがう。簡略化されているみたい。 | | LogLevel notice だと 404エラーの File does not exist: のエラーが出力されない。 | | LogLevel info を指定。(上記エラーログはfail2banのアタック検知に使う。) |
|
以上でいちおう静的なテストページは表示されるようになった。 でも通常のページはMySQLを動かさないといけない。
引き続きMySQLの設定を行います。
|
.... MySQL(MariaDB)およびphpMyAdminを設定し、MySQLユーザとデータベースの登録を行い、あとは従来のホームページデータをバックアップコピー。
実際にホームページを表示させてみて、OKです。
|
|
|