可以将多个应用上传的文件,集中在一台服务器上,不论是管理还是备份,都可一步操作
系统:centos6.4
一、安装和配置
检查是否安装,若没有安装运行yum安装即可
rpm -q vsftpd
yum install vsftpd
创建文件目录(以后上传的文件将存放在这里)
mkdir /home/wwwroot/attachments
单独创建一个用于上传的ftp用户
adduser -d /home/wwwroot/attachments -g ftp -s /sbin/nologin attachuser
-s /sbin/nologin attachuser ,是不允许该用户登录系统
创建密码,这里我是123456
passwd attachuser
配置ftp
/etc/vsftpd/vsftpd.conf
1、不可改变目录
去掉这两行的注释
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
创建 /etc/vsftpd/chroot_list 文件,内容为用户名,一行一个
这里就是:
attachuser
2、不允许匿名登录
anonymous_enable=NO
3、链接闲置2分钟后断开
data_connection_timeout=120
4、允许root 登录
注释 /etc/vsftpd/ftpusers 和 /etc/vsftpd/user_list 文件中的 root(在前面加#)
5、打开端口
在iptables 中加入
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
重启生效 service iptables restart
更详细的配置,请参考其文章,这里仅为创建文件服务器用户的配置
二、测试
测试上传文件
$ftppath='/';//相对于ftp用户目录
$loaclfile = 'test.jpg';
$fp = fopen($loaclfile, 'r');
$conn_id = ftp_connect("192.168.1.136") or die("Could not connect");
ftp_login($conn_id,"attachuser","123456");
$target=$ftppath."test.jpg";
if(ftp_fput($conn_id, $target, $fp, FTP_BINARY)) {
echo "Successfully uploaded $target\n";
} else {
echo "There was a problem while uploading $target\n";
}
ftp_close($conn_id);
测试上传成功
这里只是简单的上传,没有涉及到目录的创建,可移步到这里看一个简单的类【ftp上传文件】,判断目录是否存在,不存在就创建后上传
三、discuz 远程附件
这里用discuz x3.2做个测试
配置如下图
在nginx中配置一个虚拟主机,并修改windows的hosts文件,将 file.test.com 指向 192.168.1.136
nginx 的配置如下(这里就不讲解 nginx的虚拟主机配置了)
server
{
listen 80;
server_name file.test.com;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/attachments;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
}
重启nginx生效
在discuz 中测试,效果如下图
文件已生成
至此,ftp文件服务器配置完成
若想备份这些文件,请移步【linux 下 rsync 备份/同步文件】