Feb 23, 2006

MySQLのデータベースにBBSのログファイルをインポートする

データベースとPerlないしPHPの連携は、進化するwebページに必須のことのようだ。
そこで、試しにBBSのログファイルをデータベースにインポートしてみた。
まずMySQLにBBSというデータベースを作り、そこに、gs_bookというテーブルを作る。
これはPhpmyadminから実行した。

CREATE TABLE gs_book (
id int(11) NOT NULL,
bbs_date text NOT NULL,
bbs_auth text NOT NULL,
bbs_mail text,
bbs_msg text NOT NULL,
bbs_ip text NOT NULL,
PRIMARY KEY (id)
);

この場合、どうしてもPRIMARY KEYを設定する必要があるので、ログの各行に通番をふる。しかも通常の順とは逆に古いものを若い番号にする。
これは、perlでやる。

open(LOG,'logfile');
@all=<LOG>;
$num=1;
while($gyou=(pop @all)){
print $num,'|',$gyou;
$num++;
}

区切り子は、各ログファイルで違うが、<>が多いようだ。ぼくの場合はこの区切り子をviで|に直してしまったが、その必要はないかもしれない。
mysql -uroot -pパスワード --local-infile=1
を実行する。
この「--local-infile=1」は重要である。ぼくもなぜかはわからないが(^^)。これをいれないとエラーになる。
つづいて、

mysql>use BBS;
mysql> load data local infile './logfile' into table gs_book
-> fields terminated by '|'
-> lines terminated by '\n';

を実行する。
なおテキストファイルからのインポートは、Phpmyadminからもできる。
これでPerl DBIを使っていろいろできるし、BBSのログを全部リアルタイムでデータベースに送ることもできる。

Feb 17, 2006

Perl CGIでメールアドレスをエンティティ化する

掲示板などでメールアドレス収集ロボットに捕捉されないようにするには、まず、
HTML::Entities モジュールをCPANからインストールして、
スクリプトに、
use HTML::Entities;
と書いたうえで、メールアドレスの保存に次のサブルーチンを通す。
sub entitiy{
$email=(encode_entities($_[0] ,"\x00-\xff"));
}
試しに右のリンクの「灰皿町ゲストブック」に使ったらうまくいった。
まだ巷の掲示板ではエンティティ化は行われていないようだ。灰皿町では徐々にメールアドレスの表示にエンティティ化された文字列を使うようにしていきたい。

Feb 12, 2006

Mozillaのjava plug-in設定

Mozillaでjavaアプレットやゲームなどを表示させるには、plug-in登録が必要である。
「編集」から「設定」の「ヘルパーアプリケーション」とたどる。
「新しいタイプ」を押して、
「MIMEタイプ」に、「application/x-java-jnlp-file」
「説明」「拡張子」に「jnlp」
「このタイプのファイル処理法」の「アプリケーション」のラジオボタンを押して、
「/usr/lib/j2sdk1.5-sun/jre/javaws/javaws」
を選択する(下図参照)。

b06_02_12a

JAVAで使うfontと環境変数の設定

fontの設定

fontはなぜかkochiだと駄目なようなので、sazanamiをインストールする。
#apt-get install ttf-sazanami-mincho ttf-sazanami-gothic

まず下のディレクトリに行く。もちろん「j2sdk1.5-sun」の部分はインストールしたバージョンによって違う。
shimirin@debian2:/usr/lib/j2sdk1.5-sun/jre/lib$
rootになって、
#cp fontconfig.RedHat.8.0.properties.src fontconfig.properties
とする。
#vi fontconfig.properties
から、中で
:%s/-misc-kochi /-sazanami-/g
とすると、40カ所ぐらい置換されるはずである。kochiの後に空白を1つ入れないと駄目。

環境変数の設定

「/etc/profile」をrootからviで開き、次の2行を追加する。
export JAVA_HOME=/usr/lib/j2sdk1.5-sun
export PATH=${JAVA_HOME}/bin:$PATH
ログアウトして、またログインして、
java -versionを実行。
shimirin@debian2:~$ java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
と表示されればOKである。

