首页 > 其他分享 >apache ftpserver服务器安装及服务启动问题解决

apache ftpserver服务器安装及服务启动问题解决

时间:2023-11-23 23:49:04浏览次数:36  
标签:PR service ftpd ftpserver user apache 服务器

 

在安装apache ftpserver后作为系统服务启动时遇到不能启动成功的问题,在网上各种搜索,发现很多人也遇到了同样的问题,折腾了1天,尝试了添加dll动态链接库、tomcat.exe替换ftpd.exe等还是没搞定。

最后查看服务安装脚本service.bat,发现问题所在,现记录下过程中遇到的坑,分享出来参考,避免其他朋友踩坑。

 

先总结如下几点关键:

  (1):在使用jdk的java虚拟机情况下,apache ftpserver安装为系统服务时,需要注意修改service.bat脚本文件中java虚拟机的路径位置,

       不修改的话会去找jre下的java虚拟机。当然,如果本来就使用的是jre,就不用修改了。

  (2):启动服务时报不是有效的32位程序的错误,就需要用tomcat的执行文件修改位为同名文件进行替换。

  (3):注意,安装脚本service.bat需要在管理权限的cmd下执行,同样ftpdw.exe服务管理程序也需要管理权才能执行。

  (4):service.bat脚本在设置jvm时还可以再优化,在找不到jre情况下,可以查找jdk的路径,如果还是找不到,再设置为auto,并给出警告。

 

 

下面详细说明安装过程和分析过程:

本人操作系统为win10 64位。java安装的jdk19,不是jre。

apache ftpserver的下载安装就不多说了,直接到官网https://mina.apache.org/ftpserver-project下载apache ftpserver 1.2.0,解压。

 

基本操作步骤:

1、修改res/conf/下的ftpd-typical.xml文件内容,修改port=“21”,增加encrypt-passwords="clear",保证读取users.properties中的用户密码为明文密码,

如果不增加encrypt-passwords设置的话,读取的密码就不是明文密码,实际上是用MD5对密码哈希后的密文。

 1 <server xmlns="http://mina.apache.org/ftpserver/spring/v1"
 2   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3   xsi:schemaLocation="
 4      http://mina.apache.org/ftpserver/spring/v1 https://mina.apache.org/ftpserver-project/ftpserver-1.0.xsd  
 5      "
 6   id="myServer">
 7   <listeners>
 8     <nio-listener name="default" port="21">
 9         <ssl>
10                 <keystore file="./res/ftpserver.jks" password="password" />
11             </ssl>
12     </nio-listener>
13   </listeners>
14   <file-user-manager file="./res/conf/users.properties" encrypt-passwords="clear"/>
 15 </server>

 

2、修改users.properties文件中用户名、密码及homedirectory路径:

结合1中增加的encrypt-passwords="clear",这里用户a的密码就是a,如果没有增加encrypt-passwords="clear",

则这里的userpassword就必须是真实密码进行md5计算得到的16字节串。

ftpserver.user.a.userpassword=a
ftpserver.user.a.homedirectory=G:/ftpdir
ftpserver.user.a.enableflag=true
ftpserver.user.a.writepermission=true
ftpserver.user.a.maxloginnumber=0
ftpserver.user.a.maxloginperip=0
ftpserver.user.a.idletime=0
ftpserver.user.a.uploadrate=0
ftpserver.user.a.downloadrate=0

ftpserver.user.anonymous.userpassword=
ftpserver.user.anonymous.homedirectory=./res/home
ftpserver.user.anonymous.enableflag=true
ftpserver.user.anonymous.writepermission=false
ftpserver.user.anonymous.maxloginnumber=20
ftpserver.user.anonymous.maxloginperip=2
ftpserver.user.anonymous.idletime=300
ftpserver.user.anonymous.uploadrate=4800
ftpserver.user.anonymous.downloadrate=4800

 

3、先用ftpd.bat直接简单验证独立服务能启动成功,登录也正常,然后ctrl+c终止服务。

F:\mytool\server\apache-ftpserver-1.2.0\bin>ftpd.bat res\conf\ftpd-typical.xml
Using XML configuration file res\conf\ftpd-typical.xml...
FtpServer started
Stopping server...
终止批处理操作吗(Y/N)? Y

F:\mytool\server\apache-ftpserver-1.2.0\bin>

 

4、安装为windows系统服务:

  a)执行service.bat install ftpd res/conf/ftpd-typical.xml安装ftpserver为系统服务:

