Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5833388
  • 博文数量: 671
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 7310
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-14 09:56
文章分类

全部博文(671)

文章存档

2011年(1)

2010年(2)

2009年(24)

2008年(271)

2007年(319)

2006年(54)

我的朋友

分类: LINUX

2006-12-12 13:55:46

在linux下,其自带的wu-ftp早以漏洞百出而闻名,而在windows环境下使用Servu来架设ftp站点通常效率不高,负载过低,为了充分发挥服务器效能,我们选择了linux的平台,同时选用了proftp作为ftp软件,在对proftp进行配置和维护的过程中,我遇到了和多棘手和低级的问题,说来有些问题根本不能算是问题,现在ftp运转良好,写一些心得出来与大家分享,希望能对将要建站的各位有所帮助。

  Proftp说来算是一个与apache工作原理类似的ftpserver,由于要在学校内建一个影视ftp站点,我们选择了它,本来server的配置很好(Xeon1.8G 15G SCSI+2×40G IDE 1G 内存)原本打算使用win2k以及servu,然而这是实验室的机器,被规定了linux,为了发挥机器的最大效能,选择了proftp……

  当前最新的proftp版本为1.2.5rc3 出于安全和稳定的角度,我们选择了1.24的版本,安装过程省略,可以用make的方式,当然用RPM的方式更简略。

  安装的时候指定安装目录为/www 所以他的配置文件proftpd.conf在/www/proftpd/etc下,这个配置文件的路径很重要,我说的低级错误我就烦在这里,因为当时/www/proftpd目录下有一个相同的proftpd.conf,而我所有的配置都在这里配置文件中进行的,导致任何配置改动都无效,在这里列出配置文件,省去原注释行,部分必须有的语句不作注释

ServerName                      Bioera FTP"

#让服务器工作在standalone状态,提高效率

ServerType                      standalone

DefaultServer                   on

port                            21

#global中的相当于全局变量

#allow FXP connection 允许使用fxp站点调度

AllowForeignAddress on

#allow resume upload and download 允许上载/下载 续传

 #upload

 AllowStoreRestart on

  #download

 AllowRetrieveRestart on

AllowOverwrite on

Umask                           022

#限定属于ftpuser组的成员登陆时自己的根目录

DefaultRoot                     /backup/ftp ftpusers

   AllowAll

MaxInstances                    40

#Set the user and group that the server normally runs at. Proftp的一大优点,让服务器以#nobody的身份运行

User                            nobody

Group                           nobody

# 设定数据传输端口打开后30秒没有传输任何数据则断开,设为0时表示不限制

TimeoutStalled 30

#规定root不能登陆

RootLogin                       off

ServerAdmin                     studyboy@wjl.scu.edu.cn

#设定连接时不显示服务器proftp版本号,有利于安全

ServerIdent                     off

#以下为匿名用户配置

  User                          ftp

  Group                         ftp

  # We want clients to be able to login with "anonymous" as well as "ftp"

  UserAlias                     anonymous ftp

#此处最好设为off

RequireValidShell             off

# 限制总用户数以及每ip允许同时连接个数

MaxClients                    30

  MaxClientsPerHost             1

#每连接限速 (byte)此处为300k 

RateReadBPS                   312000

  AnonRequirePassword           off

#此处三项分别为对此用户隐藏文件所属user group 和权限信息

DirFakeuser                   on anonymous

DirFakeGroup                  on anonymous

DirFakeMode                   0000

  AuthAliasOnly                 on

#设定欢迎信息,欢迎信息的路径为ftp根目录,欢迎消息中的通配符和wu-ftp类似

  DisplayLogin                          welcome.msg

# Limit WRITE everywhere in the anonymous chroot

   DisplayGoAway                .away

  这个配置文件只是很简单的一个匿名配置,还没有包括虚拟主机的配置,但是用在架设一个ftp站点上,已经足够了,需要注意的是其中的允许FXP的配置,FXP:是允许在两台ftp主机之间调度文件而调度方不参与数据传输,让proftp支持这种传输不光需要以上fxp配置支持,重要的是linux的防火墙配置,由于fxp调度时需要开启另外的数据连接端口,如果linux防火墙级别过高,将导致fxp失败,关于ipchains以及iptable的配置,772和jhn都比我熟,我是从来没有配过,我解决方法是直接让防火墙对整个网卡进行信任,也就是将安全级别降低了。

 关于ftp的流量统计

  现在的日志分析软件很多,强大的也不少,但是我们只对ftp的流量进行分析,就不要杀鸡用牛刀了,这里我用的一个很小的日志分析软件webalizer 从字面上看,也许是进行web流量分析的东东,但是经过实际使用,我觉得他在ftp日志分析上,做的也很好。
  安装webalizer很简单,RPM –ivh  安装完成后他的配置文件在/etc/ webalizer.conf  对它进行配置的时候首先你要知道自己的ftp日志在何处,通常proftp的日志在/var/log/xferlog, 只需要把webalizer.conf中的LogFile后的文件路径换成ftp日志文件的具体路径就可以了,接下来是webalizer的分析输出路径:

