您的位置:首页 > 编程语言 > PHP开发

ftp文件服务器的安装和配置

2016-03-21 15:55 676 查看
可以将多个应用上传的文件,集中在一台服务器上,不论是管理还是备份,都可一步操作

系统: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 备份/同步文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: