分类: LINUX
2006-12-12 13:55:46
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 安装帮助