中古で9800円で買ってきたThinkPad535。スタジオでMIDIでも鳴らそうかと思っていたんだが、使い勝手悪すぎ。お払い箱になっちゃいそうなんで、サーバー化。いろいろ便利に使えればいいかなと。RedHatLinuxのバージョンは現在9だけど、Pentium 100MHzではしんどいので、なるべく古いやつってことでカーネル2.2を使った最後のやつ、RedHatLinux6.2jをインストール。VineLinuxのほうが簡単って話だけど、以前インストールしたときにRedHatとディレクトリ構成が微妙に違うんでやっぱRedHatの方がいいやと。
ハードウェアはメモリをメモリを最大まで(20Mかな?)追加して、標準のHDDを最大(6G)まで増やした。この時点で2万になっちゃってるんだけどね。ノートだから停電しても平気だしね、Penの100MHzだから消費電力も少ないしね。このPCの問題はCD-ROMがなくFDDしかない。よってネットワークインストールしなきゃならないこと。
まぁ、以前(HDDが1Gのとき)にもやってたんだけど、HDDを入れ替えたってことでメモを残しておこうかと。
古いのを使うとupdateが面倒だねぇ。でもFDDないからしょうがない。 apacheをバージョンアップしようとしうると、
root# rpm -Uvh apache-1.3.27-1.6.2.i386.rpm エラー: 依存性の欠如: rpmlib(PayloadFilesHavePrefix) <= 4.0-1は apache-1.3.27-1.6.2 に必要とされています
こんなのが出やがるので、まずdb3のupdate
root# rpm -Uvh db3-3.1.17-4.5x.i386.rpm
rpmのバージョンアップ
root# rpm -Uvh rpm-4.0.2-5x.i386.rpm
ようやくapacheのうpでーと
root# rpm -Uvh apache-1.3.27-1.6.2.i386.rpm root# rpm -Uvh apache-devel-1.3.27-1.6.2.i386.rpm root# rpm -Uvh apache-manual-1.3.27-1.6.2.i386.rpm
で、次、俺のサイトほとんどrubyで動くのでrubyのインストール。カレントバージョンは1.8なんだけど、会社も、MacOS-Xも1.6.8なので1.6.8をインストール。ruby1.6.8はrpmがなさそうなので、ソースからインストール。
tuck$ tar xzvf ruby-1.6.8.tar.gz tuck$ cd ruby-1.6.8 tuck$ ./configure tuck$ make tuck$su password:xxxxx root# make install
あと、いろんなところでwgetを使うのでこれもインスコ。
root$ rpm -ivh wget-1.5.3.i386.rpm Preparing... ########################################### [100%] 1:wget ########################################### [100%]
まず、ベースのDocumentの位置を/home/html/にするのでディレクトリを作ると。
root# cd /home root# mkdir html
で、とりあえず、/etc/httpd/conf/httpd.confを編集すると。エディタがviしかないので、viで編集。
root# vi /etc/httpd/conf/httpd.conf
#ServerNameってのを探して適当な名前にして#をはずすっと
#ServerName localhost ↓こんなかんじ。 ServerName tp535
ついでだから、DocumentRootってところをさっき作った/home/html/に変更
DocumentRoot "home/httpd/html/" ↓ DocumentRoot "home/html/"
その下に
# # This should be changed to whatever you set DocumentRoot to. # <Directory "/home/httpd/html">
こんなことが書いてあるので、ここも
<Directory "/home/html">
ここでセーブして、とりあえず起動してみよう。。
root# /etc/rc.d/init.d/httpd Usage: /etc/rc.d/init.d/httpd {start|stop|restart|reload|status} root# /etc/rc.d/init.d/httpd start Starting httpd: [ OK ]
OKっぽい。さっきの/home/html/にindex.htmlを適当に作って入れてアクセスしてみてOKならOK。
自分の家を外からアクセスできるようにするには、ドメインネームがないと不便。家が固定IPならいいけど、そうじゃなくてADSLみたいに接続するた度にかわるような場合は、ダイナミックDNSサービスと使うと。ddo.jpここで無料でとれる。
ここは、一ヶ月更新しないと消えちゃうんだけど、それはとりあえず置いといて、自分のルーターの設定。ルーターはTE4121cっていうやつ。これで、wwwサーバーを公開するにして、tp535のIPアドレスを入れてやると。ルーターからIPアドレスがDHCPで振られるて、192.168.1.3になるようになってるから、それを入力。
これで、さっきのddo.jpにいってidとパスを入力して成功すれば外から見れるようになってるはず。エキサイトwebページ翻訳ここで確認。ローカルエリア内だからIPアドレス打っても外に出て行かないのよね。他に確認する方法ってあるの?。
で、一ヶ月に1回は置いといて、ADSLのアドレスが変わっちゃったら、アクセスできなくなっちゃうので、ルーターから今のIPアドレスを取得するスクリプトを組むと。
#!/usr/local/bin/ruby # # TE4121C用グローバルIP取得スクリプト # require 'net/http' #更新関数 def update() Net::HTTP.start('ddo.jp',80){|http| response = http.get('/dnsupdate.php?dn=XXXX&pw=XXXX') #さっき取ったアカウントとパス } end #本体 Net::HTTP.version_1_2 req = Net::HTTP::Get.new('/cgi-bin/main.cgi?cc_webname=STATUS') req.basic_auth 'user', 'user' Net::HTTP.start('192.168.1.1') {|http| response = http.request(req) i = response.body.index("ADSL") i = response.body.index(":",i) e= response.body.index("</",i) ip = response.body[i+1..e-1] #ipアドレス取得 file = File.open("./adr",'r') adr = file.gets #adrってファイルから読み込み file.close if(adr != ip) #ipアドレスが違う file = File.open("./adr",'w') file.print ip file.close update() #更新 end } #end of file
これと、adrってからのファイルを自分のhomeディレクトリに置いておくいて、crontabで周期的にチェック。crontab -eで編集、-lで今のリストの表示後は忘れた。これ、デフォルトでviで編集が始まるのよね。viの操作は"a"keyで編集開始、"esc"Keyで編集終了、shift+"z"を2回押すとセーブされる。後はしらない。頭から分、時、日、月、年かな?、年のところは使ったことないからわからんけど、*は分なら1分ごとって意味ね(あれ?曜日ってあったな、まぁいいか、使うときに調べれば。)。で*/5で5分ごと。5分ごとにルーターに割り当てられてるグローバルIPアドレスを取得してきて、前回と違ってたら更新すると。ファイル名はgetip.rbにして置いた。パーミッション設定も忘れずに。
失敗するとメールがくる。5分たってメールがこなければOK。しばらくしてadrファイルを見ると今のipアドレスが書いてあるはず。
getip.txt一応置いとく。
tuck$ chmod 755 getip.rb tuck$ crontab -e */5 * * * * /home/tuck/getip.rb
次、CGIを動くようにする。さっきの/home/html/の中にcgi-binというディレクトリを作って、ここをcgiのディレクトリにする。
root# cd /home/html root# mkdir cgi-bin
次に、httpd.confをまた編集してcgiが動くように設定。ScriptAliasと、ディレクトリ設定を/home/html/cgi-bin/に書き換える。あ、デフォルトの位置で使うならこんなディレクトリの設定とかしなくていいのよ。
root# vi /etc/httpd/conf/httpd.conf
でエディタ起動
ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/" ↓ ScriptAlias /cgi-bin/ "/home/html/cgi-bin/" と <Directory "/home/httpd/cgi-bin"> ↓ <Directory "/home/html/cgi-bin">
再起動っと
root# /etc/rc.d/init.d/httpd restart Shutting down http: [ OK ] Starting httpd: [ OK ]
で、/home/html/cgi-bin/の下に適当なcgiを置いてテスト。超簡単なrubyで書いたcgiプログラムを使う。helloって出るだけ:p。
#!/usr/local/bin/ruby print "Content-type: text/html\n\n" print "<html><body>hello</body<>/html>"
これをtest.cgiという名前にして、アクセス権を変更してアクセステスト。
root# chmod 755 test.cgi
アクセス先は、http://192.168.1.3/cgi-bin/test.cgi。このIPはルーターでこのPCに割り当てられるようにしたIPアドレス。
これで'hello"とでれば成功。だめなら、/etc/httpd/logs/error_logを見るといろいろ書いてある。not foundだったら、さっきのhttpd.confが間違ってる可能性大。フォービデンならアクセス権が違う可能性大。
TP535は古くて、時計が狂うので、xntpを入れて時刻合わせ。たまに一気に1年も狂う。rpmでインスコして、xntpd startで起動。
root# rpm -ivh xntp3-5.93-14.i386.rpm Preparing... ########################################### [100%] 1:xntp3 ########################################### [100%] root # /etc/rc.d/init.d/xntpd start Starting xntpd: [ OK ]
設定しないで起動していいのか?。まぁいいや、動いたのは確認。
で、あらためて設定、viで/etc/ntp.confを編集。local Clockになってやがる・・・。東京理科大に変更。
#server 127.127.1.0 # local clock ↓ここを、こう。 server sutns.sut.ac.jp root# /etc/rc.d/init.d/xntpd restart ←リスタート
これで同期とれてるのか?。ntpq -pってやると確認できるらしいが。
root# /usr/sbin/ntpq -p remote refid st t when poll reach delay offset disp ====================================================== sutns.sut.ac.jp sutntp.sut.ac.j 2 u 49 64 17 138.26 19167.9 1896.51
う、うーん。よくわからん。同期撮れてると*が付くはずはずなんだが。まぁいいか。ずれてきてから考えよう。
鯖にWebDAVなる物を入れると.MacのiDiskになるということで、家のもやってみよう。CGIのアップローダーでも役に立つが、制限事項とセキュリティがね。
http://www.webdav.org/mod_dav/
ここからダウンロード。
解凍してと
$ tar -xzvf mod_dav-1.0.3-1.3.6.tar.gz
そのディレクトリにはいって、ルートになって。
$ cd mod_dav-1.0.3-1.3.6 $./configure $make $su passward:xxxxxxx
インストールと、
root#make install cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak cp /etc/httpd/conf/httpd.conf.new /etc/httpd/conf/httpd.conf rm /etc/httpd/conf/httpd.conf.new
ん?httpd.conf書き換えられたな。。ちっちっち。面倒だな。コピーされた上で新しいの作ってるのかな。。
ん、大丈夫だ。自分で書いたのはそのままで、
LoadModule dav_module lib/apache/libdav.so AddModule mod_dav.c
こんなのが追加されてる。
viで検索するには"/"と入れると検索できるらしい。
が、ここにあるのか?。なんか/etc/httpd/modules/の中にlibdav.soなんてものがあるんだけどな。
まいいか、とりあえずapache再起動。
root# /etc/rc.d/init.d/httpd restart Shutting down http: [ OK ] Starting httpd: Syntax error on line 874 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/lib/apache/libdav.so into server: /etc/httpd/lib/apache/libdav.so: cannot open shared object file: No such file or directory [FAILED]
ガーン。やっぱないっていわれちゃったよ。。じゃ書き換え。
#LoadModule dav_module lib/apache/libdav.so ↓ここを書き換え LoadModule dav_module modules/libdav.so アパッチ起動 root# /etc/rc.d/init.d/httpd start Starting httpd: [ OK ]
あい、とりあえず動いた。
で?。でどうするんだ?。どのディレクトリがWebDAVになってるかわからんな。とりあえず、/home/htmlの中にdavとディレクトリを作って、ここをWebDAVのディレクトリにすることにする。
$mkdir /home/html/dav $chmod 777 /home/html/dav
そもそも、OS-XでどうやってWebDAVにアクセスするんだ?。ふむふむ、Finderからサーバーに移動で接続するのね。時鯖だからIPアドレス指定でhttp://192.168.1.3/davで接続すればいいんだな。たぶん。
さて、WebDAVに使うディレクトリを有効にしなくては。
まず、httpd.confに DAVLockDBってのをかかなきゃいけないらしい。しかも、Userディレクトティブで書き込めないと行けないと。/home/davlockにしよう。
httpd.confに書く。
DAVLockDB /home/davlock/DAVLock
で、ディレクトリを有効に。
DAV On
で、再起動。
root# /etc/rc.d/init.d/httpd restart Shutting down http: [ OK ] Starting httpd: [ OK ]
さてさて、Finderからサーバに接続。
http://192.168.1.3/dav/
おぉー、とりあえずマウントされた。
なんかドラッグしてみよう。。
おぉーー普通にコピーされた。
ふむ。windowsからもアクセスしてみたが、windowsはいまいちだね。OS-XはiDiskがあるのでOSの機能のままで使い勝手が良い。普通にディスクにあるのと同じように使える。そのまま編集もできるし。でもWindowsからだと、編集とかはできないみたい。一度HDDにコピーしてから編集して、再度コピーと。制限付き共有ディスクかな。WindowsXPだとどうなってるかわからんけど。
WebDAVを入れて便利になったはいいのだが、仲間内での共有ディスクとして 使っていると、不都合が・・・。別にasciiのファイル名だけで、2バイトコードのファイル名なんて 使わなければいいや。と思っていたんだが、「日本語のファイルも入れられたよ。」なーんていわれちゃって。。そりゃ入れられるけどよ、その後問題があるのよ。。ってことで、やはりmod_encoding も必須かも。。
どこから取ってくれば良いかよくわからんが、WebDavResourceってところにあったので、ここからApache1.3用の ものを取って来てインストールしよう。
$wget mod_encoding 20021209.tar.gz $cd mod_encoding-20021209 $./configure $make apxs -c mod_encoding.c make: apxs: Command not found make: *** [mod_encoding.so] Error 127
なんじゃこりゃ・・・。
調べると/usr/sbinのなかにapxsってのがあって、configure時に指定するらしい。
$./configure -with-apxs=/usr/sbin/apxs $make mod_encoding.c: In function `iconv_string': mod_encoding.c:100: warning: passing arg 2 of `iconv' from incompatible pointer type gcc -shared -o mod_encoding.so mod_encoding.o
なんかワーニングが出ておりますが・・・。まぁいいか。
root#make install
んでもって設定。httpd.confの書き換え。mod_encodingのロードと設定かな。 なんかreadmeを読むとheader情報としてMS-Author-Viaなんてのを送らないとwindowsで誤動作する らしいので、それも入れとく。LoadModules mod_headers.soはすでに入っていたので追加しない。
LoadModule encoding_module modules/mod_encoding.so AddModule mod_encoding.cHeader add MS-Auther-Via "DAV" EncodingEngine on NormalizeUsername on SetServerEncoding UTF-8 DefaultClientEncoding JA-AUTO-SJIS-MS SJIS AddClientEncoding "cadaver/" EUC-JP
ほかはよくわからんので、そのままコピペ。
で、再起動。
root# /etc/rc.d/init.d/httpd restart Shutting down http: [ OK ] Starting httpd: [ OK ]
うーん。日本語のファイルは入れられたし消せる。さて?、 何ができないんだっけ?。
※なにやら、Proxyを通したり、IEだったり、officeだったりを使っていると色々問題が あるらしい。いまのところos-xからは問題なく、win2kProのエクスプローラーからはなんとか使える。 win2kproはファイルの入出力だけで、そのまま編集はできないらしい。XPになると、os-xに近づいて 編集も出来るようになる様だが、XPを試せる環境にない。しかしなー、なんでもかんでも80だな。。
Top | 前へ戻る |
Copyright (C) 2001-2005 俺 All right reserved.