日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

利用BT构建简单的CDN网络

發(fā)布時(shí)間:2024/1/1 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用BT构建简单的CDN网络 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

種子下載源需部署到公網(wǎng)服務(wù)器上,部署在內(nèi)網(wǎng)服務(wù)器上沒(méi)見成功下載過(guò)。

一、 服務(wù)器上部署tracker服務(wù) tracker服務(wù)器建議采用OpenTracker(據(jù)說(shuō)可以在生產(chǎn)環(huán)境下使用)。OpenTracker/BitTorrent3.4.2/BitTorrent5.0.9/BitTornado任選其一,建議OpenTracker

系統(tǒng)環(huán)境:

python2.7

(一) 關(guān)閉防火墻或設(shè)置允許 systemctl status firewalld systemctl stop firewalld

(二) OpenTracker yum install epel-release yum -y groupinstall “Development Tools” yum -y install openssl-devel zlib-devel

先編譯libowfat: cd libowfat make

然后再編譯opentracker: cd … cd opentracker make

如果編譯中出現(xiàn)__builtin_bswap16相關(guān)的錯(cuò)誤,則 vi libowfat/uint16.h 加入 static inline unsigned short __builtin_bswap16(unsigned short a) { return (a<<8)|(a>>8); }

完成之后,我們將二進(jìn)制文件移動(dòng)到/usr/bin: cp opentracker /usr/bin

/usr/bin/opentracker -p 1337 -P 1337

制作種子的時(shí)候,我們添加Tracker服務(wù)器時(shí),可以這么寫: http://你的服務(wù)器公網(wǎng)IP:1337/announce

或者: udp://你的服務(wù)器公網(wǎng)IP:1337/announce

當(dāng)然也可以同時(shí)添加http和udp,這個(gè)不受影響。注意:udp的兼容性不好,舊的bt客戶端不支持,如BitTorrent3.4.2

OpenTracker還有一個(gè)自帶的統(tǒng)計(jì)功能: http://你的服務(wù)器公網(wǎng)IP:1337/stats

更詳細(xì)的統(tǒng)計(jì)信息訪問(wèn): http://你的服務(wù)器公網(wǎng)IP:1337/statsmode=everything

(三) BitTorrent3.4.2 參考:https://blog.csdn.net/deccmtd/article/details/5432495

1、安裝bittorrent BitTorrentg下載 tar zxvf BitTorrent-3.4.2.tar.gz cd BitTorrent-3.4.2 python setup.py install

2、啟動(dòng)Tracker服務(wù) ./bttrack.py –port 6969 –dfile dstate >>/var/log/bttrack.log #表示打開6969并記錄log

3、制作BT發(fā)布文件

(四) BitTorrent5.0.9

yum install python-devel python-crypto pyOpenSSL zope

安裝python-pip https://pypi.org/project/pip/#files

升級(jí)pyopenssl

pip install pyopenssl –user –upgrade 安裝python-setuptools yum install python-setuptools

https://pypi.org/project/setuptools/

python setup.py install 安裝python-twisted yum install python-twisted (在centos6.5上可以,在centos7上不行)

https://pypi.org/project/Twisted/#files

安裝BitTorrent5.0.9 python setup.py install

啟動(dòng)tracker服務(wù) /usr/bin/bittorrent-tracker –port 6969 –dfile dstate

(五) 服務(wù)器上部署安裝BitTornado http://www.bittornado.com/官網(wǎng),2004年3月發(fā)布初始版本,2006年發(fā)布0.3.18后未見更新。github上有別的持續(xù)更新,但測(cè)試中發(fā)現(xiàn)有問(wèn)題 https://github.com/effigies/BitTornado

安裝python3 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
tar xvf Python-3.6.2.tar.xz cd Python-3.6.2 ./configure –prefix=/usr/local/python3 make && make install

ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3 二、 制作種子文件.torrent 簡(jiǎn)單通過(guò)bitComet或uTorrent制作種子后,將種子提供給他人,并不能正常下載。通過(guò)在服務(wù)器上啟動(dòng)種子源下載,才見有下載進(jìn)度。制作種子可以使用BitComet、btmakemetafile.py等均可。

(一) BitTorrent3.4.2 ./btmakemetafile.py /home/media/chaoshikongtongju.mp4 http://www.yourdomain.com:1337/announce #btmakemetafile.py 目錄或者文件 track服務(wù)器地址和端口 (二) BitTorrent-5.0.9 某個(gè)文件: /usr/bin/maketorrent-console http://192.168.0.7:1337/announce /home/media/sample.mp4 某個(gè)目錄: /usr/bin/maketorrent-console http://192.168.0.7:1337/announce /home/media/sample

