学习视频:Linux系统安装配置FTP
定时任务完成后,希望把生成的附件上传到其他服务器的 FTP 上面,需要提前准备已配置的 FTP 服务器。
配置开启集群 若选择文件服务器共享,协议选择 FTP 时,需要提前准备已配置的 FTP 服务器。
VSFTP 是一个基于 GPL 发布的类 Unix 系统上使用的 FTP 服务器软件,它的全称是 Very Secure FTP,从名称上可以看出安全性是编写 VSFTP 的初衷,除了这与生俱来的安全特性以外,高速与高稳定性也是 VSFTP 的两个重要特点。
注:安装 vsftpd 需要使用最高用户(root),否则不能进行。
rpm -qa |grep vsftpd # 检查是否已安装 ftpyum install vsftpd -y # 使用 yum 安装 ftp
下载安装包:http://rpmfind.net/linux/rpm2html/search.php?query=vsftpd (根据系统选择对应 rpm 包)
例如:vsftpd-2.2.2-24.el6.x86_64.rpm:vsftpd-2.2.2-24.el6.x86_64.rpm
vsftpd-3.0.2-22.el7.x86_64.rpm :vsftpd-3.0.2-22.el7.x86_64.rpm
rpm -ivh vsftpd-2.2.2-24.el6.x86_64.rpm # 安装 vsftpd 请按照实际 rpm 包的名称写命令
编辑 vsftpd.conf 配置文件,将 anonymous_enable 值改为 NO ,禁止匿名登录。
vi /etc/vsftpd/vsftpd.conf # 编辑vsftpd.conf配置文件anonymous_enable=NO # 禁止匿名登录
详情见:vsftpd.conf 配置手册
1)新增 FTP 用户
useradd ftpuser # 新建名为 ftpuser 的用户,并自动建立/home/ftpuser 目录passwd ftpuser # 设置该用户的密码
然后连续两次输入您要给该用户设置的密码即可,使用 ftpuser 的账户密码可以登录并使用 FTP 服务。
注意:平台配置集群的时候使用的用户名和密码是上文新增的用户名和密码,在该文档中我们默认用户名是 ftpuser,vsftpd 会禁止一些用户登录使用 FTP(默认为 root、bin、daemon、adm、lp、sync、shutdown、halt、mail、news、uucp、operator、games、nobody),如果想使用这些用户名登录,可以去/etc/vsftpd/ftpusers还有/etc/vsftpd/user_list中使用“#”屏蔽掉该用户名。
2)启动 FTP
service vsftpd start # 启动vsftpd服务
1)拷贝正式环境 Web 工程里的 WEB-INF 文件夹,并粘贴到/home/ftpuser目录下,在平台开启文件服务器时,FTP 路径填写 /home/ftpuser/WEB-INF
2)赋予权限
chmod -R 777 /home/ftpuser #给 ftpuser 文件夹赋予写入权限
注:如果考虑安全性,不能给 777 权限,可以只给 755 权限,命令是 chmod -R 755 /home/ftpuser,但是拷贝 WEB-INF 文件时务必使用 FTP 用户,否则会因为文件归属问题导致不能写入。
配置 chroot_list 禁止或者允许用户访问上层目录,配置方法请参见:vsftpd:禁止或允许用户访问上层目录
前提是 FTP 所在服务器防火墙已开放 20、21 端口,此处提供两种方式:
1)用 FTP 工具连接,比如 Xftp 之类的进行登录 FTP 用户。
2)在能访问该 IP 的电脑上直接打开一个文件夹,地址里输入ftp://ip
用上面两种方式连接 FTP 后,新建和删除文件夹确认有读写权限,则表明 FTP 部署成功
service vsftpd status # 查看 ftp 的状态service vsftpd start # 启动服务service vsftpd stop # 停止服务service vsftpd restart # 重启 ftpchkconfig vsftpd on # 设为开机启动
更多运维知识参见:集群运维手册-Linux 版
注:登录 ftp 操作文件报错“550 create directory operation failed”或者无法登录以及开启777权限以后仍然没有读写权限考虑以下操作。
这是 SELinux(Security-Enhanced Linux,是美国国家安全局对于强制访问控制的实现,是 Linux 上最杰出的新安全子系统)安装机制问题,需要关闭 SELinux。
1)永久关闭 SELinux 的方式
vi /etc/selinux/config # 编辑 SELinux 的 config 文件SELINUX=enforcing --> SELINUX=disabled # 永久关闭 SELinux 重启系统生效
2)临时关闭 SELinux 的方式
setenforce 0 # 执行命令,仅临时关闭,重启后又会恢复原状
3)不关闭 SELinux
getsebool -a | grep ftpd # 查询的结果中,只有 ftp_home_dir 和 allow_ftpd_full_access 必须为 on 才能使 vsftpd 具有访问 ftp 根目录,以及文件传输等权限setsebool -P ftp_home_dir 1 # 执行即可setsebool -P allow_ftpd_full_access 1 # 执行即可
注:更多 SELinux 相关的知识请参见: SELinux 入门