2010.12.05
以前に、MTのエントリーの編集画面で、編集画面で表示されるタイトルの長さが短すぎるのを修正した。
しかし、MTのバージョンを3.35にしたら編集方法が違っていたので、以下にその方法を書いておく。/mt/lib/MT/Appに移動してCMS.pmを編集する。
# cd ・・・/mt/lib/MT/App
# vi CMS.pm
修正場所はの6343行目あたりで、下記の赤字部である。すなわち、my title_max_lenを32の固定値にする。
my %blogs;
require MT::Blog;
# my $title_max_len = const('DISPLAY_LENGTH_EDIT_ENTRY_TITLE');
my $title_max_len = 32;
my $excerpt_max_len = const('DISPLAY_LENGTH_EDIT_ENTRY_T ・・・
ついでに、最近のエントリーのタイトル表示も長くしておく。1906行あたりである。
$row->{status_text} = MT::Entry::status_text($entry->status);
# my $max_len = const('DISPLAY_LENGTH_MENU_TITLE');
my $max_len = 32;
if (defined($row->{entry_title}) && ($row->{entry_title}・・・
タイトルが長い場合は2行にわたるようになるが、通常は1行に納まる場合が多く、不都合はない。むしろ、良い感じになった。
2010.12.04
FreeBSD-81.1ではja-samba-3.0.35_1をpackageから入れた。
# cd /usr/local/etc/rc.d
# ./samba start
として、起動しようとすると、/etc/rc.confに下記を入れろとメッセージがでる。
samba_enable="YES"
winbindd_enable="YES"
samba_enable=”YES”は予想通りだが、winbindd_enable=”YES”は初めて出た。
Samba 2.x以降であろうか、ハッキリしないが、Sambaをインストールすると
/usr/local/etcにsmb.confが出来、sambaというディレクトリーが出来ている。この中には、
smbpasswdファイルがあるので、ここでSambaのPasswordを設定する。
# cd /usr/local/etc/samaba
# smbpasswd -a nnnnnnn (nnnnnnは登録するuser名)
# New Password: xxxxxxx
# Retype New Password:xxxxxxx
2010.12.03
サーバーのHDDのミラー化も済み、各種設定も行い動作も良さそうなので、kernelの再構築(reconfiguration)を行うことにした。
1. 設定ファイルの編集
# cd /usr/src/sys/i386/conf ← 設定ファイルのディレクトリーに移動
# cp GENERIC MYSERVER
# vi MYSERVER
ここで、下記の赤字部を追加 (4096 x nで100倍にした)
options AUDIT # Security event auditing
options MSGBUF_SIZE=409600
後は、RAID関連、Wireless LAN関係、PCMCIAカード関係をコメントアウト。
SCSI関連は、USBメモリーを使うので、SCSI peripheralのscbus, device da, device pass, dev sesを除き、
後は全てコメントアウト。
また、NICで現在使用してしているもの、ならびに他に予備機がある場合はその予備機のNICも残し、他は
コメントアウト。(下記の注参照)
(ハッキリ理解出来ない行は残すのが、鉄則。)
注意:
サーバー内には、HDD2台でミラー構成を取っているが、もしHDD以外の要因(電源等)でサーバーが動作不能になった場合は、HDDを予備機に移し、起動すればデバイス名は、/dev/mirror/gm0で予備機のATAの構成が異なっても(起動ドライブ名がad2からad4に変わっても)起動でき、直ちに運用が継続できる。このためには、kernelに予備機のNICのドライバーも含めておく必要がある。
2. コンパイル作業
# config MYSERVER
以下のメッセージが表示された。
Kernel build directory is ../compile/MYSERVER
Don't forget to do ``make cleandepend; make depend''
作業を続行する
# cd ../compile/MYSERVER
# make clendepend ← 10秒ぐらいか
# make depend ← 3分ぐらいかかる
# make ← 25分ぐらいかかる
# make install ← 1分ぐらいかかる
# reboot ← 新kernelを使って再起動
kernelサイズが、11,783KB → 6,681KB となった。
測定していないが、起動時間も早くなった感じである。
3. 新カーネルになったことを確認
$ uname -a
FreeBSD uls.fam.cx 8.1-RELEASE FreeBSD 8.1-RELEASE #0:
Fri Dec 3 19:54:02 JST 2010 xxxxxxxx@uls.fam.cx:
/usr/src/sys/i386/compile/MYSERVER i386
MYSERVERで作られたkernelとなっている。
4. コンパイルしたkernelに誤りがあり、立ち上がらなかった場合の処理
下の画面が現れて、カウントダウンしている間にスペースキーを押す。
なお、/boot/loader.conf でカウントダウン数を、例えば
autoboot_delay=”3″ (3秒の場合)のように指定できる。← 気の短い人向き (私)
スペースキーで止まったら、6を押して、OKのLoader Promptを出す。
これで、旧kernelで起動するように指定できる。
OK unload ← 既に読み込まれているモジュールをunload
OK boot kernel.old ← kernel.oldを使ってbootを指示
再度kernelコンパイルを最初からやり直すことになる。
再度のkernelも起動出来なかった場合、1つ前の起動出来ないkernelがkernel.oldとして保存され、さらにその前の起動出来たオリジナルのkernelは失くなってしまう。
(1) kernel.old → 喪失 (オリジナルの起動出来たkernel)
(2) kernel → kernel.old (構築して起動出来なかったkernel)
(3) 再コンパイルkernel → kernel(再度のkernelも起動出来ない場合が問題)
これでは、もう起動する手段が無くなってしまうので、再度のコンパイルに先立ち、起動できたkernelをkernel.orgとして保存しておくと良い。
# cd /boot
# mv kernel.old kernel.org
これで、最悪の事態でも、前の図のカウントダウン画面でスペースキーを押し、6を押してOKのPromptを出して、
OK unload
OK boot kernel.org
で、起動できる。
FreeBSD 8.1を入れたところ、BINDのバージョンが9.6.2-P2になっており、設定方法が変わったので、書いておく。
1. rndc.keyの作成
BINDをローカル、リモートからコマンドで制御するためのkeyで、これを作成する。
(使用法は、Netで参照のこと)
以下のコマンドで、rndc.keyが作成される。
# rndc-confgen -a
2. named.confの例
options {
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
listen-on {127.0.0.1; 192.168.1.0/24;};
forwarders {210.188.224.10;};
};
include "/etc/namedb/rndc.key";
controls {
inet 127.0.0.1 allow { 127.0.0.1; } keys { "rndc-key"; };
};
view "internal" {
match-clients {192.168.1.0/24; 127.0.0.0/8; };
recursion yes;
zone "." {type hint; file "/etc/namedb/named.root";};
zone "localhost" {
type master;
file "/etc/namedb/master/localhost-forward.db";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/namedb/master/localhost-reverse.db";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/namedb/slave/canal.rev";
allow-update { none; };
};
zone "fam.cx" {
type master;
file "/etc/namedb/slave/canal.zone";
allow-update { none; };
};
//zone "idema-jp.org" {
// type master;
// file "slave/idema.zone";
// };
};
- masterディレクトリー内
namedbのディレクトリーの中には、masterの名のディレクトリーがあり、
その中には、
・empty.db
・localhost-forward.db
・localhost-reverse.db
が入っている。
- slaveディレクトリー内
slaveディレクトリーは、最初からあるmasterディレクトリー内のファイルと区別するた、新たに作り、その中にゾーンファイルと逆引きのファイルを入れた。
/etc/namedb → named.conf, named.root, rndc.key
|
+ー master → empty.db, localhost-forward.db, localhost-reverse.db
+ー slave → canal.zone, canal.rev
(1) canal.zone (正引き定義)
$TTL 3600 ; 1 hour
@ IN SOA uls.fam.cx. root.uls.fam.cx.(
2006121601 ; serial
10800 ; refresh (3 hours)
3600 ; retry (1 hour)
3600000 ; expire (5 weeks 6 days 16 hours)
3600 ; minimum (1 hour)
)
IN NS uls.fam.cx.
IN MX 10 uls.fam.cx.
uls IN A 192.168.1.5
www IN CNAME uls
ftp IN CNAME uls
uls2 IN A 192.168.1.6
(2) canal.rev (逆引き定義)
$TTL 3600 ; 1 hour
@ IN SOA uls.fam.cx. root.uls.fm.cx.(
2006121602 ; serial
10800 ; refresh (3 hours)
900 ; retry (15 minutes)
3600000 ; expire (5 weeks 6 days 16 hours)
3600 ; minimum (1 hour)
)
IN NS uls.fam.cx.
5 IN PTR uls.fam.cx.
6 IN PTR uls2.fam.cx.
3. /etc/resolv.conf
nameserver 127.0.0.1
4. /etc/rc.confに次を追加
named_enable="YES"
named_program="/usr/sbin/named"
5. 動作確認例
googleのIPアドレスを求めてみる。
$ nslookup www.google.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
www.google.com canonical name = www.l.google.com.
Name: www.l.google.com
Address: 66.249.89.104
Name: www.l.google.com
Address: 66.249.89.99
2010.10.17
*** 2010/12/16に内容一部修正しました ***
家のサーバーはFreeBSD-7.0で運用しているが、そろそろ最新のFreeBSD-8.1に上げようと準備中です。
OSのインストール後にMySQLをportsで入れて、文字コードの設定で引っかかった。
(1) インストール
# cd /usr/ports/databases/mysql55-server
# make WITH_CHARSET=ujis WITH_XCHARSET=all install clean
# cd ../mysql55-client
# make WITH_CHARSET=ujis WITH_XCHARSET=all install clean
(2) my.cnfの編集
# cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
# cd /etc
# chmod +w my.cnf
# vi my.cnf
[mysqld]
datadir = /usr/db/mysql
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16M
(3) DBをインストール
# mkdir /usr/db
# mysql_install_db --basedir=/usr/local --datadir=/usr/db/mysql
# chown -R mysql /usr/db/mysql
(4) 起動
次にmysqlの起動ファイルを修正します。
# cd /usr/local/etc/rc.d
# chmod +w mysql-server
# vi mysql-server
下記の赤字部分を修正する。
mysql_dbdirの記述を有効にして/usr/db/mysqlを指定し、
–defaults-extra-file=/etc/my.cnf として、/etc/my.cnfを明に指定する。
: ${mysql_enable="NO"}
: ${mysql_limits="NO"}
${mysql_dbdir="/usr/db/mysql"}
: ${mysql_args=""}
mysql_user="mysql"
mysql_limits_args="-e -U ${mysql_user}"
pidfile="${mysql_dbdir}/`/bin/hostname`.pid"
command="/usr/sbin/daemon"
command_args="-c -f /usr/local/bin/mysqld_safe --defaults-extra-file=/etc/my.cnf --user=${mysql_user} --datadir=${mysql_dbdir} --pid-file=${pidfile} ${mysql_args}"
これで、ようやくMySQLを起動できる。
# ./mysql-server start
(5) パスワード設定
# mysql -u root
mysql > use mysql;
mysql > set password for root@localhost=password('xxxxx');
mysql> flush privileges;
mysql > exit;
(6) 文字コード調べ
# mysql -u root -p
Password xxxxxxx
mysql > SHOW VARIABLES LIKE 'character_set_%';
+-----------------------------------+--------+
| Variable_name | Value |
+-----------------------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_filesystem | binary |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
+------------------------------------+--------+
6 rows in set (0.00 sec)
入れたままだと、latin1の文字コードになっている。
(7) 文字コード指定
MySQLをストップして、/etc/my.cnfの[mysqld]のセクションにdefault-character-set=ujisを追加したら、エラーが出て起動できなくなった。
調べたらdefault-character-set=ujisは変更され使えなくなったことが分かり、下記のように2行追加した。
[mysqld]
datadir = /usr/db/mysql
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
・
・
myisam_sort_buffer_size = 8M
character-set-server=ujis
skip-character-set-client-handshake
(8) 再確認
mysql> SHOW VARIABLES LIKE 'character_set_%';
+----------------------------------+--------+
| Variable_name | Value |
+----------------------------------+--------+
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | ujis |
| character_set_filesystem | binary |
| character_set_results | ujis |
| character_set_server | ujis |
| character_set_system | utf8 |
+----------------------------------+--------+
systemはデフォルトでutf8、filesystemはbinaryで問題ないので、無事ujsi(EUC)が使えるようになった。 やれやれ。