の形で呼ぶ。
//
// 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
|
|
2010年7月13日(火) |
2010年8月10日(金)更新 |
ホームページの内容やメールのユーザ情報の管理に従来よりMySQLというデータサーバーを使用しています。 今回もこれを使用することにして、セットアップを行います。 |
|
|
ホームページのデータ、メールのアカウント情報と認証制御などにデータサーバーとして従来よりMySQLを使っています。 またバックアップや最悪システム再インストールに備えMySQLのデータはディフォルトのシステムのディレクトリではなく/homeディレクトリに置いています。今回もそうする予定です。
|
/home/mysqlディレクトリの設定
まずはためしにインストールしたディフォルトのままmysqlを起動してみます。 #service mysqld start 管理者パスワードを登録しろとか言われますのでひとまず仮に登録し動くのを確認したら停止。 #service mysqld stop 次に/homeに所有者とグループをmysqlとしてmysqlというディレクトリをつくります。 ディフォルトの/var/lib/mysqlはmysql-STOREとでも名前を変えて(決して捨てない)、先ほど/homeに作ったmysqlを代わりにリンクします。 以上が現行サーバーで、mysqlのデータを/homeに保存するためにやっている方法。
でも多分SELinuxさんは許してくれないだろうなーと思いながら、mysqlを起動してみます。 もちろん起動に失敗し、SELinuxさんにぼろくそに怒られました。 SELinuxさんはちゃんと働いています。めでたしめでたし、などと言ってはおれません。 いちおうSELinuxさんの言うとおりに、 #restorecon -v /home/mysql #restorecon -v /var/lib/mysql などやってみますが、やっぱりだめです。(もっともこのセッティングの情報はSELinuxは持っていないはず。) SELinuxをきちんと設定するか、ディフォルトの/var/lib/mysqlをデータディレクトリに使うか、はたまた別の方法を考えるかしなくてはなりません。
|
SELinuxの設定...見事敗退!
できることならSELinuxを設定してみましょう。 少しは設定が楽になるかとpolicycoreutils-guiをインストール。 メニュー ⇒ 管理 ⇒「SELinux Management」から起動できます。 で、しばらくいろいろとやってみたけど結局mysqldを起動できません。 おじさんわかんな〜い。 難しすぎ!
|
で、妥協策
バックアップや移植、場合によってはOS再インストールまで考えると、やはりデータはシステムのパーティションではなく、/homeパーティションにまとめて置いておきたいと思います。 SELinux Managementを使っていて、超妥協的に、簡単に、なんとかできそうな方法を見つけました。
設定時enforcingだとちゃんと書き込まれない場合もあるみたいなので、念のため #setenforce 0 をやっておいて、 #restorecon -v /home/mysql #restorecon -v /var/lib/mysql (これらはすでにやってあれば不要) さらに、SELinux Managementを起動、 Boolian ⇒ Databases の Disable SELinux protecton for mysqld daemon にチェック! Status ⇒ Relabel on next reboot にチェック!(本当に必要かどうかはよくわからないが。) そして再起動します。長々と設定変更をしています。
今度はどうだ? #service mysqld start おー、今度は無事起動しました!! まあ、妥協的ですがSELinuxをDisableしてしまうよりはいいかと。 ちゃんとした設定がもっと簡単にできるといいんだけど。私が知らないだけかな。
|
日本語化
MySQLは多言語対応になっていますが、ディフォルトで日本語を扱うように設定を施します。 (そのままだとMySQLが開発されている国の言語になっているようです。) 今度のサーバーはディフォルトのエンコーディングはutf8です。
/etc/my.conf に以下を記載、あるいは追記。 [mysqld] language = /usr/share/mysql/japanese default-character-set = utf8 skip-character-set-client-handshake
[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
[mysql] default-character-set = utf8
[mysqldump] default-character-set = utf8 skip-opt
|
初期設定
起動したらさっそく管理者パスワードを登録します。 #mysqladmin -u root password "PASSWORD" 念のためmysqldを再起動して、mysqlコマンドでつないでみます。 #service mysqld restart ...... #mysql -u root -p Enter password: Welcome to the MySQL monitor. ...... ......
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec)
mysql> quit; Bye ちゃんとつながり、OK。 起動設定 #chkconfig mysqld on |
|
これでデータサーバーMySQLの基本的なところは完了なのですが、もっとも問題なのはデータの移行です。新旧のサーバーで言語エンコードがちがいます。またそのときになったら考えましょう。 あと、MySQL を管理するのに従来から使っている phpMyAdmin はどうしてもほしいところです。 そのためには http サーバーの稼動と phpMyAdmin の導入稼動が必要になります。次にこれを行っていきます。
|
|
|