■ ついカッとなってGopherサーバを立ててみた
gopherは非常に簡単なプロトコルのため、 telnetでGopherサーバにアクセスする方法 もお手軽です。HTTPと比べて、バイク小屋の議論となるようなサーバシグネチャもありません。
そういうのの相手するくらいならhttpdはぜんぶ捨ててgopherに戻りたい…。
(gopher対ゲイツ様 : ひろ式めもちょう)
今日はなぜか空前のGopherブームでしたので、「昔のgopher時代に戻ったらどうなるのか」を真剣に考えるため、実際にGopherサーバを立ててみました。
↑ gopher://wafful.org/ (※ Firefoxやlynxでアクセスできます)
どう見ても時代に逆行していますが、 私達が今JavaScriptを弄っているのも10年前の技術の再発見に他なりません。 もしかしたらそこに新しい未来が開けている可能性があるのかもしれません。
追記:Web2.0時代のGopher新サービス
Gopher専用ソーシャルブックマークサイト「GopherSnake」が早速ローンチしてました。tokuhiromさん、相変わらず仕事が速すぎです。
■ GoFish - Gopher/Web Server
2005-10-21 に最新版 1.1 がリリースされている GoFish Gopher Serverを使ってみることにしました。他のGopherサーバソフトウェアは既に配布を終了していたり、10年に更新を停止してたりするので、非常に危険です。でも、GoFishなら./configureもついてます。今でも十分通用しそうです。 sourceforge.netから最新のgofish-1.1.tar.gzをダウンロードできます。
CentOS 4.xでビルドしたソースRPM
自分が今メインで使っているサーバがCentOSなLinuxのため、RPMパッケージが欲しかったのでした。 rpmfind.netでgofishを検索すると0.29のバージョンまでしかでてきません。 1.0以降のspecファイルがメンテナンスされていないようでしたので、 最新の gopher-1.1 に対応したRPMパッケージを作成しました。
gopher経由で配布していますので、gopher対応クライアントより入手してください。
残念ながらrpmコマンドやwgetコマンドはgopherプロトコルをサポートしていませんが、lwpのGETコマンドやlynxはgopherに対応しています。
追記: w3mは./configure時に --enable-gopher を付けてコンパイルすれば gopher 対応になるとのことでした。(ukaiさん、yshlさん、ご指摘ありがとうございました。)
w3mはgopherに対応していません。
gofishサービスの再起動
$ service gofish stop $ service gofish start
インストール時の注意事項などのBKは、すべてgofish.specファイルに記述しております。
■ gofish.spec ファイル(抜粋)
Summary: GoFish Gopher Server Name: gofish Version: 1.1 Release: 1 License: GPL Group: Networking/Daemons Source: %{name}-%{version}.tar.gz URL: http://gofish.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-root AutoReqProv: no Conflicts: gopher, gopherd %description GoFish is a simple gopher / web server. It is designed with security and low resource usage in mind. GoFish uses a single process that handles all the connections. This provides low resource usage, good latency (no context switches), and good scalability. GoFish runs in a chroot(2) environment. This means that GoFish can only serve files from the root directory or below. While GoFish must run at root privilege to be able to use port 70, it drops to a normal user while accessing files. %prep %setup -n %{name} %configure %build %{__make} %install %{__rm} -rf $RPM_BUILD_ROOT perl -p -i.bak -e 's{(daemon /usr/sbin/gofish).*$}{mkcache -r -c /etc/gofish.conf && $1 -d -c /etc/gofish.conf};' init-gofish perl -p -i.bak -e 's{^;(root|logfile|pidfile|port)}{$1};s{gopherd\.}{gofish.};' gofish.conf %{__make} DESTDIR=$RPM_BUILD_ROOT install %{__mkdir} -m 0755 -p $RPM_BUILD_ROOT/etc/rc.d/init.d %{__install} -m 0755 init-gofish $RPM_BUILD_ROOT/etc/rc.d/init.d/gofish %{__mkdir} -m 0755 -p $RPM_BUILD_ROOT/etc/logrotate.d %{__cat} <<EOF> $RPM_BUILD_ROOT/etc/logrotate.d/gofish /var/log/gofish.log { weekly rotate 5 copytruncate compress notifempty missingok } EOF %{__rm} -f $RPM_BUILD_ROOT/etc/gofish-www.conf %{__rm} -f $RPM_BUILD_ROOT/usr/bin/check-files %clean %{__rm} -rf $RPM_BUILD_ROOT %post if [ "$1" = 1 ] ; then %{__chown} gopher /var/gopher /sbin/chkconfig --add gofish /sbin/service gofish start 2>&1 >/dev/null fi %preun if [ "$1" = 0 ] ; then /sbin/service gofish stop 2>&1 >/dev/null /sbin/chkconfig --del gofish /sbin/chkconfig --del gofish fi %files %defattr(-,root,root) %doc COPYING README INSTALL NEWS AUTHORS ChangeLog /usr/sbin/gofish /usr/bin/mkcache /etc/rc.d/init.d/gofish /etc/logrotate.d/gofish %{_mandir}/man1/* %{_mandir}/man5/* /var/gopher/icons/* /var/gopher/.gopher+ /var/gopher/.cache /var/gopher/Configure_GoFish %config(noreplace) /etc/gofish.conf
どうぞご利用ください。
コメント
w3m は ./configure --enable-gopher で。
投稿者: ukai | 2007年09月06日 02:16
> ukaiさん
w3mはきちんと対応していたのですね。確認不足で失礼しました。yshlさんからもはてなブックマークのコメントで同様の指摘をいただいたので記事の方を修正しておきたいと思います。ありがとうございました。
投稿者: takesako | 2007年09月06日 11:09