pureftpd+mysql+pureftpd_php_manager实现磁盘配额

一,这里我选用的操作系统是Red hat AS4.2,安装的时候检查是否选择以下这些软件。
   Apache, or another web server.
   A MySQL server.
   PHP, with the extensions: MYSQL,PCRE,POSIX and SESSION.
   以上软件只要在安装操作系统的时候,软件安装的默认选项就可以满足。   

   二,从http://www.pureftpd.org下载最新的pure-ftpd软件,这里的版本是1.0.21,编译安装pure-ftpd.
   #tar zxvf pure-ftpd-1.0.21.tar.gz
   #cd pure-ftpd-1.0.21
   #./configure /
--prefix=/usr/local/pureftpd /
--with-ldap /
--with-pgsql /
--with-mysql /
--with-puredb /
--with-shadow /
--with-pam /
--with-paranoidmsg /
--with-welcomemsg /
--with-uploadscript /
--with-cookie /
--with-virtualchroot /
--with-virtualhosts /
--with-virtualroot /
--with-diraliases /
--with-quotas /
--with-sysquotas /
--with-ratios /
--with-ftpwho /
--with-throttling /
--with-language=simplified-chinese

上面是比较完整的编译选项,根据需要我们可以减少一些编译选项,在这里我们不需要整合ldap以及postgresql,所以我们可以去掉这两项,只选择从
'--with-mysql /'以下选项就足够了。
'--with-language=simplified-chinese' 是只在Socket 会话显示出来的信息的语言.缺省为英语,simplified-chinese 简体中文,traditional-chinese BIG5繁体中文。
在完成后,看到如下的信息,就说明当前选项的编译配置没有问题,可以进行下一步了。
configure: +--------------------------------------------------------+
configure: | You can subscribe to the Pure-FTPd users mailing-list  |
configure: | to ask for help and to stay informed of new releases.  |
configure: | Go to http://www.pureftpd.org/ml/ now!                 |
configure: +--------------------------------------------------------+

在当前目录下执行,
#make
#make check
#make install
#cd configuration-file
#chmod u+x pure-config.pl
#cp pure-config.pl /usr/local/sbin/
#cp pure-ftpd.conf /usr/local/etc/
#mkdir -p /usr/local/pureftpd/etc
etc这个目录在pureftpd安装完的路径下是没有的,需要我们手工创建。

三,安装pureftpd_php_manager
从http://machiel.generaal.net下载最新的安装文件ftp_v2.1.tar.gz
#tar zxvf ftp_v2.1.tar.gz
#cp -r ftp /var/www/html (/var/www/html 是apache的默认主目录)
改变/var/www/html/ftp/config.php的用户权限属性,
#chown apache config.php
剩下的过程就是我们按照pureftpd_php_manager这个web程序的安装向导一步一步傻瓜完成就可以了。在此之前,我们需要先设置一下mysql的root密码,如果没有的话,有2种方法,
方法一:
格式:mysqladmin -u用户名 -p旧密码 password 新密码
方法二:

    1. 用空密码方式使用root用户登录 MySQL;

    mysql -u root

    2. 修改root用户的密码;

    mysql> update mysql.user set passWord=PASSWORD('新密码') where User='root';mysql> flush privileges;mysql> quit

四,配置pureftpd_php_manager web应用程序
启动apache web服务器,启动mysql
#apachectl start
#service mysqld start
使用浏览器访问http://<server name>/ftp/install.php,
第一步是应用环境检测看是否条件齐全,如果全部显示OK,可以进行下一步,否则就要检查以下是否软件安装正确,mysql服务是否正常启动了,php的一些扩展是否启用。
第二步,选择是全新安装还是更新,选择全新安装.
第三步,配置访问mysql的用户和密码,继续,会创建需要的数据库,用户,表等。
第四步,有个Quota support,Ratio support,这两个是磁盘配额和速度限制的选项,如果需要就选择上,保存配置。
第五步,配置一个pureftpd_php_manager web应用程序的访问密码。
第六步,创建一个pureftpd需要的pureftpd-mysql.conf配置文件,编辑/usr/local/pureftpd/etc/pure-ftpd.conf,找到MySQLConfigFile,这行,修改后面文件路径为/usr/local/pureftpd/etc/pureftpd-mysql.conf,然后在/usr/local/etc/下创建pureftpd-mysql.conf,内容从当前步骤页面里Step B)拷贝粘贴,然后保存。
为了支持pureftpd的虚拟用户功能,我们还需要编辑一下/usr/local/pureftpd/etc/pure-ftpd.conf,找到PureDB这行,修改如下
PureDB /usr/local/pureftpd/etc/pureftpd.pdb
以上就完成了对pureftpd的配置工作,下面我们创建一些用户来验证一下。