OutputDir      /var/www/html/usage

  这个我没改,也懒得去动他了。

  改完这个之后一般不需要去改其他配置了,因为webalizer的默认配置已经做的很好了,剩下的工作就是在你的root的crontab中添加一项:

59 0-6 * * * webalizer

* 7-23 * * * webalizer

  由于ftp在凌晨之后流量变小,因此在临晨的时候每小时刷新一次就可以了,其余时间每分钟刷新,然后最后的工作就是将/var/www/html/usage/index.html这个东东添加到你的apache中了,或者直接在本机X环境下直接打开这个html也可以看到,再或者直接将/var/www/html/usage这个目录下的东西全部抓回去看吧……

 关于ftp站点的自动维护/更新

  ftp站点最重要的就是内容的及时更新,这一点让人工做简直就是折磨。搜集cernet中大量的影视资源是相当痛苦的事情,很多资源站点限制匿名数,白天根本无法链接,于是想到了linux的at和cron ,用这两个东西可以让服务器半夜去下某一站点的某些东西,而不需要人为干预,本来开始是打算用linux下自己的ftp命令以及shell脚本实现,结果发现写shell脚本更加痛苦,而且ftp命令中的get命令一次只能下载一个文件,这足足让我痛苦了2天,后来,在bbs上问了很多人,才知道wget可以下成批文件/目录……

  wget是linux自带的,参数很多,其主要功能是用来下载http内容,但是我觉得用在ftp中也是游刃有余,wget参数很多,但是用在ftp上实用的参数不是很多,一般来说非常有用的参数如下:

-c  断点续传,相信这个重要性大家都知道

-w 如果ftp无法连上,则-w 1 表示两次尝试间隔1秒

-t  如果连不上,尝试次数 -t0代表尝试无限次

-T 超时时间:指定多少时间内远程服务器没有相应就中断并开始下一次连接

-r  在本机当前目录下建立ftp的目录结构,这一点对于要下载ftp某一目录结构很复杂的时候非常有用

-l  指定递归远程ftp目录的深度,-l 10 表示下载目录深度小余或者等于10的东西

 wget –c –w 1 –t0 –T 30 –r

  表示下载这个下载这个ftp上incoming内的所有目录以及文件夹,到当前目录并建立与远程主机相同的目录结构,由于ftp会将中文换成ascii代码,因此所有中文目录将用%BA%23……等形式表示出来,具体安排如下:

  用at或者crontab写日程,/backup/ftp为ftp目录

[root@bioera studyboy]# at 15:30

warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh

at> cd /backup/ftp

at> wget -c -w 1 -t0 -T 30 -r ftp://username:passwd@166.111.146.88/incoming/*

然后ctrl -d退出,cron的写法类似。

然后linux会不断尝试连接这个ftp站点,直到任务完成后会发mail给当前用户。

除了wget之外,lftp也是一个不错的选择,lftp是一个功能强大的ftp下载软件。

在这里例举只简单例举一个它的自动下载脚本

lftp 166.111.146.88 -u anonymous,studyboy@wjl.scu.edu.cn  <<__CTL_END

bin

get /incoming/RM_TV/欢乐时光/HT-09.rm  /backup/ftp/movie/欢乐时光/ht-09.rm

bye

__CTL_END

然后将这个文件存为脚本down.sh  并在crontab中写入

1 3 2 6 * sh /home/down.sh

表示6月2号临晨3:01分执行这个命令,下载HT-09.rm到本地目录/backup/ftp/movie/欢乐时光/

 总结

  由于仅仅使用了get mget wget lftp 几种下载软件以及命令,不能说wget是最好的,但是在下载多层目录结构方面,wget做的很好。Lftp应该也可以,可能是我没有发掘,时间仓促,ftp下载部分我做的不是很多,希望这些配置经验能对大家有启发和帮助。
  proftp是一个较为成熟的ftpserver,在我配置好了它之后,又听说pureftp更好,配置简单,占用资源少,效率高,希望如果今后这个pro崩了之后,我能用到pure……

 参考资料

参考资料1:proftp user guide

参考资料2:man wget

     man lftp

     webalizer 安装帮助

阅读(1418) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~