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 デザインパターン 責任連鎖パターン

推薦する

node.js でマルチコア CPU を最大限に活用する方法

目次概要node.js でマルチコア CPU を最大限に活用する方法Node で子プロセスを作成する...

vsftpdで仮想ユーザーログインを設定する方法

yum で vsftpd をインストールします [root@localhost など]# yum -...

MySQL テーブル分割後にスムーズにオンラインになる方法

目次テーブルの目的例えばテーブル分割戦略すでにオンラインになっている実行中のテーブルはどうすればよい...

MySQL共通ストレージエンジンの機能と使用方法の詳細な説明

この記事では、一般的な MySQL ストレージ エンジンの機能と使用方法を例を使って説明します。ご参...

DockerはClickHouseをインストールし、データテストを初期化します

クリックハウスの紹介ClickHouse は、SQL クエリを使用して分析データ レポートをリアルタ...

マークアップ言語 - リスト

標準化されたデザインソリューション - マークアップ言語とスタイルマニュアルWeb 標準ソリューショ...

MySQL 5.6 圧縮パッケージのインストール方法

MySQL には、msi インストールと zip 解凍の 2 つのインストール方法があります。 zi...

Nginx コンパイル済み nginx - 新しいモジュールを追加

1. 既存のモジュールを表示する nginx の sbin ディレクトリに nginx の sbin...

カレンダー効果を実現するための Bootstrap+JQuery

この記事では、カレンダー効果を実現するためのBootstrap+Jqueryの具体的なコードを参考ま...

フロントエンド JavaScript におけるリフレクションとプロキシ

目次1. 反射とは何ですか? 2. JavaScriptで反映する2.1 Reflect.get(タ...

Webデザインと制作のテスト問題と参考回答

<br />Web デザインと制作テスト パート I 多肢選択問題 1. 単一選択問題 ...

SSH経由でローカルLinux仮想マシンに接続するプロセスを記録する

実験環境:物理マシン Windows 10 x64物理NIC情報IPv4 アドレス: 192.168...

HTML テーブルタグチュートリアル (35): 列間属性 COLSPAN

複雑なテーブル構造では、一部のセルが垂直方向に複数のセルにまたがるため、列間属性 COLSPAN を...

MySQL MyISAM デフォルト ストレージ エンジンの実装原則

デフォルトでは、MyISAM テーブルはディスク上に .frm (テーブル構造ファイル)、.MYD ...

jQueryのanimateアニメーションメソッドとアニメーションキューイング問題の解決方法の詳しい説明

目次animate() アニメーションメソッドアニメーションキューイングdelay() メソッドアニ...