背景
我最近安装了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.
有些问题:
“在ftp源根目录下构建并安装httpd源构建之外的DSO” - 是我从压缩文件创建的 mod_ftp 文件夹的ftp源根目录我从存储库中检出的文件?
“在httpd源代码构建之外”是什么意思? - 这是我在httpd.conf中设置为“/ Applications / MAMP / Library”的ServerRoot值吗?
同样,“在同一个httpd构建中”是什么意思 - 这指的是什么位置?
我如何知道是否需要静态或DSO构建?
声明是什么:“将整个ftp源目录树复制到现有的基础之上 httpd源代码树“实际上要求我做什么?(在...之上,在httpd源树的父目录中,或在同一目录中?)
如果你已经做到这一点,我想赞扬你!
从这一点开始,我选择了第一个选项,并将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源文件夹之间的文件结构如何需要集成才能使模块正常运行。另外,我不知道我不知道什么,所以可能有一个简单的问题要问,但不幸的是我无法弄清楚如何问它。感谢您的帮助和耐心!
干杯!
是的,是的,我已经在互联网上搜了好几个小时了。答案 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文档根目录。