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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用BT构建简单的CDN网络

發布時間:2024/1/1 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用BT构建简单的CDN网络 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

種子下載源需部署到公網服務器上,部署在內網服務器上沒見成功下載過。

一、 服務器上部署tracker服務 tracker服務器建議采用OpenTracker(據說可以在生產環境下使用)。OpenTracker/BitTorrent3.4.2/BitTorrent5.0.9/BitTornado任選其一,建議OpenTracker

系統環境:

python2.7

(一) 關閉防火墻或設置允許 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

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

完成之后,我們將二進制文件移動到/usr/bin: cp opentracker /usr/bin

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

制作種子的時候,我們添加Tracker服務器時,可以這么寫: http://你的服務器公網IP:1337/announce

或者: udp://你的服務器公網IP:1337/announce

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

OpenTracker還有一個自帶的統計功能: http://你的服務器公網IP:1337/stats

更詳細的統計信息訪問: http://你的服務器公網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、啟動Tracker服務 ./bttrack.py –port 6969 –dfile dstate >>/var/log/bttrack.log #表示打開6969并記錄log

3、制作BT發布文件

(四) BitTorrent5.0.9

yum install python-devel python-crypto pyOpenSSL zope

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

升級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

啟動tracker服務 /usr/bin/bittorrent-tracker –port 6969 –dfile dstate

(五) 服務器上部署安裝BitTornado http://www.bittornado.com/官網,2004年3月發布初始版本,2006年發布0.3.18后未見更新。github上有別的持續更新,但測試中發現有問題 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 簡單通過bitComet或uTorrent制作種子后,將種子提供給他人,并不能正常下載。通過在服務器上啟動種子源下載,才見有下載進度。制作種子可以使用BitComet、btmakemetafile.py等均可。

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

三、 在服務器上啟動種子下載源

(一) BitTorrent3.4.2

啟動原始下載服務(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 后面是下載后保存的文件名(同源文件名路徑,這樣這個任務即等同完成了下載后的提供源數據的下載任務)

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

作為BT服務器.目標是共享更多的文件給用戶下載,如果對于每個“種子”都要啟動一個Downloader,不但非常煩瑣,可能還會大大影響服務器效率。

為了解決這個問題,BitTorrent提供了另外兩個Downloader程序btlaunchmany.py和btlaunchmanycurses.py。這兩個程序會定時檢查指定目錄,對其中的所有“種子”啟動Downloader,并根據目錄內容增加和刪除Downloader。 btlaunchmanycurses.py是一個圖形控制臺界面,而btlaunchmany.py則更適合于后臺運行程序。 btlaunchmanycurses.py需要圖形界面.還需要給下載頻道負責人服務器的權限.所以我們使用btlaunchmany.py后臺運行程序. 用法如下:

#/usr/bin/btlaunchmany.py –data_dir /源目錄 –torrent_dir /種子目錄
啟動后.btlaunchmany.py使用6881端口.默認每隔120秒到種子目錄探測一次.

(二) 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服務器,將.torrent文件和application/x-bittorrent相關聯。編輯Apache的配置文件httpd.conf,添加如下內容:

AddType application/x-bittorrent .torrent

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

五、 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

即可看到下載過程。

六、 Windows上的bt客戶端

BitComet會出現一直無法下載的問題,估計因為被官方詬病后,禁止其連接有關。 使用μTorrent正常。

七、 利用bt構建點播節目分發系統 節目分發服務器采用centos、ubuntu等大規模應用安裝的系統,方便部署。 基于內網的服務器采用iso封裝的形式,安裝系統更簡便。

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

數據庫 電影信息表 包含電影名、評分、上映日期、類型、導演、主演、片長、國家地區、簡介、文件名、入庫時間、torrent文件下載地址、FTP下載地址、上架狀態、海報圖等信息; 客戶端點播次數和付費次數應能更新進電影信息數據庫,以用于優化分發; vod服務器信息表 數字id,機器碼,是否分發,
Http Server 提供電影信息查詢接口,用于更新電影

為避免電影資源被非法盜用,此查詢接口需要加認證,避免非法用戶和同一帳號同時登陸,應保證一個帳號只能在一臺機器上使用。 電影優先更新熱播電影Top100、付費率高電影、新入庫電影,以加快分發效率;

(二) 管理服務器 VodManager 對所有內網點播服務器進行管理 設置點播服務器在云朵上對應的組織號 接收訂單回調

(三) 內網點播服務器 VodServer MovieUpdate 連接MovieSource,執行Login,認證通過則獲取到待更新的節目列表,將節目數據保存到本地數據庫中。

MovieDownload 讀取本地數據庫中的待更新節目數據,啟動下載任務,將電影下載到本地硬盤中,下載完成后,將相應的節目記錄上架。 電影更新程序,默認設置2臺“節目分發服務器”地址 可指定將電影更新到哪個目錄下。

HTTP服務:給點播終端apk提供電影點播服務、及節目清單查詢接口。 供apk查詢電影節目列表的數據接口 最簡的登陸管理后臺,可控制下架哪個節目;(可選)

BT分發服務 是否打開種子下載源服務,在云端可開關。 使用launchmany-console.py對某一目錄下所有torrent文件進行監視,提供bt下載更新服務。

FRP服務 連接管理服務器VodManager

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

對libtorrent客戶端的修改主要在src\http_tracker_connection.cpp中, 對opentracker的修改應該在ot_http.c中http_handle_announce方法

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。