1. 程式人生 > >高併發檔案下載伺服器配置

高併發檔案下載伺服器配置

經詳細比較,發現可以用 pureftp 或者 nginx 來提供 ftp 或者 http 方式的下載服務,其中 pureftp 的併發支援更高;

pureftp 的編譯可以檢視其官網的幫助文件,介紹非常詳細,當然是英文的。

總之可以實現的功能包括:

檢視當前連線使用者(包括匿名使用者);

使用一個 chroot 目錄以保證安全;

限制最大併發使用者數以及每個使用者的頻寬;

另在 github 上可以看到 pureftp 一直有人在維護(又是外國人做的。。。)

安裝時使用 

make install-strip

以去除一些除錯資訊提高效能;

參考連結:
pure-ftp 效能測試:http://blog.csdn.net/chhxo/article/details/5308646
關於效能,不要隨便修改核心引數
http://kb.cnblogs.com/page/209100/


以 nginx 做檔案下載伺服器:http://i-david.iteye.com/blog/1453635
nginx 配置:http://blog.csdn.net/b_h_l/article/details/17508499

另外,我需要在一臺伺服器上根據引數打包併發送到下載伺服器(當然此後不會重複打包而是直接提供下載連結),用 shell 指令碼實現,其中傳輸檔案部分為:

	## 要先過去建立一個目錄
	expect -c "
	set timeout 30
	spawn ssh [email protected]$host \"mkdir -p /var/ftp/$CHNO\n\"
	expect {
	\"(yes/no)?\" {send \"yes\n\"; expect \"*assword:\"	{send \"$passwd\n\"}}
	\"*assword:\"	{send \"$passwd\n\"}
	}
	expect eof
	"
	expect -c "
	set timeout 60
	spawn scp $srcFile 
[email protected]
$host:$dstFile expect { \"(yes/no)?\" {send \"yes\n\"; expect \"*assword:\" {send \"$passwd\n\"}} \"*assword:\" {send \"$passwd\n\"} } expect eof "