もうひとつ、Mozillaのplug-inに設定しなければならないが、また後ほど。

Feb 11, 2006

J2SE SDKのインストール(Debian GNU/Linux)

まず、java-packageをインストールしておく。
手順としては、
1.java-packageをインストール
2.Sunのサイトから、J2SE SDKのLinux用自己解凍のファイルを入手(自己解凍を実行するわけではない)。
3.Debian GNU/Linux上で、J2SE SDKのパッケージを作成して、インストール(NetBeans同梱でないものを選ぶ)。
4.fontの設定
である。

  1. #apt-get install java-package

  2. 「Java 2 Platform Standard Edition 5.0 のダウンロード」から、 「JDKのダウンロード」を選び、表のなかから「jdk-1_5_0_06-linux-i586.bin」(現在最新のもの)を選んで、保存する。

3.上記の「java-package」をインストールすると、「fakeroot」もインストールされるので、それを使う。保存したディレクトリに行って、
$fakeroot make-jpkg jdk-1_5_0_06-linux-i586.bin
とすると、ライセンス承諾などで「yes」と答えて最終的に、「sun-j2sdk1.5_1.5.0+update06_i386.deb」ができる。
これはユーザプロンプトから「fakeroot」しないと、abortされる。
rootになって、
#dpkg -i sun-j2sdk1.5_1.5.0+update06_i386.deb
と実行すると、インストール終了。このままだと文字化けする。4.はまた後ほど。

Feb 09, 2006

SSIモジュールのLoad

このあいだも書いたが、Apacheのモジュールのロードの仕方が、1.3系の新しいのだと変わっている。

shimirin@debian2:/etc/apache$ cat modules.conf
# Autogenerated file - do not edit!
# This file is maintained by the apache package.
# To update it, run the command:
# /usr/sbin/apache-modconf apache

それで、SSIを有効にするには、
#/usr/sbin/apache-modconf apache enable mod_include
とする。
「mod_include.c」でも「mod_include.so」でもなく、「mod_include」だけでないと駄目なようだ。うまくいくと、
「Replacing config file /etc/apache/modules.con with new version」と表示が出る。

Feb 05, 2006

CD-ROMドライブをejectする

通常、Devbian GNU/Linuxをインストールするときには、rootと一人のuserを設定する(ぼくの場合はshimirin)。CD-ROMドライブで音楽を聴いたり、Linux OS バイナリが入ったDVD-ROMを入れるとき、まずejectして、手でCDないしDVDを入れて閉じる。
cdromグループにすでにuserは入っているはずなので、CD-ROMドライブを開けるときには、
shimirin@debian2:~$ eject
とする。
入れて閉じるときには、
shimirin@debian2:~$ eject -t
とする。まあ一度だけボタンを手で押すのを節約するだけだが(^^)。

Feb 03, 2006

必要なPerlモジュールのインストール

このblosxom blogには、
HTTP::Request::Common
Jcode
LWP::Simple
LWP::UserAgent
という4つのモジュールが必要なので、インストールする。
このうちJcode以外はすでにインストールされていた。
rootになって、
#perl -MCPAN -e shell
cpan>install Jcode
とやる。初めにMCPANにアクセスするときには、前に書いたように、地域などの設定をしなければならないが、一度設定してしまうと、上のコマンドのみでOKである。

Feb 02, 2006

PHP4とMYSQLのインストール

php4とMySQL関係のインストールは、apt-getでやればいいのでとても簡単である。まずApacheをインストールしておく。ぼくのインストールしたプログラムは以下のようである。一つインストールすると依存関係から、複数インストールされたり提案されるものがあるが、それも書いてある。
○php4関係
php4
phpdoc
libapache-mod-php4
php4-common
php4-dev
libssl-dev
php4-gd
libgd2-xpm
libgd-tools
php4-pear
php4-cli
libphp-jpgraph
php4-imagick
○MySQL関係
mysql-common
mysql-client
mysql-server
php4-mysql
phpmyadmin
libdbd-mysql-perl
libdbi-perl
libmysqlclient12
libnet-daemon-perl
libplrpc-perl

