Apache FtpServer在64位系统下服务不能启动解决方法
?Apache FTPServer是一款用Java开发的FTP开源服务器,其二进制文件及源码可从http://mina.apache.org/ftpserver/下载。然而在使用中,发现如果将其安装为64位的Windows系统的服务时,服务将无法启动,总是提示错误。打开Log文件,则可以发现以下错误信息:
?????? [174? javajni.c] [error] %1 is not a valid Win32 application.
????? ?[947? prunsrv.c] [error] Failed creating java C:\Program Files\Java\jdk1.6.0_26\jre\bin\server\jvm.dll
??????? 在网上搜索该问题的解决方案,几乎没有相关的内容,个别相关网页提及的解决方法是将32系统下的一个动态库拷贝到system32或其它什么指定的目录下,尝试后也未能解决问题。并且,从理论是说,在64位系统下,并且已成功安装64位的JDK或JRE的情况下,这么做似乎也是没有道理的。
??????? 经过分析其bin目录下的service.bat脚本文件及其它脚本,可以发现其实bin目录下的ftpd.exe并不是FTP服务器的必需文件,它只不过是为了在Windows系统下实现系统服务的一个外壳程序,似乎它本身是另外一个开源项目的二进制文件(这一点未经查实,只是猜测)。因此结合在启动FTP服务时日志中记录的异常信息,大胆推测是由于这个ftpd.exe不能在64位Windows系统下正常启动Java编写的FTP程序而造成的,而基于此前的分析,尝试拷贝Tomcat较新版本(6或7)安装在64位Windows系统下的bin目录里的tomcat6.exe或tomcat7.exe到Apache FTPServer的bin目录下,并将原有的ftpd.exe改名或删除,然后将tomcat6.exe或tomcat7.exe改名为ftpd.exe。再次尝试重启FTP服务,发现服务将可以正常启动。
以上方法在Windows 7 SP1 64Bit下验证通过。
id="myServer"max-logins="5"
anon-enabled="false"
max-anon-logins="0"
max-login-failures="3"
login-failure-delay="30000">
<listeners>
<nio-listener name="default" port="21">
<ssl>
<keystore file="./res/ftpserver.jks" password="password" />
</ssl>
</nio-listener>
</listeners>
<file-user-manager file="./res/conf/users.properties" />
</server>
解释说明:
max-logins:允许同时登录ftp的用户数;
anon-enabled:是否运行匿名登录;
max-anon-logins:允许同时登录的最大匿名用户数;
max-login-failures:允许登录失败的次数,超过次数则关闭连接;
login-failure-delay:一次登录失败后,重新发起登录的间隔,单位毫秒;
4、打开D:\Program Files (x86)\Web\ftpserver\res\conf\users.properties,对admin部分修改如下:
ftpserver.user.admin.userpassword=21232F297A57A5A743894A0E4A801FC3
ftpserver.user.admin.homedirectory=./wwwroot
ftpserver.user.admin.enableflag=true
ftpserver.user.admin.writepermission=true
ftpserver.user.admin.maxloginnumber=3
ftpserver.user.admin.maxloginperip=3
ftpserver.user.admin.idletime=0
ftpserver.user.admin.uploadrate=0
ftpserver.user.admin.downloadrate=0
默认的用户名为admin,如果你要修改为别的,只要把上文中的admin换成其他即可,默认是使用md5加密的密码,初始密码为admin,第一行的是加密后的值。
如果你想要使用明码,将ftpd-typical.xml文件中的file标签修改为
<file-user-manager file="users.properties" encrypt-passwords="true" />
即可,但是强烈建议使用加密。
homedirectory:ftp文件目录,你上传的文件将被存放在此,我设置的是apache-ftpserver安装目录下的wwwroot文件夹,当然是我自己新建的。
5、安装,站长选择直接将ftpserver安装为windows服务的形式。
使用管理员身份打开cmd,定位到D:\Program Files (x86)\Web\ftpserver\bin目录,键入命令:
service install ftpd "D:\Program Files (x86)\Web\ftpserver\res\conf\ftpd-typical.xml"。
由于站长的路径中含有空格,应此使用双引号将整个路径引起来,如果你的路径中不含有空格,不需要使用双引号。
6、安装完成后,使用net start ftpd,即可启动apache-ftpserver。
7、访问ftp://127.0.0.1,使用你设置的用户名和密码即可登陆。
8、在D:\Program Files (x86)\Web\ftpserver\bin目录有一个图像界面管理工具,ftpdw.exe。右键使用管理员身份启动,你可以在这里设置,apache-ftpserver是否随系统启动。