VPS はオフライン ダウンロード サーバーを構築します (ネットワーク ディスクの時代以降)

VPS はオフライン ダウンロード サーバーを構築します (ネットワーク ディスクの時代以降)

モチベーション

学習の必要性から、海外のサーバーメーカー(どこのメーカーかは言いません)のVPSサービスを購入しました。ただし、ラダーとして使用しても、1 か月あたり 1T のトラフィックが使い果たされることはありません。ようやく栄養が十分摂れた気がして、観る映画を探したいです。
残念ながら、Baidu Netdisk の速度は本当に衝撃的です。1 年間の Baidu Netdisk スーパー メンバーシップは非常に高価で、Baidu のオフライン ダウンロードは実際にはオフラインではありません。サーバー上のファイルをユーザーに引き寄せるだけです。希少なリソースを見つけたい場合、Baidu Netdisk は役に立ちません。

ねえ、VPS を使用して独自のオフライン ダウンロード サーバーを構築できますか?この方法では、余剰の帯域幅リソースを活用してダウンロード速度を上げることができます。これは素晴らしいことではないでしょうか。この疑問を念頭に置き、私は孤独な夜にそれを作り始めました。

建設プロセス

マシン構成の配布: CentOS 6.9
メモリ: 512MB
CPU: シングルコア 帯域幅: 1000Mbps

このマシンの構成はそれほど高くはありませんが、ダウンロードサーバーとして使用するには十分すぎるほどです。

ツールの選択

いくつか調べた結果、デプロイメント ツールとして transmission + vsftpd + nginx + aria2c を選択しました。

  • transmission、transmission-daemon: トレントやマグネットのクライアントとして、またオフラインダウンロードのコアツールとして。
  • vsftpd: ファイルのダウンロードを管理する ftp を構築するために使用されます (貧弱な VPS には 10G のディスク容量しかありません T_T)
  • nginx: 高性能な nginx を静的ファイル サーバーとして使用します。
  • aria2c: nginx によって表示されるファイル リストからオフライン ファイルを高速にダウンロードするマルチスレッド ダウンローダー。

導入の実践

1. トランスミッションをインストールし、構成を変更してサービスを開始する

トランスミッションとトランスミッションデーモンをインストールする

$ wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
$ rpm -ivh epel-release-6-8.noarch.rpm
$ yum -y アップグレード
$ yum -y トランスミッショントランスミッションデーモンをインストールします

設定を変更して、トランスミッションサービスを開始します。/var/lib/transmission/.config/transmission パスの下にある settings.json ファイルは、トランスミッションの設定ファイルです。この中には多くの設定があります。リモートソフトウェアを使用してトランスミッションを制御できるようにするには、次の設定を変更する必要があります。

「rpc認証必須」: true、
"rpc 有効": true、
"rpc-password": "リモート呼び出しパスワード",
"rpc-whitelist-enabled": false,
"rpc-username": "リモート呼び出しユーザー名",

送信サービスを開始する

$ sudo サービス伝送デーモンを開始

したがって、http://host_ip:9091 から転送サービスにアクセスできます。テスト後、速度は依然として良好で、ピーク速度は 30MB/s です。

さらに、ページにアクセスせずに送信を制御するために、Transmission-Remote-GUIをインストールすることもできます。Linux(Mint)のアプリストアからダウンロードできます。操作方法はuTorrentのUIインターフェースに似ています。

2. vsftpdはFTPサーバーを構築する

FTP サーバーの構築は、ファイルをダウンロードするために使用されません。FTP によるファイルのダウンロード速度は非常に遅いです。したがって、FTP サーバーの役割はファイルの管理であり、一般的に言えば、削除操作です。

vsftpdをインストールする

$ yum install -y vsftpd

仮想ユーザーではなくLinuxユーザーでログインします(データベースのインストールが面倒なので)
vsftpdはデフォルトではrootログインを許可していないため、ユーザーを追加する必要があります。

ユーザーの追加

$ ユーザー追加 ftpuser
$ パスワード ftpuser

ftpuserのホームディレクトリを送信のダウンロードディレクトリに変更します

$ usermod -d /var/lib/transmission/Downloads ftpuser
$ rm -rf /home/ftpuser

vsftpd設定ファイル(/etc/vsftpd/vsftpd.conf)を変更します。
設定ファイルは次のとおりです。

# cat vsftpd.conf | grep -v "#" を使用して生成します
匿名を有効にする=いいえ
ローカル有効=はい
書き込み有効=はい
ローカル_umask=022
dirmessage_enable=はい
xferlog_enable=はい
ポート20からの接続=はい
xferlog_std_format=はい
ftpd_banner=プライベート FTP サービスへようこそ。
chroot_list_enable=いいえ
listen_ipv6=はい

pam_service_name=vsftpd
ユーザーリストを有効にする=はい
tcp_wrappers=はい
local_root=/var/lib/transmission/ダウンロード

chroot_list_enable=NO の構成は、ユーザーがホーム ディレクトリから切り替えることができないことを示します。

vsftpdを起動する

sudo サービス vsftpd を開始

このように、ftp を使用して、転送によってダウンロードされたファイルを管理できます。

