蓝色动力网络

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2273|回复: 1

[原创] 使用Pureftp构建全功能FTP服务器

[复制链接]
发表于 2009-4-28 11:23:57 | 显示全部楼层 |阅读模式
RHEL4.0+Pureftp+Webpureftp+Mysql+Zend Optimizer实现一个功能较全面的FTP服务系统:

实验环境:
本实验的环境采取系统是RHEL4.0以及上面所提到的相关软件;
构成简单的C/S系统,其中RHEL4.0除了成为FTP服务器之外还充当DNS服务器以及WEB服务器角色。
服务器IP地址为:192.168.1.10,FQDN为server.jerrywjl.com,客户端为WindowsXP,IP地址为192.168.1.1

以下为实验步骤:
首先配置基本的网络参数以及相关的FTP和WEB服务,配置的目的是实现三个解析:
server.jerrywjl.com、ftp.jerrywjl.com、www.jerrywjl.com
这个过程比较简单,所以具体步骤在实验中略过,只是强调一下步骤:
1.配置主机名称FQDN;
2.配置主机TCP/IP服务以及DNS服务以及启动DNS服务;
3.配置并启动Apache服务
在Apache主配置文档中更改下面两处:
在原来AddDefaultCharset UTF-8下添加一行——AddDefaultCharset GB2312;
将文档中的主机名更改为ftp.jerrywjl.com;
最后保存并启动服务进行http服务测试。

配置完成之后,基本环境算是准备完成,现在安装Mysql并且进行Mysql服务配置与测试:
首先装Mysql的软件包:
[root@server RPMS]# rpm -ihv --aid mysql-server-4.1.7-4.RHEL4.1.i386.rpm
[root@server RPMS]# rpm -ihv --aid mysqlclient10-*
[root@server RPMS]# rpm -ihv --aid mysql-devel-4.1.7-4.RHEL4.1.i386.rpm
[root@server RPMS]# rpm -ihv --aid php-mysql-4.3.9-3.1.i386.rpm

