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

推薦する

MySQLはテーブルデータを復元するためにfrmファイルとibdファイルを使用します

目次frm ファイルと ibd ファイルの紹介frm ファイル回復テーブル構造ibd ファイル回復テ...

Tomcatが親の委任メカニズムを破壊する方法についての簡単な説明

目次JVM クラスローダーTomcat クラスローダークラスを検索ロードクラスクラスをロードしようと...

Ubuntu環境でのPHP関連のパスと変更方法

Ubuntu環境におけるPHP関連パスPHP パス /usr/bin/php phpize5 /us...

WeChatミニプログラムがシームレスなスクロールを実現

この記事の例では、WeChatアプレットのシームレスなスクロールを実現するための具体的なコードを参考...

Dockerコンテナのいくつかの保存方法の詳細な説明

目次前面に書かれた複数のストレージマウント方法1.バインドマウント2. 巻数3.tmpfsマウントス...

CSSを使用して炎の効果を作成する方法

本文は以下から始まります。 123WORDPRESS.COM ダウンロード:純粋な CSS3 で超リ...

Element-uiはテーブル内のセルを直接クリックして編集します

目次成果を達成する実装コード最近、会社でelementUIを使い始めたため、開発の過程でテーブルのセ...

ARM64アーキテクチャでmysql5.7.22をインストールするプロセス全体

MySQLダウンロードアドレス: https://obs.cn-north-4.myhuaweicl...

Web プロジェクトでの SQL インジェクションの防止

目次1. SQLインジェクションの概要2. SQLインジェクション攻撃の全体的な考え方SQLインジェ...

VUEをベースにしたシンプルな学生情報管理システムの実装

目次1. 主な機能2. 実装のアイデア3. コードの実装4. エフェクト表示V. 結論1. 主な機能...

EXPLAIN コマンドの詳細な説明と MySQL での使用方法

1. シナリオの説明: 同僚から MySQL で explain を使用する方法を教わったので、返さ...

CSS 評価効果の星の例

何?何のスターコートですか?さて、もっとわかりやすくするために写真を見てみましょう。 よく見ると、パ...

mysqldump を使用して MySQL データをバックアップする方法

1. mysqldump の紹介mysqldump は、MySQL に付属する論理バックアップ ツー...

マークアップ言語 - 印刷スタイルシート

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...