F:\mytool\server\apache-ftpserver-1.2.0\bin>service.bat install ftpd res/conf/ftpd-typical.xml
Installing the service 'ftpd' ...
Using FTPD_HOME: F:\mytool\server\apache-ftpserver-1.2.0
Using JAVA_HOME: C:\Program Files\Java\jdk-19
Using JVM: auto
start
start;res/conf/ftpd-typical.xml
start;res/conf/ftpd-typical.xml
The service 'ftpd' has been installed.

F:\mytool\server\apache-ftpserver-1.2.0\bin>

 

如上,提示ftpd服务安装成功后,在bin路径下找到ftpdw.exe以管理权限执行,结果服务启动失败;到系统服务下找到Apache FtpServer ftpd,启动也失败:

 

查看日志信息如下,返回creating java失败:

[2023-11-22 23:00:22] [info] Running Service...
[2023-11-22 23:00:22] [info] Starting service...
[2023-11-22 23:00:22] [947  prunsrv.c] [error] Failed creating java 
[2023-11-22 23:00:22] [1202 prunsrv.c] [error] ServiceStart returned 1
[2023-11-22 23:00:22] [info] Run service finished.

 

  b)遇到问题后,本来以为前面安装服务时输出信息中“Using JVM: auto”是正确的,可以自动查找java虚拟机,结果阅读service.bat脚本时发现,

只有在这个%JAVA_HOME%\bin\jre\server\jvm.dll找不到的情况下才会设置为auto,而这个路径下包含了jre子路径,实际我的环境中并没有安装jre,

用的是jdk,因此安装服务时会设置虚拟机为auto,实际上auto表示没有找到虚拟机。因此导致“Failed creating java”报错,如下:

 

 

set PR_DESCRIPTION=Apache FtpServer (http://mina.apache.org/ftpserver/)
set PR_INSTALL=%EXECUTABLE%
set PR_LOGPATH=%FTPD_LOGPATH%
set PR_CLASSPATH=%FTPD_CLASSPATH%
rem Set the server jvm from JAVA_HOME
set PR_JVM=%JAVA_HOME%\bin\jre\server\jvm.dll
if exist "%PR_JVM%" goto foundJvm
rem Set the client jvm from JAVA_HOME
set PR_JVM=%JAVA_HOME%\jre\bin\client\jvm.dll
if exist "%PR_JVM%" goto foundJvm
set PR_JVM=auto
:foundJvm
echo Using JVM: %PR_JVM%

 

  c)根据我系统中java虚拟机的实际位置,将脚本中的jre去掉,如下

set PR_DESCRIPTION=Apache FtpServer (http://mina.apache.org/ftpserver/)
set PR_INSTALL=%EXECUTABLE%
set PR_LOGPATH=%FTPD_LOGPATH%
set PR_CLASSPATH=%FTPD_CLASSPATH%
rem Set the server jvm from JAVA_HOME
set PR_JVM=%JAVA_HOME%\bin\server\jvm.dll
if exist "%PR_JVM%" goto foundJvm
rem Set the client jvm from JAVA_HOME
set PR_JVM=%JAVA_HOME%\jre\bin\client\jvm.dll
if exist "%PR_JVM%" goto foundJvm
set PR_JVM=auto
:foundJvm
echo Using JVM: %PR_JVM%

 

  卸载服务后,重新安装一次,java虚拟机的位置就正确了


 F:\mytools\server\apache-ftpserver-1.2.0\bin>service.bat remove ftpd

  The service 'ftpd' has been removed

F:\mytool\server\apache-ftpserver-1.2.0\bin>service.bat install ftpd res/conf/ftpd-typical.xml
Installing the service 'ftpd' ...
Using FTPD_HOME: F:\mytool\server\apache-ftpserver-1.2.0
Using JAVA_HOME: C:\Program Files\Java\jdk-19
Using JVM: C:\Program Files\Java\jdk-19\bin\server\jvm.dll
start
start;res/conf/ftpd-typical.xml
start;res/conf/ftpd-typical.xml
The service 'ftpd' has been installed.

F:\mytool\server\apache-ftpserver-1.2.0\bin>

 

   d)再次用ftdw.exe启动服务,或在命令行用net start ftpd,还是启动失败,查看日志提示“ %1 不是有效的 Win32 应用程序”,如下:

[2023-11-23 09:15:51] [info] Running Service...
[2023-11-23 09:15:52] [info] Starting service...
[2023-11-23 09:15:52] [174 javajni.c] [error] %1 不是有效的 Win32 应用程序。
[2023-11-23 09:15:52] [947 prunsrv.c] [error] Failed creating java C:\Program Files\Java\jdk-19\bin\server\jvm.dll
[2023-11-23 09:15:52] [1202 prunsrv.c] [error] ServiceStart returned 1
[2023-11-23 09:15:52] [info] Run service finished.
[2023-11-23 09:15:52] [info] Procrun finished.

   

