4

バックグラウンド:

最近MAMPをインストールし、本番サーバーとして使用しています。サーバーのセットアップにはFTPサーバーが付属していませんでした。私が読んだところによると、Apacheモジュールであるmod_ftpを介してFTPサーバーをセットアップできます。私はApacheソフトウェアやサーバー管理の専門家ではありませんが、すぐに学ぶことができます。次の点にたどり着くと行き詰まります。誰かが私を助けてくれますか?

http://svn.apache.org/repos/asf/httpd/mod_ftp/trunk/のリポジトリからmod_ftpモジュールファイルをチェックアウトし 、内容を次の場所に解凍しました。

/Applications/MAMP/mod_ftp

README-FTPファイル(ここ)を開きました:
http ://svn.apache.org/repos/asf/httpd/mod_ftp/trunk/README-FTP

README-FTP:

To build and install as a DSO outside of the httpd source
build, from the ftp source root directory, simply;

    ./configure.apxs
    make
    make install

...

To build static, or as a DSO but within the same build as httpd,
copy the entire ftp source directory tree on top of your existing 
httpd source tree, and from the httpd source root directory

    ./buildconf  (to pick up ftp)
    ./configure --enable-ftp {your usual options}

and proceed as usual.

いくつかの質問:

  1. 「httpdソースビルドの外部、ftpソースルートディレクトリからDSOをビルドしてインストールする」 -ftpソースルートディレクトリは、リポジトリからチェックアウトしたzipファイルから作成したmod_ftpフォルダですか?

  2. 「httpdソースビルドの外」とはどういう意味ですか?--これは、httpd.confで「/ Applications / MAMP / Library」として設定したServerRoot値ですか?

  3. 同様に、「同じhttpdビルド内」とはどういう意味ですか?これはどの場所を指しているのですか?

  4. 静的ビルドとDSOビルドのどちらが必要かを知るにはどうすればよいですか?

  5. 「既存のhttpdソースツリーの上にftpソースディレクトリツリー全体をコピーする」というステートメントは、実際に私に求めていますか?(??のように、httpdソースツリーの親ディレクトリにあるのか、それとも同じディレクトリにあるのか?)

  6. これまでに成功したなら、私はあなたを称賛したいと思います!

この時点から、最初のオプションを選択し、README-FTPに表示されるコマンドをターミナルに入力しました。

私の端末は次のようになります。

$ ./configure.apxs
Configuring mod_ftp for APXS in /usr/sbin/apxs
Detecting features

Finished, run 'make' to compile mod_ftp

Run 'make FTPPORT=8021 install' to install mod_ftp
(The default FTPPORT is 21 if not specified)

The manual pages ftp/index.html and mod/mod_ftp.html
will be installed to help get you started.

The conf/extra/ftpd.conf will be installed as an example
for you to work from.  In your configuration file,
  /private/etc/apache2/httpd.conf
uncomment the line '#Include conf/extra/ftpd.conf'
to activate this example mod_ftp configuration.
$ make
Making all in modules/ftp
$ sudo make install
Password:
Making install in modules/ftp
/usr/share/apr-1/build-1/libtool --silent --mode=install cp mod_ftp.la /usr/libexec/apache2/
Installing configuration files
for i in /private/etc/apache2/httpd.conf /private/etc/apache2/original/httpd.conf; do \
        if test -f $i; then \
        (awk -f /applications/mamp/library/mod_ftp/build/addloadexample.awk \
            -v MODULE=ftp -v DSO=.so -v LIBPATH=libexec/apache2 \
            -v EXAMPLECONF=/private/etc/apache2/extra/ftpd.conf \
            < $i > $i.new && \
            mv $i $i.bak && mv $i.new $i \
            ) || true; \
        fi; \
        done
Preserving existing FTP documents
Installing header files
Installing online manual
$ 

それで、私はここから何をしますか?mod_ftp.soはどこにも表示されません。特に、このディレクトリを探しています。