三、 在服務(wù)器上啟動(dòng)種子下載源

(一) BitTorrent3.4.2

啟動(dòng)原始下載服務(wù)(seed) nohup ./btdownloadheadless.py –max_allow_in 20 –max_upload_rate 500 –minport 6888 –maxport 6888 /home/media/chaoshikongtongju.mp4.torrent –saveas /home/media/chaoshikongtongju.mp4 >/dev/null &

–saveas 后面是下載后保存的文件名(同源文件名路徑,這樣這個(gè)任務(wù)即等同完成了下載后的提供源數(shù)據(jù)的下載任務(wù))

/data/www/client/myfile.exe.torrent 發(fā)布文件的位置 /data/www/client/myfile.exe 實(shí)際位置 –maxallow 20 指這個(gè)種子最多可以接受20個(gè)連接 –maxupload_rate 500 指這個(gè)種子最大的可以接受下載的帶寬 500 KB(byte)/s,這樣可以控制下載帶寬。 –minport 6888 –maxport 6888 最大最小監(jiān)聽端口,這樣寫就是說(shuō)種子只監(jiān)聽6888端口,這樣方便在防火墻上開端口。

作為BT服務(wù)器.目標(biāo)是共享更多的文件給用戶下載,如果對(duì)于每個(gè)“種子”都要啟動(dòng)一個(gè)Downloader,不但非常煩瑣,可能還會(huì)大大影響服務(wù)器效率。

為了解決這個(gè)問(wèn)題,BitTorrent提供了另外兩個(gè)Downloader程序btlaunchmany.py和btlaunchmanycurses.py。這兩個(gè)程序會(huì)定時(shí)檢查指定目錄,對(duì)其中的所有“種子”啟動(dòng)Downloader,并根據(jù)目錄內(nèi)容增加和刪除Downloader。 btlaunchmanycurses.py是一個(gè)圖形控制臺(tái)界面,而btlaunchmany.py則更適合于后臺(tái)運(yùn)行程序。 btlaunchmanycurses.py需要圖形界面.還需要給下載頻道負(fù)責(zé)人服務(wù)器的權(quán)限.所以我們使用btlaunchmany.py后臺(tái)運(yùn)行程序. 用法如下:

#/usr/bin/btlaunchmany.py –data_dir /源目錄 –torrent_dir /種子目錄
啟動(dòng)后.btlaunchmany.py使用6881端口.默認(rèn)每隔120秒到種子目錄探測(cè)一次.

(二) BitTorrent-5.0.9 ./bittorrent-console.py /home/media/chaoshikongtongju.mp4.torrent –save_as /home/media/chaoshikongtongju.mp4

/usr/bin/launchmany-console /home/media

四、 在http上部署torrent文件下載源 需要配置Web服務(wù)器,將.torrent文件和application/x-bittorrent相關(guān)聯(lián)。編輯Apache的配置文件httpd.conf,添加如下內(nèi)容:

AddType application/x-bittorrent .torrent

然后重新啟動(dòng)Web服務(wù)器,并將剛剛制作的“種子”放置在Web服務(wù)器的提供下載的目錄中,讓用戶可以訪問(wèn)

五、 linux上部署bt客戶端

yum install python-devel cmake

cd boost. ./bootstrap.sh ./b2 ./b2 install

cd /tmp/libtorrent-rasterbar-1.1.10 ./configure make && make install

cd examples cmake . make

./client_test 文件.torrent

即可看到下載過(guò)程。

六、 Windows上的bt客戶端

BitComet會(huì)出現(xiàn)一直無(wú)法下載的問(wèn)題,估計(jì)因?yàn)楸还俜皆嵅『?#xff0c;禁止其連接有關(guān)。 使用μTorrent正常。

七、 利用bt構(gòu)建點(diǎn)播節(jié)目分發(fā)系統(tǒng) 節(jié)目分發(fā)服務(wù)器采用centos、ubuntu等大規(guī)模應(yīng)用安裝的系統(tǒng),方便部署。 基于內(nèi)網(wǎng)的服務(wù)器采用iso封裝的形式,安裝系統(tǒng)更簡(jiǎn)便。