5、结合网上搜索的帖子,说ftpd.exe只是一个服务外壳,在64位系统下存在问题,需要用tomcat6.exe修改位ftpd.exe,然后替换掉

ftpd.exe,于是下载tomcat7.exe进行替换后重新启动服务,终于启动成功!!!,后续尝试用tomcat10的,也可以启动成功,自此,

apache ftpserve的服务问题解决。

 

 

标签:PR,service,ftpd,ftpserver,user,apache,服务器
From: https://www.cnblogs.com/dingbj/p/apache_ftpserver.html

相关文章

  • 【Linux专题】同个ip同个服务器搭建多个站点https
    原创: 厦门微思网络Nginx配置文件多站点https配置文件如下:worker_processes4;events{worker_connections100000;}http{includemime.types;default_typeapplication/octet-stream;sendfileon;tcp_nopushon;tcp_nodelayon;keepalive_......
  • apache服务
    apache服务安装包httpd服务名称:httpd 是一个网站服务,用于去访问主页的服务 配置文件名称:服务的根目录:/etc/httpd主配置文件:/etc/httpd/conf/httpd.conf网站数据目录:/var/www/html访问日志:/var/log/httpd/access_log错误日志:/var/log/httpd/error_log ......
  • linux服务器挖矿病毒 xmrig 排查和清除
    本身因为做后端开发没事的时候希望搞点小东西,就买了一个腾讯云的服务器。昨天突然收到腾讯云发的告警信息,提示服务器被人非法登录了。这个ip我也查了下,不确定是不是固定ip。我看到这个第一时间想到的就是被人注入脚本进行挖矿了,(碰到过好多次了............
  • centos的服务器的yum源设置
    centos的服务器的yum源设置最近使用了超聚变服务器FusionOS。超聚变的yum源为自己的,如果需要修改yum源为国内主流的阿里源,则可以通过以下的方式。任何镜像的centos服务器其实修改方式都一样。1、进入配置目录cd/etc/yum.repos.d/2、备份当前系统的原yum源当前系统的repo为......
  • Linux服务器远程文件拷贝两种方法介绍
    假设有两台linux服务器,如何将111.22.3.64上的/usr/local/example-server目录下的所有文件和目录拷贝到55.166.77.246的/usr/local/example-server目录下?  Linux服务器远程文件拷贝两种方法介绍要从一个Linux服务器拷贝文件到另一个Linux服务器,可以使用scp命令或rsync命令。以下是......
  • 阿里云 服务器 邮件发送
    使用SMTP(简单邮件传输协议)发送邮件一般都是使用默认的25端口,而阿里云服务器为了安全将25端口封禁了,会出现在本机测试发送邮件功能正常,但是部署到服务器上却发送失败的情况。解决办法是向阿里云申请解封25端口,或者更换端口,建议使用587端口(有的说465可用但经过测试不可用) usingSy......
  • 阿里云服务器最新优惠 99元1年,续费同价
    【阿里云】2核2G3M固定带宽,不限流量,99元1年,198元/2年,续费同价阿里云2核2G3M固定带宽,不限流量,续费不涨价,也是99元/年。这款99元的服务器,很多人没有看活动规则,其实性价比非常高的,足够满足站长或者开发者的日常使用需求。续费也是99元的价格,续费不涨价,建议买完就续费一次,明年和后......
  • 服务器虚拟化安装配置及使用
    Top[TOC]安装安装依赖包yuminstallqemu-kvmqemu-imgvirt-managerlibvirtlibvirt-pythonvirt-managerlibvirt-clientvirt-installvirt-viewer-y启动服务systemctlstartlibvirtdsystemctlenablelibvirtd#KVM的管理工具栈:qemu:qemu-kvm,qemu-img和libvirt#......
  • 2023.11.22值得推荐的一款服务器空间
    ,已经体验一个月咯,非常不错的免费资源,适合大家去了解了解~!他们家的免费空间,免费服务器,非常稳定,非常靠谱,值得拥有,价格厚道~!免备案服务,域名管理等等服务,应有尽有,2023年你值得了解,他们家的免费云服务器还是独立IP的哦,非常非常好,非常NICE~!官网地址:https://www.sanfengyun.com......
  • TeraCloud国外WebDav服务器免费25GB空间 同步文档 同步数据
    TeraCloud简介:TeraCloud是日本老牌网盘,速度挺快的,此文包含设置打开TeraCloud的WebDav以及如何配置Zotero软件.速度高达200Mbps,注册即送20GB,叠加邀请码WRBUA,再送5GB,共25GB。WebDAV是一组基于超文本传输协议的技术集合,有利于用户间协同编辑和管理存储在万维网服务器文档。很......