4

背景:

我最近安装了 MAMP,并将其用作生产服务器。服务器设置没有附带 FTP 服务器,根据我的阅读,您可以通过 Apache 模块 mod_ftp 设置 FTP 服务器。我不是 Apache 软件或服务器管理员方面的专家,尽管我可以快速学习。我可以达到以下几点,然后我被卡住了。有人可以帮我吗?

我从存储库中检查了 mod_ftp 模块文件,这里:http: //svn.apache.org/repos/asf/httpd/mod_ftp/trunk/ 并将内容解压缩到:

/Applications/MAMP/mod_ftp

我打开了 README-FTP 文件(在这里):http:
//svn.apache.org/repos/asf/httpd/mod_ftp/trunk/README-FTP

自述文件-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. “从 ftp 源根目录在 httpd 源构建之外构建和安装 DSO”——ftp 源根目录是我从存储库中签出的压缩文件创建的mod_ftp文件夹吗?

  2. “在 httpd 源代码构建之外”是什么意思?-- 这是我在 httpd.conf 中设置为“/Applications/MAMP/Library”的 ServerRoot 值吗?

  3. 同样,“在同一个 httpd 构建中”是什么意思——这是指什么位置?

  4. 我如何知道我想要静态构建还是 DSO 构建?

  5. 什么是声明:“将整个 ftp 源目录树复制到现有的 httpd 源代码树之上”实际上要求我这样做?(在上面??如在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 源文件夹之间的文件结构需要如何集成才能使模块正常运行。另外,我不知道我不知道什么,所以可能有一个简单的问题要问,但不幸的是我不知道如何问。感谢您的帮助和耐心!

干杯!

PS,是的,我已经在互联网上搜索了几个小时。

4

2 回答 2

1

我最终放弃了 MAMP 并使用 Mac 的内置服务器。通过“系统偏好设置”>“共享”菜单,您可以启用文件共享,其中有一个“选项”窗格,允许您“使用 FTP 共享文件和文件夹”。我能够通过 Comcast Business 获得静态 IP 地址,并在路由器的 21 端口上配置端口转发以接受流量。然后,我可以使用我的 FTP 客户端以“123.456.789:21”之类的东西作为我的主机连接到我的路由器。不是最好或最安全的解决方案,但它确实有效,因此请谨慎对待。

于 2015-05-13T02:08:45.140 回答
1

是的,我终于设法在 Ubuntu LTS 16.04 上安装了它。

首先,您应该通过运行
sudo apt-get install subversion apache2-dev 来安装 svn 和 apxs 功能。

然后,cd 到一个方便的文件夹,然后运行 ​​svn co http://svn.apache.org/repos/asf/httpd/mod_ftp/trunk/。这将下载名为 /trunk 的文件夹中的所有内容。然后,cd 进入下载的 repo 的 /trunk 文件夹。

然后,运行所述指令
./configure.apxs --> 在子文件夹中执行某些操作以使 makefile 能够工作
make --> 这会编译 repo 的内容并更改内容。
make install --> 您可能希望使用建议的标志运行。本质上是将内容复制到需要复制的位置,并创建必要的模块。

建议的 ./buildconf 和 ./configure 仅应在您同时使用 ftp 编译 apache2 时完成。由于您应该已经安装了 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.conf
LoadModule ftp_module /usr/lib/apache2/modules/mod_ftp.so 的行存在且未注释。
第一个基本上告诉主 apache2.conf 文件包含 mod_ftp 的配置文件,以帮助对您的 http 和 ftp 配置设置进行分区。第二个只是确保加载了 ftp 模块,以便它可以解释 ftpd.conf 文件中的指令。因此,您不需要添加“FTP on”行或指定端口,因为这些在 ftpd.conf 中处理得非常好。

你现在应该可以走了。请注意,由于某些奇怪的原因,如果您将 ftpd.conf 中的文档根目录设置为与 apache2.conf 中的相同,则 apache2 仍将正常运行。ftp 服务器可以正常工作,但 http 服务器不能正常工作。不知道为什么,但是如果您想这样做,一个简单的解决方法就是对 http 文档根目录进行符号链接并将其设置为 ftp 文档根目录。

于 2017-06-16T20:38:40.710 回答