设为首页 收藏本站
查看: 1559|回复: 0

[经验分享] 使用Apache FtpServer

[复制链接]

尚未签到

发表于 2017-12-24 09:44:15 | 显示全部楼层 |阅读模式
  Java大法一统天下。遇到任何问题,先查一下Java中的解决方案。
  
地球上的许多事情,在Java中都能找到完美的解决方案。
  
FtpServer是apache MINA项目的一个子项目,它实现了一个ftp服务器,与vsftpd是同类产品.
  
Filezilla是一个可视化的ftp服务器.
  Ftp客户端也有很多,如Filezilla,FlashFXP,SmartFtp等,其中只有Filezilla是免费的.
  
之前搭建ftp服务器使用的是vsftpd,现在可以把它卸掉了,它以服务的形式运行,并且它包含很多我所不知道的东西。

使用步骤


  • wget url下载压缩包
  • tar-zxvf解压ftpserver
  • 进入bin目录,更改ftpd.sh,添加JAVA_HOME变量
  • 输入指令:./ftpd.sh res/conf/ftpd-typical.xml & 其中‘&’表示后台运行.
  在ftpd-typical.xml中可以更改密码,这里的密码是MD5加密了的。用一段Python代码来实现:
import hashlib  

  
md5 = hashlib.md5()
  
md5.update(bytes("xxxxxx", encoding='utf8'))
  
ans = md5.hexdigest()
  
print(ans)
  运行之后,将所得MD5字符串粘贴到ftpd-typical.xml中即可。
  一开始ftpd-typical.xml中只有两个用户,一个是admin,一个是anonymous。
  
可以更改ftpserver.user.admin.homedirectory属性,自定义上传文件的根目录。
  
最好把ftpserver.user.anonymous.enableflag置为false,这样比较安全。
  使用FileZilla进行连接时,点击“文件-站点管理器-新建”进行如下设置:
  
DSC0000.png

这里要注意


  • ftpd.sh中有一句cd $FTPD_HOME,这就使得这个程序的当前目录变成了$FTPD_HOME.  
    如果ftpd-typical.xml路径不对,会一直报"文件未找到"异常.

  • ftpd.sh需要提供配置文件名称作为参数,它的行为取决于ftpd.xml的配置,一般情况下,使用ftpd-typical已经足够了.如果不知道ftpd.xml怎么配置,可以参考ftpd-full.xml,这个文件列出了所有的参数.
  • 默认情况下,用户名和密码都是admin,端口号为2121。  
    ftp的默认端口号为21,http默认端口号为80,tomcat默认端口号为8080,django默认端口号8000。
      
    因为1024以内的端口号是不允许随便占用的,而1024以后的却可以.所以,要想占用1024以内的端口号,就要通过sudo命令.

  • 默认情况下,user.properties中的用户密码是md5加密的,要想不加密,需要更改ftpd-typical.xml.匿名用户对于服务器上的文件是只读的,这可以在user.properties中设置权限.
  问题到这里并没有结束,当退出shell之后,ftpd也就跟着停止运行了。
  
这个问题就是:在linux shell关闭后,程序如何才能继续运行?

程序脱离shell后台运行
  (1)方案一
  
CTRL+Z暂停程序,bg [作业号]将程序后台运行.这一步相当于使用[命令名]&运行程序.
  
对于后台运行的程序,它只是不占用shell了,但它仍然是shell的子程序,shell一死,它仍然要跪.所以需要使用命令
  
disown -h %1来把这个程序"不属于"shell.
  bg是把程序放到后台,fg是把程序调到前台.
  用jobs命令查看当前作业.jobs -l查看作业列表.
  当使用disown把程序解除之后,可以通过ps -e | grep bash 命令查看这个程序,可以kill之.
  (2)方案二
  SIGHUP是linux中信号的一种,表示hang up(挂起)信号.当shell收到SIGHUP信号时,shell的儿子们也会收到这个信号.
  nohup ./haha.sh arg1 arg2 arg3  &
  默认情况下,haha.sh运行过程中的一切输出都写入到了~/nohup.out文件中,注意要让nohup在后台运行,所以加上"&".
  然后ps -ex | grep haha,就可以看见这个程序了.
  关闭当前shell,重新打开一个,仍旧ps -ex | grep haha,发现还在运行着.
  (3)方案三:使用screen/tmux
  方案二是最完美的解决方案,更改ftpd.sh,把其中最后运行Java的那句话用nohup重写一遍,把错误信息输出到控制台下,让这个程序后台执行
  eval "$JAVACMD" -classpath "$FTPD_CLASSPATH" "$MAIN_CLASS" "$CONFIG_FILE" 2>&1 "&"
  (4)方案四:使用supervisor管理进程
  
(5)方案五:将ftpd设置成服务

测试和异常
  如何测试一个ftp服务器是不是好使?方法一:打开浏览器输入ftp://ip地址:端口号;方法二:使用filezilla.
  如果filezilla报错"收到服务器的 TLS 警告: Handshake failed (40)",文件>站点管理>新建站点,加密方式选择:只是用普通ftp,这种方式不太安全.
  今天使用Filezilla上传文件总是失败,一直显示
  

错误: 20 秒后无活动,连接超时  
错误: 文件传输失败
  

  用FlashFXP却可以很正常上传文件,但FlashFXP试用期只有30天,网上搜索注册码未果,遂想学学java实现ftp文件上传,FtpServer也有一个对应的客户端库。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-427460-1-1.html 上篇帖子: apache 安装证书 下篇帖子: rongfengliang-荣锋亮
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表