五,启动pureftpd服务
pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf

六,用户设置
我们需要为pureftpd添加一个用户和一个用户组,这个用户和用户组的ID将用于虚拟用户和pureftpd_php_manager添加用户。
#groupadd ftpusers
#useradd ftpusers -g ftpusers
这样我们便建立一个ftpusers组和一个ftpusers 用户

通过pure-pw来增加一个虚拟用户
#cd /usr/local/pureftpd/bin
#./pure-pw useradd user1 -u ftpusers -d /home/ftpusers
生成pureftpd.pdb
#./pure-pw mkdb

用户创建完,我么可以用user1来访问ftp了,主目录用的就是 /home/ftpusers。

通过pureftpd_php_manager来增加用户
在浏览器打开http://<server name>/ftp/index.php
创建用户的时候,选择UID和GID我们可以选择前面创建的ftpusers的UID和GID,然后选择Homedir,我们可以通过右边有个下拉按钮完成,点击它,出现系统目录,我们只能选择有ftpusers的主目录,因为我们创建的用户和它使用的同一个UID和GID,它们也就具有同样的权限,如果选择别的目录我们创建的用户将不能顺利登录。使用刚创建的用户登录系统,测试一下结果。

小结
使用pureftpd_php_manager和Mysql我们可以完成对用户的磁盘配额,传输速率进行控制,但是这个限制只能是对基于系统用户ID的基础上创建的虚拟用户,不能脱离系统的用户存在而实现,就是说无论是pureftpd自己支持的虚拟用户还是pureftpd_php_manager在mysql创建的用户,都是对已经存在的系统用户进行补充,用户名可以不同,但是只是对系统用户的资源的重新分配而已。例如上面创建的虚拟用户user1和mysql用户user2,都是使用的ftpusers的目录,对ftpusers的目录进行不同权限的分配和限制。

创建自启动脚本pureftpd在/etc/init.d/:

#!/bin/bash
#
#pureftpd       This shell script takes care of starting and stopping
#               the Pure-Ftp subsystem (pureftpd).
#
# description:  pureftpd server.
# processname: pureftpd
# config: /usr/local/etc/pure-ftpd.conf
# pidfile: /var/run/pure-ftpd/pure-ftpd.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network


prog="PureFtpd"

start(){
        echo -n $"Starting PureFtpd:"
        /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf >/dev/null 2>&1 &
        ret=$?
        if [ $ret -eq 0 ]; then
            sleep 2
            action $"Starting $prog: " /bin/true
        else
            action $"Starting $prog: " /bin/false
        fi
        return $ret
}

stop(){
        echo -n $"Stopping PureFtpd:"
        /bin/kill -HUP `cat "/var/run/pure-ftpd/pure-ftpd.pid"` >/dev/null 2>&1
        ret=$?
        if [ $ret -eq 0 ]; then
            sleep 2
            action $"Stopping $prog: " /bin/true
        else
            action $"Stopping $prog: " /bin/false
        fi
        return $ret
}

restart(){
    stop
    start
}

# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status pureftpd
    ;;
  restart)
    restart
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart}"
    exit 1
esac

exit $?

在/etc/rc.d/rc3.d/下创建系统启动脚本,系统在引导的时候会自动启动
ln -s S65pureftpd ../init.d/pureftpd
现在可以使用 service pureftpd start启动pureftpd的服务了。

此文我已在chinaunix上我的blog发表过。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值