作为前端工程师,要想在中国有一席之地,你不得不作出不可能的努力,把自己变成一个全能的人。你不仅仅要会 HTML、CSS、JavaScript、PhotoShop、Node.js、Angular.js、以及各种前端流行框架如Boostrap、Kube、UIKIT、amazeui 等等,你还得会配置服务器Linux、Windows。所以下面我们变来聊聊的服务器的配置,在本文中我们要介绍的是在 Centos 7 下安装及配置 FTP 服务。
提示FTP服务的软件有很多,在这里我就以 vsftp 为例。并且是在 centos 7 环境下安装的。
服务器端 FTP
vsftp 安装
# yum install vsftpd
输入上面的安装代码后,不久会有类似is this ok[y/N]:
直接输入Y继续就可以了。
vsftp 配置
安装完之后我们就可以进入FTP的配置文件作相关配置了。
# vi /etc/vsftpd/vsftpd.conf
定位到
anonymous_enable=YES
按下键盘i盘进入编辑模式 把YES改成NO
NO
这样就可以了。这里的anonymous_enable=NO
意思是不允许匿名登录FTP
设置完以后,按下 Esc 退出编辑模式,再按下:wq
保存退出。
接下来我们就可以启用这个 vsftp 服务了。
# systemctl start vsftpd.service
为了避免我们重启服务器后忘记开启FTP服务,我们可以让FTP服务在服务器每次重启后都自动启动。
# systemctl enable vsftpd.service
创建用户
# useradd -d /var/www/html/yunkus.com -s /sbin/nologin yunkus
设置用户密码
# passwd yunkus
回车,输入密码即可(需输入两次)
这样就完成了服务器端的FTP服务的配置
客户端 FTP
filezilla 安装
接下来我们得在客户端通过 FTP 软件来访问刚刚为 yunkus 用户创建好的指定目录了。在这里我用 filezilla 作为例子,来给大家讲解下在客户端,也就是我们常常说的本地,怎么往服务器里上传文件。下载链接:https://www.filezilla.cn/download
filezilla 配置
打开filezilla,点击左下角的【新站点】,在右边主机一栏写上你的服务器IP如1.1.1.1,端口号如:21,协议一栏默认就好,加密一栏默认就好。登录类型选择帐号,用户一栏填上刚创的用户名yunkus,密码同样道理,帐号一栏填yunkus,点击【连接】就可以了。如图:
FTP 问题整理
但当你开心的等待着光明的到来这时,却被告知无法连接。这又是哪一出呢?莫慌,我们去配置下防火墙就好了。因为防火墙没配置FTP端口号规则。
# vi /etc/sysconfig/iptables
按“i”切换到编辑模式
添加一个端口 21
-A INPUT p tcp m state --state NEW m tcp dport 21 j ACCEPT
重启防火墙服务
# systemctl restart iptables.service
查看防火墙服务状态
# systemctl status iptables.service
现在试试,是不是畅通无阻,直通yunkus站点目录呢?祝你好运。可以当你想修改目录下的一些文件,或者在这个目录下进行操作时,你会被告知,操作失败。这是因为我们还没有给yunkus 这个站点目录添加相关的权限。
# chown yunkus /home/yunkus
这行命令的作用就是更改我们刚创建的yunkus目录的所有者。
很奇怪,当我重装Centos 7 系统后,装完vsftp服务,想通过匿名用户连接FTP时,却被告知
状态: 正在连接 114.112.28.91:21…
状态: 连接建立,等待欢迎消息…
状态: 已登录
状态: 读取目录列表…
命令: PWD
响应: 257 “/”
命令: TYPE I
响应: 200 Switching to Binary mode.
命令: PASV
响应: 227 Entering Passive Mode (114,112,28,91,64,179).
命令: LIST
错误: 20 秒后无活动,连接超时
错误: 读取目录列表失败
这是为什么呢?当我把防火关掉之后,再用匿名用户访问时,却又可以。新建一个用户也是如此。只有关闭了防火墙才可以读取目录列表。
更改目录权限为755没用。但当我把ftp的目录放在home目录下时,就不会出现上面“读取目录列表失败”的提示,并且又可以访问目录了。
2.当我修改了/etc/vsftpd/vsftpd.conf 里面的代码去掉chroot_local_user=YES、chroot_list_enable=YES 和chroot_list_file=/etc/vsftpd/chroot_list 前面的 # (如下),并在/etc/vsftpd/里新建一个chroot_list文件时
chroot_local_userYESchroot_list_enableYES# (default follows)chroot_list_file=/etc/vsftpd/chroot_list
500 OOPS: vsftpd refusing to run with writable root inside chroot()
搜索了下这个问题,有这样的解释:
通过如下命令行可以解决
chmod aw homeuser
user 是你自己创建的目录,如本文例子中是yunkus,这样后你就可能通过FTP链接了,但问题又来了,链接FTP后本该自动跳到/home/yunkus,但却自动跳到根目录下。还有一个问题当执行完个 chmod a-w /home/yunkus 后发现虽然可以列出目录,但操作/home/yunkus时(上传文件,删除文件等等),提示“严重文件传输错误”。当我把、home/yunkus这个目录的权限设置回 755 ,并且开启了限制用户的根目录时
chroot_list
又提示:“500 OOPS: vsftpd: refusing to run with writable root inside chroot() 严重错误: 无法连接到服务器”。最后还是找到了解决方法 当运行下面的命令行后,
chmod R 755yunkus
再编辑下/etc/vsftpd/vsftpd.conf 这个文件
vi etc.conf
在chroot_local_user=YES 后追加下面一行代码
allow_writeable_chrootYES
保存退出,重启下vsftpd服务。现在你就可以上传,删除目录下的文件了,也就是说你可以操作这个目录了。让我意外的是在这个过程中也无意中完成了另一个功能,就是用户根目录的配置,这个问题也耗了我不少时间,一直都没得到解决,还真是应了那句话,越折腾越幸运。到这里vsftpd服务就基本搞定了。
更新于:10:44 2017/2/8
最总结
上面说了那么多,可能会让你感觉到有点乱,下面我就把上面一堆东西整理成几句话。
要想实现ftp的文件上传功能,你只需要按照下面的操作步骤就可以了。
1.创建一个目录
mkdir wwwNginxyunkuscom
2.创建一个FTP用户
useradd d com s sbinnologin yunkusftp
3.更改目录所有者及目录权限
<!--更改目录所有者-->chown yunkusftp /home/www/Nginx.yunkus.com<!--更改目录权限-->chmod -R 755 /home/www/Nginx.yunkus.com
vim conf
相关资料
视频教程:安装与配置 FTP 服务器
FileZilla:https://filezilla-project.org/