【原创】Redhat AS 4下安装Pureftpd+mysql+pure-php-manager

【原创】Redhat AS 4下安装Pureftpd+mysql+pure-php-manager

笔者由于教学的缘故,所以在近日对AS 4下PUreftpd+MYSQL+Pure_php_manager进行了多次实践。
先把整个安装过程发表出来。希望能给大家一些参考。并希望斑竹加精。
:cool: :cool: :cool:
一、下载pureftp源代码,并确定mysql已经安装好
先从[url="http://www.pureftpd.org/"]http://www.pureftpd.org/[/url]下载最新版的pureftp源代码,目前的最新版是1.0.20
假设你下载到的源代码文件为pure-ftpd-1.0.20.tar.bz2,下面解压缩文件
tar xzvf pure-ftpd-1.0.20.tar.gz
进入解压后的目录
cd pure-ftpd-1.0.20
我们现在要安装的pureftpd是使用mysql数据库认证.如果你没有安装,请到这里下载:[url="http://www.mysql.com"]http://www.mysql.com[/url]
如果你已经安装,使用下面的指令可以看到你的mysql安装路径
whereis mysql
我现在是使用redhat AS 4提供的RPM包安装的,版本为4.1.7
二、编译安装pureftpd
确定你的mysql能正常运行后,开始编译pureftpd
./configure --prefix=/usr/local/pureftpd --with-mysql=/usr --with-paranoidmsg --with-shadow --with-welcomemsg --with-uploadscript --with-quotas --with-cookie --with-virtualhosts --with-virtualroot --with-diraliases --with-sysquotas --with-ratios --with-ftpwho --with-throttling --with-language=simplified-chinese
注意--prefix=/usr/local/pureftpd 参数指定了pureftpd的安装路径
--with-mysql=/usr 参数指定了mysql的安装路径
--with-language=simplified-chinese 参数指定了pureftpd服务器返回信息使用的语言
下面开始编译源代码
make
安装pureftpd到指定路径
make install
复制配置文件到安装路径
mkdir /usr/local/pureftpd/etc
cp pureftpd-mysql.conf /usr/local/pureftpd/etc/pureftpd-mysql.conf
cd configuration-file
cp pure-ftpd.conf /usr/local/pureftpd/etc
复制pure-config.pl脚本到安装路径
cp pure-config.pl /usr/local/pureftpd/bin
增加执行权限
chmod a+x /usr/local/pureftpd/bin/pure-config.pl

三、初步测试pureftpd
下面使用默认的配置运行一下pureftpd,服务端口为2121
/usr/local/pureftpd/sbin/pure-ftpd -S 2121
现在在客户端使用浏览器打开[url="ftp://服务器ip:2121/"]ftp://服务器IP:2121[/url]
匿名登陆即可看到服务器的ftp用户的家目录下的文件
(说明:pureftpd的匿名用户是映射到系统的ftp用户的)
到这里,如果仅作为一个匿名服务器,不需要提供认证用户的服务的话,这个服务器已经可以基本运行起来了