(一) 節(jié)目分發(fā)服務(wù) MovieSource 1. 上傳方式/節(jié)目入庫(kù) 一部電影一個(gè)目錄,目錄下包含海報(bào)圖片,一個(gè)或多個(gè)電影文件(連續(xù)劇); 電影文件上傳采用SFTP方式、上傳完畢后,通過(guò)http觸發(fā)一鍵入庫(kù),入庫(kù)同時(shí)生成torrent文件。入庫(kù)的電影默認(rèn)以主文件名做為電影名,(電影名、入庫(kù)時(shí)間、電影文件名、torrent)其他信息為空,需完善后才能上架。初期可通過(guò)phpMyAdmin來(lái)操作。 2. Bt Server 使用launchmany-console.py對(duì)某一目錄下所有torrent文件進(jìn)行監(jiān)視,提供bt下載更新服務(wù)。

數(shù)據(jù)庫(kù) 電影信息表 包含電影名、評(píng)分、上映日期、類型、導(dǎo)演、主演、片長(zhǎng)、國(guó)家地區(qū)、簡(jiǎn)介、文件名、入庫(kù)時(shí)間、torrent文件下載地址、FTP下載地址、上架狀態(tài)、海報(bào)圖等信息; 客戶端點(diǎn)播次數(shù)和付費(fèi)次數(shù)應(yīng)能更新進(jìn)電影信息數(shù)據(jù)庫(kù),以用于優(yōu)化分發(fā); vod服務(wù)器信息表 數(shù)字id,機(jī)器碼,是否分發(fā),
Http Server 提供電影信息查詢接口,用于更新電影

為避免電影資源被非法盜用,此查詢接口需要加認(rèn)證,避免非法用戶和同一帳號(hào)同時(shí)登陸,應(yīng)保證一個(gè)帳號(hào)只能在一臺(tái)機(jī)器上使用。 電影優(yōu)先更新熱播電影Top100、付費(fèi)率高電影、新入庫(kù)電影,以加快分發(fā)效率;

(二) 管理服務(wù)器 VodManager 對(duì)所有內(nèi)網(wǎng)點(diǎn)播服務(wù)器進(jìn)行管理 設(shè)置點(diǎn)播服務(wù)器在云朵上對(duì)應(yīng)的組織號(hào) 接收訂單回調(diào)

(三) 內(nèi)網(wǎng)點(diǎn)播服務(wù)器 VodServer MovieUpdate 連接MovieSource,執(zhí)行Login,認(rèn)證通過(guò)則獲取到待更新的節(jié)目列表,將節(jié)目數(shù)據(jù)保存到本地?cái)?shù)據(jù)庫(kù)中。

MovieDownload 讀取本地?cái)?shù)據(jù)庫(kù)中的待更新節(jié)目數(shù)據(jù),啟動(dòng)下載任務(wù),將電影下載到本地硬盤中,下載完成后,將相應(yīng)的節(jié)目記錄上架。 電影更新程序,默認(rèn)設(shè)置2臺(tái)“節(jié)目分發(fā)服務(wù)器”地址 可指定將電影更新到哪個(gè)目錄下。

HTTP服務(wù):給點(diǎn)播終端apk提供電影點(diǎn)播服務(wù)、及節(jié)目清單查詢接口。 供apk查詢電影節(jié)目列表的數(shù)據(jù)接口 最簡(jiǎn)的登陸管理后臺(tái),可控制下架哪個(gè)節(jié)目;(可選)

BT分發(fā)服務(wù) 是否打開種子下載源服務(wù),在云端可開關(guān)。 使用launchmany-console.py對(duì)某一目錄下所有torrent文件進(jìn)行監(jiān)視,提供bt下載更新服務(wù)。

FRP服務(wù) 連接管理服務(wù)器VodManager

八、 為BT增加認(rèn)證 由于bt客戶端在下載torrent文件后,會(huì)連接tracker服務(wù)器獲取相關(guān)信息,因此可通過(guò)修改libtorrent客戶端和opentracker代碼,在http的url中加入相關(guān)認(rèn)證

對(duì)libtorrent客戶端的修改主要在src\http_tracker_connection.cpp中, 對(duì)opentracker的修改應(yīng)該在ot_http.c中http_handle_announce方法

對(duì)BitTorrent-5.0.9的種子源服務(wù)(也是opentracker的客戶端之一)的BitTorrent\Rerequester.py的def _announce方法進(jìn)行修改。

總結(jié)

以上是生活随笔為你收集整理的利用BT构建简单的CDN网络的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。