Feb 01, 2006

Apacheの設定

Apacheの設定は、「/etc/apache/httpd.conf」を書き換えることで行う。
○サーバの名前は「/etc/hosts」の名前と同じにする。たとえば「i.love.belle.cxm」。
○perl cgiを使うので、 #AddHandler cgi-script .cgi .pl
のシャープを外す。
○Directory /home/*/public_htmlの次の1行に、「Options」を追加する。
AllowOverride FileInfo AuthConfig Limit Options
となる。
このディレクティブの後に、
ScriptAlias /~*/cgi-bin/ "/home/*/public_html/cgi-bin/"
を追加。また、
<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
を追加する。
○たいていのCGIスクリプトの実行を、「/usr/local/bin/perl」と書いているので、シンボリックリンクを作成する(rootで)
#ln -s /usr/bin/perl /usr/local/bin/perl
○「DefaultCharset」をoffにする。
○「AddLanguage」のところの、
AddCharset ISO-2022-JP .jis
の後に、
AddCharset EUC-JP .euc
AddCharset SHIFT_JIS .sjis
を追加する。
この2つをやらないと文字化けする。

SSHでHostbasedAuthenticationの再設定

rsyncのためのSSHでHostbasedAuthenticationの再設定で、2〜3日ハマった。
Vine3.0で設定してあった「sshd_config」とクライアントマシンである、Debian GNU/Linux sargeの「ssh_config」は共にプリントしてあったので、そのとおりにしたのに、HostbasedAuthenticationでパスワードなしの接続ができない。
バックアップのための肝心要のものなので、早めに解決しなければならない。
結論からいえば、rysnc設定のメモで書いた「.shosts」(ユーザのホームディレクトリに置く。アクセスモード644)の記述に、ホスト、サーバともに次のようにIPアドレスだけでなく名前も追加したら解決した。これを発見するまでにじたばたしたわけである。この記述法は、インターネットでは情報が載っていなくてぼくが試みたらうまくいったという事柄である。
192.168.0.5 shimirin
i.love.belle.cxm shimirin
前には上の1行だけ書けばうまくHostbasedAuthenticationができていたのに不思議である。なお、Debian GNU/Linux sargeの現在の状態だと、sshdの再起動のコマンドは「/etc/init.d/ssh restart」で「sshd restart」ではない。また「rsync」はデスクトップをインストールしたときに自動でインストールされないので「apt-get install rsync」としてインストールする必要がある。
SSHの再設定で、設定ファイルを見直した。要の部分を書いてみる。
「/etc/ssh/ssh_config」(クライアント側、双方向なら両方)。
HostbasedAuthentication yes
EnableSSHKeysign yes
PreferredAuthentications hostbased,publickey,password
IdentitiyFile ~/.ssh/id_rsa
真ん中の2行は書き加える。
「/etc/ssh/sshd_config」(要の部分だけ。ホスト側、双方向なら両方)。
PermitRootLogin no
StrictModes yes
RSAAuthentication no
PubkeyAuthentication yes(noでもいいが、設定を実験しているときは下のPasswordAuthenticationとともにyes)
RhostsRSAAuthentication no
HostbasedAuthentication yes
IgnoreRhosts no
IgnoreUserKnownHosts no
PasswordAuthentication yes(でもnoでもいいが、noが推奨かも。なぜなら、クライアント側の認証の試みの順序が最初にhostbaseになっていればうまくいけば関係ないから。hostbaseが失敗した場合、外部公開している場合はセキュリティ上、noのがいい)
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePam no
全体的にいえば、上の設定でRSA1のバージョンでなく、RSA2を使い、認証にHostbasedAuthentication(RSA2のみ)を使うことを設定している。

November 2017
Sun Mon Tue Wed Thu Fri Sat
     
   

Search

Categories
Archives
Syndicate this site (XML)

Powered by
blosxom 2.0
and
modified by
blosxom starter kit

新規投稿