完成之后启动服务,并且设置Mysql服务器密码以及进行登录测试:
[root@server ~]# service mysqld start
Initializing MySQL database: [ OK ]
Starting MySQL: [ OK ]
[root@server ~]# chkconfig mysqld on
[root@server ~]# mysqladmin -u root password 123456
[root@server ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 4.1.7

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+-------------+
| Database |
+-------------+
| mysql |
| test |
+-------------+
2 rows in set (0.00 sec)

mysql> quit
Bye
[root@server ~]#

下面开始安装pure-ftpd服务软件,在此之前,首先获取所有的试验中需要的软件包:
这就是实验所需要的软件:
[root@server ~]# cd /usr/local/packages/
[root@server packages]# ls
pure-ftpd-1.0.20.tar.gz webpureftp0.1.tar.gz ZendOptimizer-2.5.10a-linux-glibc21-i386.tar.gz
[root@server packages]# ll
total 4656
-rwxr-xr-x 1 root root 561412 Mar 21 22:30 pure-ftpd-1.0.20.tar.gz
-rwxr-xr-x 1 root root 196917 Mar 21 22:30 webpureftp0.1.tar.gz
-rwxr-xr-x 1 root root 3973599 Mar 21 22:30 ZendOptimizer-2.5.10a-linux-glibc21-i386.tar.gz
先安装pure-ftpd:
[root@server packages]# mkdir temp
[root@server packages]# tar -zxf pure-ftpd-1.0.20.tar.gz -C temp/
[root@server packages]#
[root@server packages]# cd temp/pure-ftpd-1.0.20/
[root@server pure-ftpd-1.0.20]#
[root@server pure-ftpd-1.0.20]# cd

[root@server ~]# vi install_pureftpd ————这是pureftpd的安装脚本
内容如下:
cd /usr/local/packages/temp/pure-ftpd-1.0.20 ————解压后pureftp所在的目录
./configure \
--prefix=/usr/local/pureftpd \ ————指定安装目录
--with-mysql \ ————支持使用Mysql保存虚拟帐号
--with-virtualchroot \ ————可以使用户在自己主目录下通过添加符号链接的方式访问其他原本
不允许chroot的目录
--with-virtualhosts \ ————允许虚拟主机
--with-virtualroot \ ————支持虚拟root根目录
--with-diraliases \ ————支持目录别名
--with-uploadscript \ ————支持当一个上传完成之后,自动启用额外程序和脚本
--with-cookie \ ————支持当用户登录时显示定制信息
--with-quotas \ ————开启磁盘配额功能
--with-sysquotas \ ————允许使用操作系统磁盘配额
--with-ratios \ ————支持上传/下载比例
--with-throttling \ ————支持带宽限制
--with-largefile \ ————支持下载大于2G文件
--with-peruserlimits \ ————开启限制同一个帐号可以同时登录的个数
--with-paranoidmsg \ ————无论何种原因登录失败都显示失败原因
--with-welcomemsg \ ———— 显示欢迎信息
--with-language=simplified-chinese ————使用简体中文作为软件界面
完成之后保存退出,给予该文件可执行文件,并且按照脚本方式来执行安装操作。
[root@server ~]# chmod 755 install_pureftpd
[root@server ~]# ./install_pureftpd
上述操作执行了编译前的环境配置,如下:
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for ranlib... ranlib
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
…………………………………………………………………
configure: You have /dev/urandom - Great
configure: You have /dev/random - Great
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating pam/Makefile
config.status: creating man/Makefile
config.status: creating gui/Makefile
config.status: creating configuration-file/Makefile
config.status: creating contrib/Makefile
config.status: creating m4/Makefile
config.status: creating configuration-file/pure-ftpd.conf
config.status: creating configuration-file/pure-config.pl
config.status: creating configuration-file/pure-config.py
config.status: creating puredb/Makefile
config.status: creating puredb/src/Makefile
config.status: creating pure-ftpd.spec
config.status: creating config.h
config.status: executing depfiles commands
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: +--------------------------------------------------------------------------+

进入指定目录进行编译并且安装:
[root@server ~]# cd /usr/local/packages/temp/pure-ftpd-1.0.20/
[root@server ~]# cd /usr/local/packages/temp/pure-ftpd-1.0.20/
[root@server pure-ftpd-1.0.20]# make
[root@server pure-ftpd-1.0.20]# make install
生成配置脚本:
[root@server pure-ftpd-1.0.20]# cp configuration-file/pure-config.pl /usr/local/pureftpd/sbin/
更改配置脚本权限:
[root@server pure-ftpd-1.0.20]# chmod +x /usr/local/pureftpd/sbin/pure-config.pl
生成ftp的服务主目录:
[root@server pure-ftpd-1.0.20]# mkdir /ftproot
以下要生成pure-ftp服务管理脚本:
[root@server pure-ftpd-1.0.20]# cd contrib/
[root@server contrib]# vi redhat.init
将其中下面的语句:
fullpath=/usr/local/sbin/$prog
pureftpwho=/usr/local/sbin/pure-ftpwho
更改为:
fullpath=/usr/local/pureftpd/sbin/$prog
pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho
将该文件复制到/etc/init.d目录中并且重命名为pure-ftpd
[root@server contrib]# cp redhat.init /etc/init.d/pure-ftpd
并且更改该文件为可执行:
[root@server contrib]# chmod +x /etc/init.d/pure-ftpd
将该服务添加到启动服务列表并配置该服务随系统启动而启动:
[root@server contrib]# chkconfig --add pure-ftpd
[root@server contrib]# chkconfig pure-ftpd on
由于pure-ftpd将FTP匿名用户映射到名为ftp的系统帐号,所以ftp系统帐号的主目录就是FTP匿名用户的主目录。如果需要FTP服务器允许匿名登录,就需要建立一个名为ftp的系统帐号,而且该帐号的主目录必须存在。默认情况下pure-ftpd安装的时候已经建立了ftp帐号,但是该帐号默认的主目录/var/ftp不存在,所以要建立/var/ftp,但是如果系统中已经安装vsftp服务的话,该目录会自动建立。因为如果希望FTP匿名用户能够上传文件,就保证ftp系统帐号对主目录有写入权限:
[root@server contrib]# chown ftp.ftp /var/ftp

现在开始安装对pure-ftpd进行管理的基于web的管理工具webpureftp,但是因为该软件的PHP源代码使用了ZendEncode进行了加密,所以需要安装Zend Oprimizer才可以执行webpureftp目录中加密的PHP程序。否则会出现乱码。因此现在安装ZendEncode:
[root@server ~]# cd /usr/local/packages/
[root@server packages]# ls
pure-ftpd-1.0.20.tar.gz webpureftp0.1.tar.gz
temp ZendOptimizer-2.5.10a-linux-glibc21-i386.tar.gz
[root@server packages]# tar -zxf ZendOptimizer-2.5.10a-linux-glibc21-i386.tar.gz -C temp/
[root@server packages]# cd temp/ZendOptimizer-2.5.10a-linux-glibc21-i386/
[root@server ZendOptimizer-2.5.10a-linux-glibc21-i386]# ./install.sh
通过上述操作,会有一个安装向导,建议接受全部的默认条件:
1.是否接受协议————是
2.Zend安装目录是否/usr/local/Zend————是
3.确认php.ini配置文件是否在/etc/目录中————是
4.是否使用Apache作为默认的WEB服务器————是
5.Apache默认的控制路径是否是/usr/sbin/apachectl目录————是
6.是否重启Apache服务————是

注意这里的提示:
The following configuration changes have been made:
x - The php.ini file has been relocated from /etc to /usr/local/Zend/etc x
x - A symbolic link for the php.ini file has been created in /etc. x
x - The original php.ini was backed up to /etc/php.ini-zend_optimizer.bak x
在上述的完成过程中,可能会碰到Zend Optimizer与SELinux的配合问题。
主要因为Zend在安装时需要修改/etc/php.ini文件的内容,并将该文件替换为一个符号链接文件,指向/usr/local/Zend/etc/php.ini,所以造成Apache服务器在每次启动都会违反SELinux的规则出错。
解决的方法有两种:

第一种:在整个配置之前关闭SELinux:
[root@server ~]# vi /etc/sysconfig/selinux
针对下面的内容:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
将SELINUX=enforcing更改为SELINUX=disabled并且重新启动系统

第二种:在没有更改该配置文件情况下使用下面命令设置文件相关安全属性:
[root@server ~]# rm -f /etc/php.ini
[root@server ~]# cp /usr/local/Zend/etc/php.ini /etc/
[root@server ~]# chcon -u system_u /etc/php.ini
[root@server ~]# chcon -t shlib_t /usr/local/Zend/lib/ZendExtensionManager.so
[root@server ~]# chcon -t shlib_t /usr/local/Zend/lib/Optimizer-2.5.10/php-4.3.x/ZendOptimizer.so

下面开始生成Mysql数据库,通过webpureftp软件的安装可以实现管理pure-ftpd和mysql结构中的php帐户,方法如下:
[root@server ~]# cd /usr/local/packages/
[root@server packages]# tar -zxf webpureftp0.1.tar.gz -C temp/

下面开始对主配置文件进行修改:
[root@server ~]# cd /usr/local/packages/
[root@server packages]# tar -zxf webpureftp0.1.tar.gz -C temp/
[root@server packages]# cd temp/webpureftp0.1/
[root@server webpureftp0.1]#
[root@server webpureftp0.1]# vi SQL/pureftp_0.1.sql
找到Drop TABLE IF EXISTS `depart_info`;这句,在前面加上:
Create DATABASE pureftp;
USE pureftp;


那么整段成为:
Create DATABASE pureftp;
USE pureftp;
Drop TABLE IF EXISTS `depart_info`;
Create TABLE `depart_info` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=21 ;
保存退出。
最后执行命令生成mysql数据库:

[root@server webpureftp0.1]# mysql -u root -p < SQL/pureftp_0.1.sql
Enter password:
[root@server webpureftp0.1]#

测试:
[root@server webpureftp0.1]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 4.1.7

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+-------------+
| Database |
+-------------+
| mysql |
| pureftp |
| test |
+-------------+
3 rows in set (0.01 sec)

mysql> use pureftp;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+------------------------+
| Tables_in_pureftp |
+------------------------+
| depart_info |
| ftp_users |
| ftp_users_info |
| user_info |
+------------------------+
4 rows in set (0.00 sec)

mysql> quit
Bye
[root@server webpureftp0.1]#



现在修改pure-ftpd的主配置文件
[root@server webpureftp0.1]# cd docs/
[root@server docs]# vi pureftpd-mysql.conf,更改下列语句:
将:
MYSQLUser network 更改为: MYSQLUser root
将:
MYSQLPassword 123456 更改为: MYSQLPassword 123456
(由于我这里就是使用123456,所以不改)

将:
MYSQLDatabase network 更改为: MYSQLDatabase pureftp

完成之后复制下面两个文件到/etc/目录下:
[root@server docs]# cp pure-ftpd.conf /etc
[root@server docs]# cp pureftpd-mysql.conf /etc

最后一步,开始配置webpureftp,进入webpureftp解压目录,也就是刚才的webpureftp0.1编辑config子目录中的config.inc.php文件,将其中的路径修改是实际路径,将口令也修改为实际口令:
[root@server docs]# pwd
/usr/local/packages/temp/webpureftp0.1/docs
[root@server docs]# cd ..
[root@server webpureftp0.1]# vi config/config.inc.php
下面是原来未修改的内容:
<?php
$orig_title = "Web PureFTP¹ÜÃ
发表于 2009-6-3 00:00:16 | 显示全部楼层
ssssssssssssdddddddddddddddddd
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

蓝色动力网络微信平台
网站管理,业务合作联系邮箱: admin#lansedongli.com    QQ:13412492 限网站业务问题.
网站帐号、密码、密保找回请使用注册邮箱,发送邮件至 password#lansedongli.com ,否则不予受理.
免责声明:本论坛所有文字和图片仅代表其个人观点.
本站某些资料或文章来自于互联网,不代表本站观点,如果侵犯了您的权益,请来信告知,我们会在三天内删除.
为了给大家一个更好的交流场所,请勿在本论坛发表与中华人民共和国法律相抵触的言论,请合作,谢谢!
Copyright © 2007-2019 Corporation Powered by网吧系统 版权所有    转载请注明!
浙ICP备11043737号 程序:Discuz! x3.4

湘公网安备 43018102000145号

手机版|Archiver|蓝色动力网络   

快速回复 返回顶部 返回列表