一、 实验环境及所用软件

二、 安装httpd、mysql、mysql-server、mysql-devel、pam-devel、php、php-gd、php-mysql

三、 启动mysql和httpd,将mysqld和httpd加入管理

四、 建立用户数据库

五、 创建管理页面

六、 源码安装pure-ftp

七、 虚拟账户和本地账户的映射

八、测试连接ftp服务器


一、 实验环境及所用软件

所有文件下载地址:http://pan.baidu.com/s/1zS3Iu

PureAdmin-0.3.tar.gz  #pureftpd的管理页面

pure-ftpd-1.0.36.tar.gz  #pureftpd的主程序

pureftpd-mysql.conf   #pureftpd与mysql的接口文件

pureftp.sql    #这是一个数据库文件,包含了其中一些建表和建库的语句

pure-ftp介绍:

     pure-ftpd大家应该都听说过,一个很好用的ftp服务端。功能很多,也比较安全,而且还可以和mysql整合,通过mysql建立和验证帐户,并实现流量限制、磁盘配额限制等功能。这就说明,可以通过自己开发的PHP程序来实现Web管理。

二、 安装httpd、mysql、mysql-server、mysql-devel、pam-devel、php、php-gd、php-mysql

首先来搭建lamp环境:

[root@localhost ~]# yum --disablerepo=*--enablerepo=c6-media install http mysql mysql-server  mysql-devel pam-devel php php-gd php-mysql -y

三、 启动mysql和httpd,将mysqld和httpd加入管理

[root@localhost ~]# service mysqld start  //启动mysql服务
[root@localhost ~]# chkconfig mysqld on //设置mysql服务开机自动启动
[root@localhost ~]# service httpd start //启动http服务
[root@localhost ~]# chkconfig httpd on  //设置httpd服务开机自动启动


四、 建立用户数据库

编辑数据库文件:

[root@localhost pureftp]# vim pureftp.sql

INSERT INTOadmin VALUES ('admin',MD5('123'));    //50行 修改管理员admin的密码为123

在其中第15行,要在下图这个位置加上一个空格符,要不然的话,数据库导入不进去。

wKioL1MAfj3B1ha3AABq4qTHSGE527.jpg

[root@localhost pureftp]# mysqladmin -u root -ppassword '123'  //给mysql-server建立一个管理员账户root密码为123
[root@localhost pureftp]# mysql -u root -p<pureftp.sql  //将此账户导入数据库
[root@localhost pureftp]# mysql -u root -p  //登陆数据库
mysql> show databases; //查看已有数据库;

wKiom1MAfs6RnhEQAABxYKvJV2o485.jpg


发现其中已经有一个ftpusers数据库;

mysql> use ftpusers;

mysql> show tables; 查看ftpusers数据库中的表;

wKiom1MAfnbxMXeAAABc9_gBseE571.jpg

发现存在有admin和users两个表,users的表中无任何数据,admin中有一个刚才添加过的用户数据。

wKioL1MAfkjQbk6fAAC5Ut6OZps167.jpg

五、 创建管理页面

[root@localhost pureftp]# tar -zxvfPureAdmin-0.3.tar.gz  -C/var/www/html/  //解压pureadmin文件到apache服务器站点主目录下
[root@localhost html]# cd /var/www/html/
[root@localhost html]# mv PureAdmin-0.3pureadmin  //将目录PureAdmin-0.3名字修改为pureadmin
[root@localhost pureadmin]# ll            //进入解压好的目录后可以发现其中有许多的php文件
编辑其中的config.php文件

1<?php
  2$cfg['dbhost']='localhost'; //mysql host
  3$cfg['dbname']='ftpusers';  //mysql dbname    从刚才打开的数据库中可以知道数据库名为ftpusers
  4$cfg['dbuser']='ftp';  //mysqluser    数据库管理员为ftp
  5$cfg['dbpasswd']='tmppasswd';     //mysql password数据库管理员密码为tmppasswd


这些可以从/root/pureftp/pureftp.sql 中可以看到:

wKioL1MAfx_AvTsAAABGP0pwm5c187.jpg

6
 7//ftp config
 8$cfg['page']=15;
 9//ftp passwdtype : TEXT/CRYPT/MD5
10$cfg['passwdtype']='MD5';   //修改密码加密算法为MD5
11//ftpdefault
12$cfg['uid']=1000;  //uid
13$cfg['gid']=1000;       //gid
14$cfg['dir']='/ftproot/'; //dir 修改总目录为/ftproot/ 这样如果新建了一个账号user1,就会自动存放到/ftproot/user1/中
15$cfg['qf']=0;   //quotafiles
16$cfg['qs']=100; //quotasize      
17$cfg['ul']=200; //ULBandwidth  修改上传带宽为200K
18$cfg['dl']=200; //DLBandwidth  修改下载带宽为200K
19$cfg['ur']=0;   //ULRatio
20$cfg['dr']=0;   //DLRatio
21$cfg['status']=1; //status
22$cfg['ip']='*';        //ipaddress
23?>


这时候如果去访问http://192.168.80.10/pureadmin会出现如下情况:

wKiom1MAf2qxZy8gAADw26eimwQ291.jpg

这是因为用户没有权限,然后去给它权限:

mysql> grant all privileges on ftpusers.* toftp@localhost identified by 'tmppasswd ; #给所有用户权限

