2006年9月18日
(復興作業)FTP サーバー ( Apache Ftpserver ) のインストール
Apache-FtpServerについて、、、
昨年末にApache Avalonグループが解散(codehaus に移行したようだが)して、Phoenix ベースの FtpServer の行方が分からなくなった。FTP は枯れた技術でもあることから今のバージョンでも十分に使えるが、JDKは1.4 がベースで 1.5 は使用できないので注意が必要。(XML関連が対応できないようでPhoenix本体を手直しする必要がある)
壊れたことから久しぶりに Ftpserver のサイトを覗くと、新しい活動が始まっているようでリリース版ではないがnewバージョンのようなものが開発されているようだった。今回は急ぐこともあり、旧をインストールすることにした。
本来は、下の内容をコツコツとインストールしていくのだが、以前に CVS を使って Eclipse で開発をしていたことから Windows マシンにプロジェクトが残っていたので再コンパイルしてセットアップすることにした。もっとも CVSサーバーも当然壊れてしまっているので PC に残っているものが最新のものなのかどうかは確認のしようがない。
キャッシュなどに残っていたメモ
1) ftpserver-with-phoenix-0.9-src.tar.gz をダウンロードし、適当な場所で展開する。2) Java開発環境は j2sdk1.4 を 使用し、javaへのパス、JAVA_HOME、antへのパス、ANT_HOME などの環境変数を設定 する。
antについては jwsdp(Jave Web Services Developer Pack) をインストールしているので、この中にあるantを使用 する。この場合、antの実行スクリプトは起動時に[jwsdpホーム]/jwsdp-sharedbin/setenv.sh を使って環境変数を設定することから j2sdk1.4 を使 用するように書き換える。
3) 環境設定ファイル src/conf/config.xmlを修正
a) Behind firewall, we need real inet address that from ISPを設定
<server-host>XXX.XXX.XXX.XXX</server-host>
ネットワーク 経由の利用をする場合はIPアドレスを定義すること
b) Adminツール で使うポート番号を変更
デフォルトのポート番号1099はJBossがデフォルトで 使用しているために10990とした
<remote-admin-port>10990</remote-admin-port>
c) 重要 < Ftp server host nameを設定
FtpServerがリッスンするIPアドレスを指定する (server-hostと同じ)
<self-host> XXX.XXX.XXX.XXX </self-host>
ネットワークアダプターが複数(仮想も含め)存在する 時に、この指定がないと思わぬアダプターをリッスンすることがある
4) プログラムソースを修正
Adminツールで使うポートを変更したことでツールを修正src/java/org/apache/ftpserver/gui/FtpAdmin.java の
168行目あたりの
java.rmi.registry.Registry.REGISTRY_PORTが1099で、このポートは JBoss が使っているので避ける
mjPortTxt = new JTextField(String.valueOf(Registry.REGISTRY_PORT)); を
mjPortTxt = new JTextField(String.valueOf(Registry.REGISTRY_PORT) + "0"); に275行目あたりの
mjPortTxt.setText(String.valueOf(Registry.REGISTRY_PORT)); を
mjPortTxt.setText(String.valueOf(Registry.REGISTRY_PORT) + "0"); に変更
5) 日本語ファイル名を扱える ように修正
src/java/org/apache/ftpserver/BaseFtpConnection.java の
118行 目あたりの
in = new BufferedReader(new InputStreamReader(mControlSocket.getInput Stream(),
"ASCII"));を
in = new BufferedReader(new InputStreamReader(mControlSocket.getInput Stream()));
とし、デフォルトエンコードを使用するようにする
6) forrest-targets.entを ダウンロードして、ソース展開ディレクトリーに保存する
なぜ必要なのか、またその役割がよく分からな い?
build.xmlに記述があり、ないとエラーが出てビルドできないのだが、な ぜプロジェクトにセットされていないのか分からない
7) ソー ス展開ディレクトリーから antを実行してプロジェクトをビルドする
ソースに日本語の記述がある場合、環境変数 LANG が ja_JP.eucJP のときはマップできないというエラーがかかるので、ja_JP.SJIS に変更してビルドすること
8) 出来上がった dist/ftpserver-1.0 を /usr/local/ にコピーし、シンボリックリンク /etc/init.d/ftpserver を作成9) /usr/local/bin/ftpserver/bin/setenv.sh に環境変数 JAVA_HOME を設定してバッチ起動できるかテストをしておく
10) 起動ファイルを phoenix-bin/phoenix.sh を参考(修正)に /etc/init.d/ftpserver を作成
11) サービスに登録
# chkconfig --add ftpserver
(考)Vine Linux では問題はなく起動できたが、Turbolinux では /etc/service に 'ftp 21/tcp' の記述があり、これをコメントにしないと、address云々のエラーが出た
その後、会社でも使用するに当たって、拡張機能を追加した。
- 1) ファイルの受信完了時に受信したファイルを使う外部プロセスを起動する。
2) 受信したファイルをもとにメール(添付ファイルも可)を送信する。
(エラー)
- 設定ツールでリモートログインしようとすると、このエラーが帰ってくる。
Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectionException: Connection refused connect
ローカルマシンからは接続できる。以前はどうもなかったし、会社でもなんら支障なく動いているので不思議。サーバーに到達すらしていないような感じのエラー状況だ。
差し障りがないことだし、あんまり拘っても仕方がないのでそのままのしておいた。新しいバージョンにトライすることのほうがいいような気もする。
投稿者: 管理者 日時: 2006年9月18日 12:05 | パーマリンク |TOPページへ ▲画面上へ
トラックバック
このエントリーのトラックバックURL:
https://bit-consul.net/cgi-bin/MT/mt-tb.cgi/28