我说这是我人生当中第一次在Linux下手动搭建FTP你们信么2333。以前一直都是用SFTP,总感觉FTP这种东西对我而言没什么卵用,直到我发现Chevereto的外部存储以后。。。
Chevereto的外部存储支持AmazonS3、OpenStack、GoogleCloud、SFTP、FTP。很明显对于国人而言前三者都不适合,那就只有SFTP和FTP可选了。让我们冷静下来仔细想想,SFTP根本不可能适合做这种外部存储,虽然SFTP更安全,但是每一个用户上传图片都需要耗费那么多时间进行加密认证,显然是不妥的。所以只能采用FTP了。
在众多FTP软件中,我选择使用Pure-FTPd,所以先来把它安装一下,这里我采用编译安装最新版。
在开始之前,我们先创建一个用户和用户组。(非必须,只是我觉得让FTP的虚拟用户跑在root下不安全)
groupadd pure-ftpd useradd pure-ftpd -g pure-ftpd -s /sbin/nologin
安装需要用到的组件和编译所需依赖:
yum -y install wget gcc gcc-c++ openssl-devel
下载解压然后编译并完成安装:
wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.47.tar.gz tar -xzvf pure-ftpd-1.0.47.tar.gz cd pure-ftpd-1.0.47 ./configure --with-everything --with-language=simplified-chinese make make install
创建FTP用户目录:
mkdir -p /pureftpd/user/lala
修改目录的所有者为我们刚才创建的pure-ftpd用户:
chown -R pure-ftpd:pure-ftpd /pureftpd
创建一个用户名为lala的FTP账号:
pure-pw useradd lala -u pure-ftpd -d /pureftpd/user/lala
把账号信息加入到pureftpd数据库中,这一步很关键,不要漏掉:
pure-pw mkdb
编辑pure-ftpd.conf配置文件,或者用SFTP把这个文件下载到本地电脑编辑:
vi /etc/pure-ftpd.conf
修改NoAnonymous的值为yes,禁止匿名用户登录:
由于我们使用pure-ftpd自带的PureDB数据库文件,所以去掉PureDB前面的#号:
在这个配置文件内还有一些其他设置可根据自己的需要来更改,这里就不多说明了。
关闭CentOS7的防火墙:
systemctl stop firewalld.service systemctl disable firewalld.service
这里还要关闭坑爹的SELinux(如果你的机器开启了的话)。使用如下命令检查:
/usr/sbin/sestatus -v
如图所示,我这台机器是开启了的:
编辑:
vi /etc/selinux/config
把如图中的SELINUX=后面的值改成disabled:
改完后要重启机器,切记!
reboot
开机后,现在可以尝试运行pure-ftpd了:
/usr/local/sbin/pure-ftpd /etc/pure-ftpd.conf
设置开机启动:
echo "/usr/local/sbin/pure-ftpd /etc/pure-ftpd.conf" >> /etc/rc.d/rc.local && chmod +x /etc/rc.d/rc.local
如果需要停止运行可以用下面的命令:
pkill -x pure-ftpd
这里也记录一下一些常用的pure-ftpd命令:
修改FTP用户密码
pure-pw passwd lala
删除FTP用户
pure-pw userdel lala
查看所有用户
pure-pw list
查看用户详细信息
pure-pw show lala
显示登录用户信息
pure-pw show
接下来我们还需要给搭建FTP的服务器安装一个Nginx。
新建一个repo:
vi /etc/yum.repos.d/nginx.repo
写入:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1
用yum安装nginx:
yum -y install nginx
新建一个站点conf:
vi /etc/nginx/conf.d/pureftpd.conf
写入:
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /pureftpd/user/lala; index index.html index.htm; } }
注:server_name填写你的域名,root后面的值改成你的FTP路径。
启动nginx:
systemctl start nginx
接下来就是Chevereto这边的设置了。
在网站后台点击-设置-外部存储-添加存储:
按如图填写相应信息:
需要注意的:
1、路径这里直接填/号。
2、URL填写你Nginx上绑定的域名,我这里是写教程就直接用的IP。
稍等一会儿Chevereto验证成功后,就可以点击如下图箭头所指的“活动”按钮启动这个存储了:
试试看能不能正常使用:
可以看到图片能正常上传并显示,并且图片现在已经存储到这台FTP服务器了,而不再保存在我们的主站服务器。
通过FlashFXP登录我们的FTP也可以看到Chevereto是正常工作的,Chevereto按照年月日组织文件存储路径,并且把上传的图片分割成三个不同大小的尺寸:
至此,整个配置就大功告成了。
写在最后:
首先配置Chevereto的外部存储最大的好处就是可以减轻主站服务器带宽的压力,并且如果你的图床发展的特别壮大了,硬盘容量也将是一个瓶颈,通过配置外部存储,可以完美解决这类问题。
配置的时候遇到一些坑,这里记录一下:
1、关SELinux,关SELinux,关SELinux,重要的事情说三遍!
2、第一次配置的时候不知道为什么pure-ftpd死活就是登录不上,一直报530错误。没办法只能把系统重装了重新来一遍,然后就好了。玄学的是步骤完全一样为什么第一次就是不行,我也是很醉的。。。
博主你好,我的FTP直接是用的宝塔现成的,软件管理里面安装的,然后相册用外部存储的话,提示下面的东西。
無法增加儲存空間 Error: Can’t change dir in CHV\Ftp::chdir
用SFTP没事直接就ok了,但是确实速度太慢了!请问下这个怎么搞?谢谢!
Chevereto后台“添加存储”里面的FTP“路径”直接填“/”。