mysql> flush privileges;  #刷新权限

再次访问会出现如下界面:

wKioL1MAf1Dx3cfaAAE0H9BwO9o723.jpg

[root@localhost pureadmin]# useradd -d /ftprootftpaccount #创建一个本地账号ftpaccount,家目录在根目录下的ftpaccount

[root@localhost pureadmin]# chmod -R o+rw/ftproot/  #因为在创建账号时要在此目录下创建新文件,所以要给它可读可写的权限

然后来创建一个新用户user1;

wKiom1MAf4LQRh66AAHDuw9QfjA073.jpg

此时数据库ftpusers下的users表中已经多出来一个用户user1

六、 源码安装pure-ftp

[root@localhost pureftp]# tar -zxvf pure-ftpd-1.0.36.tar.gz  -C /usr/local/src/
[root@localhost pureftp]# cd /usr/local/src/pure-ftpd-1.0.36/
[root@localhost pure-ftpd-1.0.36]./configure\
                     --prefix=/usr/local/pureftpd \   //指明安装目录
                       --with-mysql \     //mysql目录在系统默认路径中
                       --with-shadow \    //结合password shadow文件
                       --with-pam \       //可插拔模块
                        --with-welcomemsg   \ //支持欢迎消息
                       --with-uploadscript  \  //支持上传
                       --with-cookie   \
                       --with-virtualchroot \
                       --with-virtualhosts \
                       --with-diraliases \
                       --with-quotas \
                       --with-puredb \  //支持虚拟账户映射
                       --with-sysquotas \
                        --with-ratios\
                       --with-ftpwho \
                      --with-throttling \
                      --with-language=simplified-chinese
[root@localhost pure-ftpd-1.0.36]#make && make install
[root@localhost pure-ftpd-1.0.36]#cd /usr/local/pureftpd/
[root@localhost pureftpd]# mkdir etc  //发现目录下无etc/目录,这是放配置文件的位置,所以自己创建一个
[root@localhost pureftpd]#cd /usr/local/src/pure-ftpd-1.0.36/contrib/
[root@localhost contrib]# cp redhat.init  /etc/init.d/pureftpd  //生成控制脚本
[root@localhost contrib]# chmod a+x/etc/init.d/pureftpd   //给予可执行权限
[root@localhost contrib]# cd ../configuration-file/
[root@localhost configuration-file]# cp pure-ftpd.conf/usr/local/pureftpd/etc/    //生成配置文件

#生成配置文件

查看刚才生成的控制脚本文件,发现其中有这么一句:

prog=pure-config.pl  17行

所以需要把这个文件也拷过去

[root@localhost configuration-file]# cp pure-config.pl/usr/local/pureftpd/sbin/
[root@localhost configuration-file]# chmod a+x/usr/local/pureftpd/sbin/pure-config.pl //给予可执行权限

编辑控制脚本文件如下:

wKioL1MAgTPwNZAqAACexgDvdzE382.jpg

[root@localhost configuration-file]# service pureftpdstart //启动pureftpd
[root@localhost configuration-file]# chkconfig --addpureftpd
[root@localhost configuration-file]# chkconfigpureftpd on   //设置pureftpd开机启动

七、 虚拟账户和本地账户的映射

编辑pureftpd的配置文件:

[root@localhost pureftp]# cd /usr/local/pureftpd/etc/

[root@localhost etc]# vim pure-ftpd.conf

116MySQLConfigFile              /usr/local/pureftpd/etc/pureftpd-mysql.conf  //116行 指定接口文件目录
126  PureDB                      /usr/local/pureftpd/etc/pureftpd.pdb  //指定本地用户与虚拟用户映射的库目录
336CreateHomeDir               yes   //创建账号后自动创建家目录


[root@localhost etc]# cp/root/pureftp/pureftpd-mysql.conf ./ #因为当前目录下并无接口文件所以要自己拷贝过来

拷过来之后编辑:

32 MYSQLPassword tmppasswd   //修改ftp账号的密码tmppasswd
45 MYSQLCrypt     md5    //修改加密算法md5

[root@localhostbin]# ./pure-pw useradd user1 -u ftpaccount -g ftpaccount -d /ftproot/user1 -m

#user1为虚拟账号,ftpaccount为真是的本地账号,锁定虚拟账号家目录为/ftproot/user1

回车后随便输个密码,然后查看pureftpd.pdb文件是否生成:

[root@localhostbin]# ll ../etc/

wKiom1MAgOSiKWW2AADQLG9HDcI816.jpg

发现已经生成。


[root@localhost bin]# service pureftpd start //启动pureftpd

新建账户user2,密码123:

八、测试连接ftp服务器


wKioL1MAgM7yvm8yAAHtUGDSzNo303.jpg

不管用哪个账户登陆成功后在/ftproot/下会创建相应的家目录

如果登陆后出现如下情况,就给根目录下的/ftproot/目录可执行权限即可。

wKiom1MAgFDBWi6QAAEvg7JKqmo864.jpg这时如果直接去浏览器或者windows资源管理器中访问ftp服务器的话是访问不了的,因为不允许匿名登录,想要登录的话必须右键-->登录后输入用户名和密码才能登陆。

如果想要可以匿名登录可以这样:

[root@localhost bin]# mkdir /var/ftp   #在/var/目录下创建一个ftp目录,作为匿名账户的家目录。