/Applications/MAMP/Library/modules (where all of Apache's other mod_*.so files are...)

およびこのディレクトリ:

/Applications/MAMP/mod_ftp/modules/ftp (where all of mod_ftp's various .c, .h and other files are)

最終的に、私が直面している問題は、モジュールを正しく実行するために、mod_ftpソースフォルダーとhttpdソースフォルダーの間のファイル構造を統合する必要がある方法がわからないことだと思います。また、何がわからないのかわからないので、簡単な質問が1つあると思いますが、残念ながら質問の仕方がわかりません。あなたの助けと忍耐に感謝します!

乾杯!

PS、はい、私は何時間もインターネットを調べてきました。

4

2 に答える 2

1

結局、MAMPを廃棄し、Macの組み込みサーバーを使用することになりました。[システム環境設定]>[共有]メニューから、ファイル共有を有効にできます。ファイル共有には、[FTPを使用してファイルとフォルダーを共有する]ことができる[オプション]ペインがあります。Comcast Businessを介して静的IPアドレスを取得し、ルーターのポート21でトラフィックを受け入れるようにポート転送を構成しました。次に、FTPクライアントを使用して、「123.456.789:21」のようなものをホストとしてルーターに接続できます。最善または最も安全な解決策ではありませんでしたが、うまくいったので、一粒の塩と一緒に服用してください。

于 2015-05-13T02:08:45.140 に答える
1

そうです、私はついにこれをUbuntuLTS16.04にインストールすることができました。

まず、
sudo apt-get install subversion apache2-devを実行して、svnおよびapxs機能をインストールする必要があります。

次に、便利なフォルダーにcdして、svncohttp://svn.apache.org/repos/asf/httpd/mod_ftp/trunk/を実行します。これにより、/trunkという名前のフォルダーにあるすべてのものがダウンロードされます。次に、ダウンロードしたリポジトリの/trunkフォルダーにcdします。

次に、指定された命令を実行します
。./configure.apxs->サブフォルダーで何かを実行して、makefileが機能
するようにします。make->これにより、リポジトリの内容がコンパイルされ、状況が変わります。
makeinstall->提案されたフラグを使用して実行することをお勧めします。基本的に、コピーが必要な場所に物事をコピーし、必要なモジュールを作成します。

推奨される./buildconfと./configureは、apache2をftpで同時にコンパイルする場合にのみ実行する必要があります。すでにapache2がインストールされているはずなので、これは実行すべきオプションではありません。apache2とは独立してmod_ftpをコンパイルし、必要に応じてパッチを適用するために使用される最初の一連の命令に固執するだけです。

この時点で、インストールは技術的に機能するはずです。しかし、あなたはまだ完全に森から出ていません。この時点でapache2を再起動すると、起動に失敗するはずです。systemctl -xeを実行すると、設定ファイルのさまざまな場所で構文エラーが発生し、誰かがスラッシュを付加するのを忘れたことがわかります。そのため、rootに対して相対指定されるのではなく、指定されたディレクトリが相対位置になります。代わりに/etc/apache2に移動します。行番号をガイドとして使用して、それらを修正します。欠落は、mod_ftpモジュールの場所を指定するapache2.confファイル、およびエラーログの場所を指定するftpd.confファイルにあります。

ここで、apache2.confとftpd.conf(/ etc /apache2フォルダーの/extraサブフォルダーにあります)をいじくり回す必要があります。
行に/etc/apache2/extra/ftpd.confLoadModuleftp_module
/usr/lib/apache2/modules/mod_ftp.soが存在し、コメントが付いていないことを確認してください。
1つ目は、基本的にメインのapache2.confファイルに、httpとftpの構成設定のパーティション分割に役立つmod_ftpの構成ファイルを含めるように指示します。2つ目は、ftpモジュールがロードされていることを確認して、ftpd.confファイル内のディレクティブを解釈できるようにします。したがって、「FTP on」という行を追加したり、ポートを指定したりする必要はありません。これらはftpd.confで完全に処理されるためです。

これで準備が整いました。奇妙な理由で、ftpd.confのドキュメントルートをapache2.confのドキュメントルートと同じに設定した場合でも、apache2は正常に実行されることに注意してください。ftpサーバーは正常に機能しますが、httpサーバーは機能しません。理由はわかりませんが、それを実行したい場合の簡単な回避策は、httpドキュメントルートへのシンボリックリンクを作成し、それをftpドキュメントルートとして設定することです。

于 2017-06-16T20:38:40.710 に答える