如何在MAMP服务器上安装mod_ftp模块

时间:2012-04-05 01:43:16

标签: ftp mamp apache apache-modules

背景

我最近安装了MAMP,并将其用作生产服务器。服务器设置没有附带FTP服务器,根据我的阅读,您可以通过mod_ftp(Apache模块)设置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” - 是我从压缩文件创建的 mod_ftp 文件夹的ftp​​源根目录我从存储库中检出的文件?

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

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

  4. 我如何知道是否需要静态或DSO构建?

  5. 声明是什么:“将整个ftp源目录树复制到现有的基础之上 httpd源代码树“实际上要求我做什么?(在...之上,在httpd源树的父目录中,或在同一目录中?)

  6. 如果你已经做到这一点,我想赞扬你!

  7. 从这一点开始,我选择了第一个选项,并将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源文件夹之间的文件结构如何需要集成才能使模块正常运行。另外,我不知道我不知道什么,所以可能有一个简单的问题要问,但不幸的是我无法弄清楚如何问它。感谢您的帮助和耐心!

    干杯!

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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

然后,运行所述说明书     ./configure.apxs - &gt;在子文件夹中执行某些操作以使makefile能够工作     制作 - &gt;这会编译回购的内容并改变周围的事物     make install - &gt;您可能希望使用建议的标志运行。基本上将事物复制到需要复制的位置,并创建必要的模块。

建议的./buildconf和./configure应该只在你同时使用ftp编译apache2时才能完成。由于您已经安装了apache2,因此这不是您应该做的选项。只需坚持使用第一组指令,这些指令用于独立于apache2编译mod_ftp并根据需要修补内容。

此时,安装应该在技术上有效。但是,你还没有完全走出困境。如果此时重新启动apache2,它将无法启动。如果你运行systemctl -xe,你会发现它是由于配置文件的各个地方的语法错误,有人忘了添加正斜杠,所以不是相对于root给出,指定的目录最终是相对的改为/ etc / apache2。使用行号作为指导来修复这些问题。可以在apache2.conf文件中找到遗漏,该文件指定mod_ftp模块的位置,并在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文档根目录。