前言:

在之前交换平台的开发中,FTP的各种操作算是核心功能点。

在FTP的开发中,遇到了不少坑。

如FTP需要设置被动模式,否则10M以上的包可能会上传失败。

如FTP需要设置囚牢模式,否则访问的文件夹可能会调到根目录去,不在配置的目录中,可能导致访问错误、权限不够等问题。

以下为正确的打开方法,以后linux下安装FTP,轻轻松松。

同事们找你优化FTP,也能得心应手。

1.1 FTP安装

我的本机环境是centOs7.

可以使用uname -a查看你的系统信息

uname -a
    
得到如下信息
>Linux localhost.localdomain 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Linux下我们选择vsftp

yum  install  -y  vsftpd
    
(非必要)FTP客户端安装,可以在服务器上使用客户端测试

yum  install  -y  ftp

(非必要)FTP 工具

yum  install  -y  lftp
    
重启FTP

service   vsftpd  restart
    
自启动

chkconfig  vsftpd  on

1.2 设置访问模式

编辑配置文件

vim /etc/vsftpd/vsftpd.conf

设置囚牢模式

#囚牢模式
    chroot_local_user=YSE#是否将所有用户限制在主目录,YES为启用 NO禁用.
    
> (该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
 
注意事项:

在CentOS7下配置chroot_local_user=yes ,配置完成后发现无法访问,远程主机关闭连接。

解决方案如下:

方法1:加一条配置

vim /etc/vsftpd/vsftpd.conf
    
    allow_writeable_chroot=YES
    
方法2、重新给权限

chmod 755 /home/ftp_yaoshen
 
1.3 创建FTP 账号

1、添加linux用户

useradd  -s  /sbin/nologin  ftp_yaoshen
    
2、重置密码

passwd ftp_yaoshen

设置密码yaomaomao

3、重启FTP

service vsftpd restart

4、如果无权限,可能是没有赋予执行权限,

cd /etc/init.d
    
    chmod +x vsftpd

赋权成功后再次执行。

5、用/sbin/nologin 方式添加用户,centos7下可能会登陆不上,解决方案:

usermod -s /bin/bash ftp_coperate

1.4 FTP参数调优

编辑配置文件

vi /etc/vsfptd/vsfptd.conf

在conf文件中添加如下参数:

max_clients=10240 #最大连接数,不限制改为0

max_per_ip=1000  #单IP最大连接数,不限制改为0

需要重启ftp

service vsftpd restart
 
注:有需要限制上传速率的可以设置

anon_max_rate=50000 #限制匿名用户50KB
    local_max_rate=200000 #限制本地用户200KB

1.5 FTP客户端访问调优
1.5.1 JAVA客户端
引用API org.apache.commons.net.ftp.FTPClient
 
    //设置被动模式(FTP客户端上传、下载容易失败)
    ftpClient.enterLocalPassiveMode();
     
    // 在操作FTP文件时,改变到文件当前目录
    ftpClient.changeWorkingDirectory(new String(remoteFolder.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING));

我的公众号:

linux下的FTP安装及调优的更多相关文章

  1. linux下jvm优化、tomcat调优

    系统环境:jdk1.8,apache-tomcat-8.5.35 一.jvm优化 进入 bin/catalina.sh,修改JAVA_OPTS配置: JAVA_OPTS="-server - ...

  2. Linux下部署FTP服务器

    Linux下部署FTP服务器 下载安装包 在这里介绍的是离线部署FTP,首先下载对应的rpm包,下载链接为: 下载vsftpd服务 下载FTP客户端 安装ftp服务器 关闭防火墙 service ip ...

  3. linux 下搭建 ftp

    最近为了方便目标板与PC机上LINUX之间的通讯,就在LINUX搭建了FTP,工作不难,写个总结.主要经过以下几个步骤: 1.检查是否安装了vsftpd服务器 可以用rpm -q vsftpd命令来查 ...

  4. 如何在linux下开启FTP服务

    如何在linux下开启FTP服务 1. 首先服务器要安装ftp软件,查看是否已经安装ftp软件下:   #which vsftpd   如果看到有vsftpd的目录说明服务器已经安装了ftp软件 2. ...

  5. Linux下nginx编译安装教程和编译参数详解

    这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # y ...

  6. linux下源码安装netcat

    linux下源码安装netcat http://blog.chinaunix.net/uid-20783755-id-4211230.html 1,下载netcat源码,netcat-0.7.1-13 ...

  7. ArcGIS 10.1 for Server安装教程系列—— Linux下的单机安装

    http://www.oschina.net/question/565065_81231      因为Linux具有稳定,功能强大等特性,因此常常被用来做为企业内部的服务器,我们的很多用户也是将Ar ...

  8. Linux 下编译并安装配置 Qt 4.53全过程

    最近准备做 Nokia 的 Symbian,Maemo 下触摸屏开发.考虑到程序的跨平台可移植性,最终选择使用 Qt 开发.相对来说,国内关于 Qt 相关文档并不算很多.作者将 Linux 下编译并安 ...

  9. linux下vsftpd的安装及配置使用详细步骤(推荐)

    vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点. vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux.BS ...

随机推荐

  1. elasticsearch local debug环境搭建

    最近计划看看elasticsearch的源码,首先得把local debug环境搞定. 下载源码.因为公司产线是5.6.5,所以就下载了5.6.5的代码. 源码编译.先进入到/elasticsearc ...

  2. C++中的new,operator new与placement new

    以下是C++中的new,operator new与placement new进行了详细的说明介绍,需要的朋友可以过来参考下     new operator/delete operator就是new和 ...

  3. 【转】php7对redis的扩展及redis主从搭建

    一:redis安装     1:下载并安装 cd /home/software wget http://download.redis.io/releases/redis-3.2.3.tar.gz ta ...

  4. php.ini Xdebug配置

    在此记录: xdebug.profiler_output_dir="H:\install\phpStudy\tmp\xdebug"xdebug.trace_output_dir=& ...

  5. IM即时通讯:如何跳出传统思维来设计聊天室架构?

    因为视频直播业务的大规模扩张,聊天室这种功能在最近几年又火了起来.本篇文章将会重点挑选聊天室这个典型场景,和大家分享一下网易云信在实现这个功能时是如何做架构设计的. 相关推荐阅读几十万人同时在线的直播 ...

  6. 一文秒懂CPU使用率

    目录 CPU:Cores, and Hyper-Threading  超线程(Hyper-Threading ) 多核(multi-cores) CPU使用率计算 CPU使用率测试 如何计算CPU使用 ...

  7. Mint-ui全局引入

    1.Mint-ui在全局引入之后,在组件中使用其中的js函数,如toast() this.$toast('在全局引入之后可以直接在this.$toast中使用')

  8. javascript函数详解

    //函数的两种声明方式 //在同一个<script>标签中,函数的调用和声明位置可以没有先后的顺序,因为在同一个标签中,都是等加载到内存中,然后在运行 //但是如果是在两个script标枪 ...

  9. CI控制器

    当控制器要继承自定义的控制器的时候,有特定的定义: application/core/MY_Controller <?php class MY_Controller extends CI_Con ...

  10. Java中到底是值传递还是引用传递?

    Java中到底是值传递还是引用传递? 我们先回顾一下基本概念 实参和形参 参数在编程语言中是执行程序需要的数据,这个数据一般保存在变量中.在Java中定义一个方法时,可以定义一些参数, 举个例子: p ...