四、建立mysql认证数据库表
在mysql服务器中建立pureftpd数据库
CREATE DATABASE pureftpd;
建立mysql用户pureftpd,登陆密码为pureftpd
grant all on pureftpd.* to pureftpd@localhost identified by 'pureftpd';
在pureftpd数据库中新建数据表users
CREATE TABLE `users` (
`id` int(32) unsigned NOT NULL auto_increment,
`User` varchar(16) NOT NULL default '',
`Password` varchar(64) NOT NULL default '',
`Uid` varchar(11) NOT NULL default '-1',
`Gid` varchar(11) NOT NULL default '-1',
`Dir` varchar(128) NOT NULL default '',
`QuotaSize` smallint(5) NOT NULL default '0',
`QuotaFiles` int(11) NOT NULL default '0',
`ULBandwidth` smallint(5) NOT NULL default '0',
`DLBandwidth` smallint(5) NOT NULL default '0',
`ULRatio` smallint(6) NOT NULL default '0',
`DLRatio` smallint(6) NOT NULL default '0',
`comment` tinytext NOT NULL,
`ipaccess` varchar(15) NOT NULL default '*',
`status` enum('0','1') NOT NULL default '0',
`create_date` datetime NOT NULL default '0000-00-00 00:00:00',
`modify_date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`,`User`),
UNIQUE KEY `User` (`User`)
) TYPE=MyISAM AUTO_INCREMENT=5 ;
五、建立用于pureftpd认证用户的系统信息
建立用于pureftpd认证用户的登陆目录
mkdir /data/ftp/Ftp_Root
建立用于pureftpd认证用户的系统组和系统用户
groupadd pureftpusers -g 2000
useradd pureftpusers -u 2000 -g pureftpusers -d /data/ftp/Ftp_Root -s /sbin/nologin
分配目录权限
chown pureftpusers /data/ftp/Ftp_Root
chgrp pureftpusers /data/ftp/Ftp_Root
设置目录只读
chmod 500 /data/ftp/Ftp_Root
如果要设置目录可写,请设置
chmod 700 /data/ftp/Ftp_Root
六、修改pureftpd的配置文件
下面修改配置文件,以适合我们的需要
vi /usr/local/pureftpd/etc/pureftpd.conf
MaxClientsNumber 100
MaxClientsPerIP 3
MaxIdleTime 5
MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf
# Disallow downloading of files owned by "ftp", ie.
# files that were uploaded but not validated by a local admin.
AntiWarez no
Bind *,21
# Maximum bandwidth for anonymous users in KB/s
AnonymousBandwidth 800
# Allow FXP transfers for authenticated users.
AllowUserFXP yes
NoChmod yes
IPV4Only yes
具体的pure-ftpd.conf的配置选项请看这里:[url="http://www.chinaunix.net/jh/15/145846.html"]http://www.chinaunix.net/jh/15/145846.html[/url] 由jeffwu翻译
vi /usr/local/pureftpd/etc/pureftpd-mysql.conf
#这里切记要更改MYSQLSocket
MYSQLSocket /var/lib/mysql/mysql.sock
MYSQLUser pureftpd
MYSQLPassword pureftpd
#密码在数据表中的存储方式,这里选择加密
MYSQLCrypt any

七、运行pureftpd
在mysql数据表中先加入一个测试用户test,密码也是test
INSERT INTO `users` VALUES (1, 'test', encrypt('test'), '2000', '2000', '/data/ftp/Ftp_Root', 0, 0, 0, 0, 0, 0, '', '*', '1', '2005-03-29 20:04:33', '2005-03-29 20:04:33');
运行pureftpd服务器
/usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
现在在客户端使用浏览器打开[url="ftp://服务器ip/"]ftp://服务器IP[/url]
使用用户test:test即可登陆,可看到/data/ftp/Ftp_Root下的内容      
八。配置pureftpd-php_manager

我下载的版本是zip的╋可以按下面命令执行解压工作。


gzip -d pureftpd_php_manager.zip.gz
unzip pureftpd_php_manager.zip
chmod ?R 755 pureftpd_php_manager
然后就会把该程序解压到pureftpd_php_manager目录了
注意╋因为从WIN上面压缩的zip档案到了UNIX系统里面╋它会把权限改为600╋所以我们必须更改一下权限才可以╋否则将不能从web上面访问的?
接下来我们配置pureftpd_php_manager╋让我们可以通过浏览器管理FTP
cd pureftpd_php_manager
cp ?R * /var/www/html/
#/var/www/html/是我的网站的根目录╋如果读者有特殊需求自行更改。

接着做下面一步╋就可以完成pureftpd-php-manager的配置了:

cd /var/www/html/
vi pureftp.config.php
进入该文件╋编辑一下╋我贴出来自己的文件配置╋给大家参考:
<?php ######################

####### SETUP ########

######################



// Your exactly located mysql config file for pureftpd

$PUREFTP_CONFIG_FILE = '/usr/local/pureftpd/etc/pureftpd-mysql.conf';



// The location where all the Forms directed to. (Mayby no change needed)

$SELF_URL = 'index.php';



// The location of your pure-ftpdwho binary (set this to chmod 4711)

$FTP_WHO = "/usr/local/pureftpd/sbin/pure-ftpwho";



#######################

# DEFAULT NEW-USER PARAMS #

#######################



$DefaultUser = ""; # Default User Logon

$DefaultPass = ""; # Default User Password

$DefaultUid = "2000"; # Default User ID ( must be a real user acct )

$DefaultGid = "2000"; # Default Group ID ( must be a real group acct )

$DefaultDir = "/data/ftp/Ftp_Root"; # Default User Dir ( use /./ at the end to chroot )

