今回はfreebsd 6.2 を新規インストール
・サーバのコードをUTF-8にした。windowsとの連携の面で日本語が使えて便利。
thinkpad ではdisk bootができなかったので、2.5HDDをPCにつないでインストール後、本体に戻す。
(sony vaio はその方法だと起動しない。どうやるのかは不明。)
1)_ が入力できない問題
/boot/loader.confに追加
hint.kbdmux.0.disabled="1"
2)全てのパッケージを/usr/packages にコピーして、/usr/sbin/sysinstall で
パッケージを追加する。(コピーしないとcdの交換が大変)
bash
fetchmail
perl 5.8.8
portaudit
portupgrade
unzip
vim
zsh
3)プロキシサーバの設定
..cshrc に
setenv HTTP_PROXY "proxysv.jp:8080"
を追加する。
4)portsの更新
まずは、「portsnap fetch」を実行します。
freebsd# portsnap fetch
次ですが、はじめてportsnapを実行した場合は、「portsnap extract」を実行します。
freebsd# portsnap extract
2回目以降は、portsnap fetchを実行したあと、「portsnap update」を実行します
freebsd# portsnap fetch
freebsd# portsnap update
5)シェルをbash に変える
vipw で/usr/local/bin/bash にする。
6)UTF-8 の設定
/etc/profile を追加
alias ll='/bin/ls -la'
alias more=lv
alias vi=vim
export PAGER=lv
export LC_CTYPE=ja_JP.UTF-8
export HTTP_PROXY=proxysv.jp:8080
export encoding=utf-8
7)lv のインストール
jless はutf8が通らないので、lv をインストールする。
/usr/ports/misc/lv でmake install
8)/usr/ports/security/openssl-stable を make install
9)apache20 のインストール
オプションを付けなくてもssl とdav のモジュールは組み込まれるが、davで
コピーした日本語ファイル名がブラウザで化けます。(UTF-8に標準では対応していない)
横取り丸で調べると、後述するhttpd.conf の修正をしても、その前に
Content-Type: text/plain; charset=ISO-8859-1
が強制的に送られてきます。
対策:
1)/usr/ports/www/apache20 で make configure をする。
2)/usr/ports/www/apache20/work/httpd-2.0.61/modules/generators の
・mod_autoindex.c と
・mod_status.c の
ISO-8859-1 を UTF-8 に書き換える
3)make build
4)make install
10)apache のssl 設定(自己証明書の作成)
# mkdir /usr/local/apache2/conf/ssl.key
# cd /usr/local/apache2/conf/ssl.key
# openssl genrsa -des3 -out server.key 1024
# mkdir /usr/local/apache2/conf/ssl.crt
# cd /usr/local/apache2/conf/ssl.crt
# openssl req -new -x509 -days 365 -key ../ssl.key/server.key -out server.crt
# cd /usr/local/apache2/conf/ssl.key
# openssl rsa -in server.key -out server.key
11)winscp の日本語対策
WinSCPを起動した直後の画面で左下の詳細設定をチェックしますすると環境→
SFTPのとこで「サーバはUTF8を使用しない」が「自動」になってると思いますそ
こをセッションごとに「オフ」にすれば日本語が表示されます
11)apache の設定ポリシー
・ipアドレスでアクセスしてくる/usr/local/www/data は無茶難しいパスワー
ドにして、通常は使わない。
・通常使用はバーチャルホストで対応する。
12)apache のフォルダ整理
/usr/local/www 以下の -dist を消してきれいな名前にする。
/icons 以外の中身は全部消す。
/icons は /home/common/icons に移す。
13)httpd.conf の設定
1) LoadModule のdav 関連のコメントを外す。
2) ServerName xyz.co.jp:80
3) <Directory /> はそのまま厳しく。
<Directory /> AllowOverride None Order Deny,Allow Deny from all </Directory>
4) Document root
<Directory "/usr/local/www"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all
AuthType Basic AuthUserFile /usr/local/etc/apache2/.htpasswd AuthName "Member Certification" require valid-user </Directory>
5) user のpublic_html は消す。
6) ServerTokens Prod
7) icons Alias /icons/ "/home/common/icons/" <Directory "/home/common/icons"> Options MultiViews AllowOverride None Order allow,deny Allow from all </Directory>
8) LanguagePriority の先頭にutf-8 ja を持ってくる
9) AddDefaultCharset utf-8 を追加
10)バーチャルホストの追加
それぞれパスワードを別々に作成。
DavLockDB のフォルダを作ってowner をwww にしておく
DAV ON の前に DavLockDB の記述を書く
#
# Use name-based virtual hosting.
#
NameVirtualHost *:443
#
# VirtualHost example:
<VirtualHost *:443> ServerName hehehe.xyz.jp DocumentRoot /home/hehehe/public_html ServerAdmin
[email protected] ErrorLog /var/log/httpd-error-hehehe.log CustomLog /var/log/httpd-access-hehehe.log common
</VirtualHost>
DavLockDB /var/lock/dav/DavLock
<Directory /home/hehehe/public_html> DAV On AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes FollowSymLinks IncludesNoExec Order allow,deny Allow from all
AuthType Basic AuthUserFile /usr/local/etc/apache2/.htpasswd_hehehe AuthName "Member Certification" require valid-user
</Directory>
11)無線LANの設定
http://www.freebsdmall.com/~loader/en_US.ISO8859-1/articles/wireless/article.html
/boot/loader.confに追加
if_ath_load="YES"
ath_hal_load="YES"
ath_rate_load="YES"
wlan_load="YES"
wlan_tkip_load="YES"
wlan_xauth_load="YES"
wlan_acl_load="YES"
access point がブロードキャストされている必要があるそうだ。隠していたときは、正しい SSID とパスワードを設定していても繋がらなかった。
そして、暗号鍵の設定。/etc/wpa_supplicant.conf を以下の様に設定。
network={ ssid="freebsdap" psk="freebsdmall"
}
# vi /etc/rc.conf
ifconfig_ath0="WPA DHCP"
12)mailをperlから送れるようにする
Perl で SMTP Auth の認証が出来たかどうかをチェックするツールを書いていて、
Net::SMTP->auth(user,passwd) を使えば良さそうなので早速試した。しかし簡
単なプログラムを書いてみても全く動かない。
#!/usr/bin/perl
use Net::SMTP;
my ($remotehost, $user, $passwd) = @ARGV;
my $smtp = Net::SMTP->new($remotehost, Timeout=>60, Debug=>0);
if($smtp->auth($user, $passwd) { print "SMTP Auth: success.\n";
} else { print "SMTP Auth: failed.\n";
}
$smtp->quit;
exit;
Debug=>1 にして SMTP のログを見ていたら、明らかに EHLO の直後に何も無し
で QUIT して終わっている。なんだこりゃ、と perldoc -m Net::SMTP を見てみ
ると
sub auth {
..... eval { require MIME::Base64; require Authen::SASL; } or $self->set_status(500,["Need MIME::Base64 and Authen::SASL todo auth"]), return 0;
.....
どうやら Authen::SASL が必要で、これが無いと set_status はするものの、表
面的にはなにも言わずに AUTH 処理せず終了している。お陰で気付かなかったわ
けか…。わざわざ eval で例外処理しいるのが親切だか迷惑だかわからんなぁ。
apt-get install libauthen-sasl-perl したら動いた。