3. nginxで静的ファイルサーバーを構築する

ダウンロードしたリソースを表示するために、静的リソース サーバーとして nginx を使用します。インターネットには nginx のインストールに関するチュートリアルが多数あります。フォローアップとして記入してください。

主に構成について話す

nginx 設定ファイル (/etc/nginx/conf.d/default.conf) を変更します。

自動インデックスオン;
autoindex_exact_size をオン;
autoindex_localtime をオン;

サーバー{
  聞く 8090;
  聞く [::]:8090;
  server_name ローカルホスト;

  文字セット utf-8;
  位置 / {
    ルート /var/lib/transmission/Downloads;
    インデックス index.html index.htm;
  }

nginx サービスを開始すると、ポート 8090 経由でファイル リストを取得できます。

4. aria2c ファイルをダウンロード

aria2c は、サーバーからファイルをダウンロードし、自分のマシンにインストールするために使用されます。

主にaria2cマルチスレッドによるダウンロードの高速化について説明します

aria2cにはマルチスレッドダウンロードに関連するパラメータがいくつかあります。

パラメータ x: --max-connection-per-server=<NUM>、サーバーあたりの最大接続数、デフォルトは 1
パラメータ s: --split=<N> は、各ファイルのダウンロード接続数を示します。デフォルトは 5 です。-s は -x によって制限されます。s のデフォルトの x が 5 より大きい場合、x も s に制限されます。

したがって、大きなファイルの場合、 x および s パラメータを適切に増やすと、ダウンロード速度が向上します。

参考リンク:

CentOS 6 に Transmission BitTorrent クライアントをインストールする方法
Linux 上で FTP サーバーを構築する

以下もご興味があるかもしれません:
  • Java共有ネットワークディスクを構築するためのステップバイステップガイド
  • Baidu ネットワーク ディスクの実際のダウンロード リンクを取得する Java メソッド
  • ワンクリックで Baidu ネットワーク ディスク抽出コードを取得する Python メソッド
  • Linux で nextcloud を使用して個人用ネットワーク ディスクを構築するコード例
  • SpringBoot 開発事例: プライベートクラウドディスクの作成
  • Dockerを使用してNextCloudネットワークディスクを展開する方法
  • 電子を使用して Baidu ネットワーク ディスク フローティング ウィンドウ機能を実装するためのサンプル コード
  • JS が Baidu ネットワーク ディスクの任意のファイルの強制ダウンロード機能を実装
  • Javaでパーソナルネットワークディスクを構築する方法

<<:  MySQL 百万レベルのデータページングクエリ最適化ソリューション

>>:  JavaScript デザインパターン 責任連鎖パターン

推薦する

CSS トップに戻る コード例

最近のウェブサイトのほとんどはページが長く、4 画面または 5 画面の長さのものもあれば、2 画面ま...

Blazor における CSS 分離の問題

1. 環境VS 2019 16.9.0 プレビュー 1.0 .NET SDK 5.0.100 2. ...

JS で if 判定をスムーズに行う方法

目次序文コードの実装アイデア 1アイデア2要約する参照ドキュメント序文プロジェクト内の小さな要件ポイ...

MySQL で削除されたレコードが有効にならない理由のトラブルシューティング

オンライン MySQL トランザクションの問題の記録先週の金曜日、大きなテーブルを削除する操作を実行...

Vueは小さなフォーム検証機能を実装します

この記事では、フォーム検証を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は...

JavaScript 文字列操作の 4 つの実用的なヒント

目次序文1. 文字列を分割する2. JSONのフォーマットと解析3. 複数行の文字列と埋め込み式4....

JS はシンプルなカレンダー効果を実装します

この記事では、シンプルなカレンダー効果を実現するためのJSの具体的なコードを参考までに紹介します。具...

仮想マシンでXshell5をLinuxに接続する方法と障害の解決方法

かなり前に仮想マシンをインストールしましたが、ようやく Linux をインストールしました。マシンの...

MySQLでMyISAMストレージエンジンをInnodbに変更した操作記録のまとめ

一般的に、MySQL はデフォルトでさまざまなストレージ エンジンを提供しており、次のように表示され...

Linux コマンドラインターミナルで画面を分割するための 2 つのツール

ターミナル分割画面ツールは2つあります: screen と tmux 1. 画面分割を使用する(上下...

docker-compose を使用して mongodb と mysql を構築する詳細なプロセス

docker-compose で mongodb と mysql を構築する詳細な方法を見てみましょ...

NavicatがLinuxサーバー上のMySQLに接続できない問題を解決する

最初は悲しい気持ちになりました。スクリーンショットは以下の通りです。 少し苦労しましたが、解決策は次...

MySQLインデックスマージの使い方

インデックスのマージは、MySQL が最下層で提供するインテリジェントなアルゴリズムです。インデック...

Linux の高性能ネットワーク IO と Reactor モデルの分析

目次1. 基本概念の紹介2. ネットワークIOの読み取りと書き込みのプロセス3. 5つのLinuxネ...

CSSレイアウトで中央揃えレイアウトを実現する方法

1. 親コンテナーをテーブルに設定し、子をインライン要素に設定します。テキストを表示するサブコンテン...