$DefaultUL = "0"; # Default Upload Throttle ( 0 disables it )

$DefaultDL = "0"; # Default Download Throttle ( 0 disables it )

$Defaultip = "*"; # Default IP restrictions ( * = any IP )

$DefaultQS = "200"; # Default Quota Size ( 0 disables it )

$Defaultcmt = "";

$DefaultQF = "0"; # Default Quota Files ( 0 disables it )^M

$PWC = "55"; # Vorsatz fuerr Crypt Password^M

?>
九、运行PHP管理
保证本机的APACHE安装成功。
service httpd start
service mysqld start
service pureftpd start
关于上面的pureftpd的启动脚本捎后会附给大家。
然后在客户端使用浏览器打开http://服务器IP
将会看到相关的管理信息。      
十、附上笔者所写的Pureftpd启动脚本。笔者自认为这个脚本写的很好。
#!/bin/bash
######################################################
#                                               hejianfeng
#                          Northwestern Polytechnical University
######################################################
# chkconfig: - 99 26
# description: Starts and stops the Pureftpd  daemons \
#        used to provide Pureftpd network services.

# Source function library.
if [ -f /etc/init.d/functions ] ; then
  . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
  . /etc/rc.d/init.d/functions
else
  exit 0
fi

# Source networking configuration.
. /etc/sysconfig/network
if [ -f /etc/sysconfig/pureftpd ]; then
   . /etc/sysconfig/pureftpd
fi
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# Check that pure-ftpd.conf exists.
[ -f /usr/local/pureftpd/etc/pure-ftpd.conf ] || exit 0

# Check that pureftpd-mysql.conf exists.
[ -f /usr/local/pureftpd/etc/pureftpd-mysql.conf ] || exit 0

name="pureftpd"
prog="pure-ftpd"
pidfile=${PIDFILE-/var/run/pureftpd.pid}
RETVAL=0
start() {
   ping="/usr/local/pureftpd/sbin/pure-ftpd -A -c50 -B -C8 -D -fftp -H -I15 -lmysql:/usr/local/pureftpd/etc/pureftpd-mysql.conf -L2000:8 -m4 -U133:022 -u100 -w -R -k99 -Z -4"
   if ([ -n "`$ping 2>/dev/null`" ]); then
      action $"Starting $prog: " /bin/false
   else
      action $"Starting $prog: " /bin/true
   fi   
   return $RETVAL
  
}
stop() {
echo -n "Stopping $name:"
killproc $prog
  RETVAL=$?
echo
[ $RETVAL = 0 ]
return $RETVAL

}

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


将脚本保存名称为pureftpd。
chmod 755 pureftpd
cp pureftpd /etc/init.d/
chkconfig --add pureftpd
chkconfig --level 235 pureftpd on
OK,现在试着用service pureftpd start来启动服务。      
帖子终于写完了。这几天为了我的教学花了很多时间在上面。希望能给大家一点帮助。如果上述有什么不清楚的地方,请读者在下面把问题贴出来。我将持续维护这个帖子。并希望斑竹能加精华。
谢谢大家。


您的支持是我努力的源泉。      
没人顶我自己顶一下。如果大家不会可以学习一下。希望斑竹也跟着顶一下。要支持原创发帖      
我继续顶一下。为什么斑竹发原创帖子可以加精.我的就不行呢?
有滥用职权嫌疑.      
看到贵兄的说法甚感。。。虽为版主,绝对没有自己给自己加精之嫌,看到有不少人问关于linux下PHP、mysql编译安装的问题,所以特整理以单贴出现,其实一个月前早在回答别人问题时发过本贴,本人才疏学浅,只是昨天突然看见那个帖子加精了,也在纳闷中。。。谁给我加了精?      
看到贵兄近来发了不少原创贴,甚为佩服贵兄的奉献精神和才识,至于加精,本人担任版主才三个星期,还不会加精。。。加精应该是所有论坛公民的民主行为,希望贵兄继续发挥自己的对linuxeden的奉献精神,值得所有兄弟们的学习。。。      
[QUOTE=mxx823]我继续顶一下。为什么斑竹发原创帖子可以加精.我的就不行呢?
有滥用职权嫌疑.[/QUOTE] 把贴子整理一下,我帮你顶。:w      
我怎么样修改发过的帖子呢?
斑竹给我说一下吧.