説明:cdn-managerは、クラウドトランスコーディングexpress-ffmpegの作者quazeroが@dadi/cdnに基づいて作成したスキャフォールドで、この原理は API サービスのようです。構築された CDN サーバーは、最初に設定したウェブサイトにアクセスすると、元のサイトのいくつかのリソースをサーバーにキャッシュします。また、jpg、css、jsだけでなく、ts、m3u8、mp4もキャッシュできます。デフォルトでは 1 時間キャッシュされますが、永久キャッシュに設定することもできます。そして、同時接続が非常に高く、ハードディスクの IO が追いつかない場合、画像をバイナリに変換してメモリに保存します。さらに強力なのは、画像にパラメータを追加できることです。例えば、高さ、幅、フォーマット、フィルター、比率、回転などを指定し、画像を取得した後に要求に応じて処理し、リアルタイムで必要な画像を返し、サーバーにキャッシュします。需要がある場合は、遅延が比較的低いサーバーを使用して構築することができ、特に同時接続が高いウェブサイトの元のサイトの負担を軽減できます。
インストール#
cdn-manager:https://gitee.com/quazero/cdn-manager
dadi/cdn:https://github.com/dadi/cdn
このチュートリアルはCentOSに適しており、CentOS 7システムの使用をお勧めします。
1、依存関係のインストール
#システムのアップグレード
yum update -y
#開発者ツールパッケージのインストール
yum -y groupinstall "Development Tools"
#nodejsのインストール
curl -sL https://rpm.nodesource.com/setup_10.x bash -
yum install nodejs -y
#pm2のインストール
npm install pm2 -g
2、プログラムのインストール
#ソースコードを取得
git clone https://gitee.com/quazero/cdn-manager.git
cd cdn-manager
#インストール
npm install
#環境の設定
export NODE_ENV=production
3、パラメータの設定
注意:このステップで説明するデフォルト設定は画像のみをキャッシュするため、基本設定を理解し、記事の最後にある追加設定を参考にしてから4ステップでプログラムを実行します。
このプログラムは主に2つの設定ファイルposter.jsonとconfig.production.jsonに関連しています。前者は画像処理の設定ファイルで、後者は実行環境の設定ファイルです。
画像設定パスworkspace/recipes/poster.json、デフォルトパラメータは以下の通りです:
{
"recipe": "poster",
"settings": {
"format": "jpg",
"quality": "90",
"height": "240",
"ratio": "16-9",
"resizeStyle": "entropy"
}
}
これは画像を16:9の比率にし、高さを240PX、フォーマットをjpg、品質を90%に設定することを意味します。
実行環境設定パスconfig/config.production.json、デフォルトパラメータは以下の通りです:
{
"server": {
"host": "127.0.0.1",
"port": 8001
},
"images": {
"remote": {
"enabled": true,
"path": "#"
}
}
}
これは実行ポートが8001で、リモート接続のpathを設定することを意味します。例えば、私のドメインがhttps://www.moerats.comの場合、そのパラメータの後にそのドメインを入力します。
4、プログラムの実行
#ソースコードのフォルダに移動
cd /root/cdn-manager
#ここでエラーを避けるために、いくつかのモジュールをインストールすることをお勧めします
npm install sharp farmhash
#実行
pm2 start index.js
実行環境設定#
1、キャッシュ設定
"caching": {
"ttl": 3600,
"expireAt": "0 5 0 * * *"
}
expireAt設定の説明:
"0 5 0 * * _" 毎日午前12時5分にキャッシュを更新
"0 30 11 _ _ 1-5" 毎週月曜日から金曜日の午前11時30分にキャッシュを更新
"0 15 14 1 _ _" 毎月1日の午後2時15分にキャッシュを更新
"0 22 _ _ 1-5" 月曜日から金曜日の午後10時にキャッシュを更新
"_ 5 4 * * 0" 毎週日曜日の午前4時5分にキャッシュを更新
ttl設定の説明:
単位は秒で、デフォルトは3600秒、1時間後にキャッシュが無効になります。任意の期間を設定できます。
/api/flushを使用してこのAPIで手動でキャッシュファイルを更新できます。
2、image 設定
"images": {
"directory": {
"enabled": true,
"path": "relative/path/to/your/images"
},
"remote": {
"enabled": true,
"path": "https://www.moerats.com/images"
},
"s3": {
"enabled": true,
"accessKey": "your-access-key",
"secretKey": "your-secret",
"bucketName": "your-bucket",
"region": "your-region",
"endpoint": "ams3.digitaloceanspaces.com"
}
}
images設定項目は 3 つの使用法があります。1 つは同じホストの画像を直接サービスすること、もう 1 つはローカル画像をサービスすること、最後の 1 つはリモート画像をサービスすることです。最後に、Amazon とDigital Ocean Spaceのクラウドストレージです。
directoryはローカルファイルをサービスし、pathをファイルフォルダのアドレスに指定するだけでローカル画像を直接処理できます。例えば/www/moerats.com/picture、その後、画像アドレスhostを CDN アドレスに変更するだけです。
remoteはリモートファイルをサービスし、pathをリモート URL に設定します。例えばhttps://www.moerats.com、最後にそのアドレスを CDN アドレスに置き換えます。
s3は拡張可能なクラウドストレージで、さまざまなクラウドストレージ上の画像を直接キャッシュできます。
3、assets 設定
"assets": {
"directory": {
"enabled": true,
"path": "/Users/absolute/path/to/your/assets"
}
}
この設定方法はimage設定を参考にし、imagesをassetsに置き換えるだけで、他の使用法は同じです。設定後、jpg以外のさまざまなファイルをキャッシュします。動画ファイルも含まれます。
画像処理設定#
{
"recipe": "poster",
"settings": {
"format": "jpg",
"quality": "90",
"height": "240",
"ratio": "16-9",
"resizeStyle": "entropy"
}
}
recipeファイルは事前設定されたフォーマット処理ファイルで、workspace/recipesフォルダに作成します。
"recipe"パラメータはファイル名と一致する必要があります。settingsで設定できるオプション:
blur ブラー
filter クロッピング処理アルゴリズムの設定
flip 反転
format フォーマット
gravity クロッピング領域の設定
ratio 比率
rotate 回転
width 幅
height 高さ
resizeStyleクロッピングモードはentropyなどを推奨します。詳細はdadi/cdnのドキュメントを参照してください。
設定が完了したら、例えばrecipeがposterの場合、アクセスリンクはcdnhost/poster/yourpath/1.jpgになります。
ドメインのリバースプロキシ#
正常にアクセスするには、ドメインのリバースプロキシを使用する必要があります。ここでは宝塔のリバースプロキシとCaddyのリバースプロキシについて説明します。あなたのウェブサイトに宝塔がある場合は、宝塔を使用してリバースプロキシを行うことができます。ない場合は、Caddyのリバースプロキシを使用することをお勧めします。設定は非常に簡単です。
1、宝塔のリバースプロキシ
まず、宝塔パネルに入り、左側のウェブサイトをクリックし、サイトを追加します。次に、追加したドメイン名をクリックすると、サイト設定に入ります。リバースプロキシをクリックし、ターゲットURLにhttp://127.0.0.1:8001を入力し、リバースプロキシを有効にします。SSL を有効にする方法については、サイト設定で直接確認できます。
2、Caddy のリバースプロキシ
Caddyをインストールします:
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
#バックアップアドレス
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
Caddyを設定します:
#以下のすべての内容は一つの全体です。ドメイン名を変更した後、まとめてSSHで実行してください!
#httpアクセス、この設定は自動的にSSLを発行しません
echo "xx.com {
gzip
proxy / http://127.0.0.1:8001
}" > /usr/local/caddy/Caddyfile
#httpsアクセス、この設定は自動的にSSLを発行します。事前にドメインをVPSサーバーに解析してください
echo "xx.com {
gzip
tls [email protected]
proxy / http://127.0.0.1:8001
}" > /usr/local/caddy/Caddyfile
tlsパラメータは自動的にssl証明書を発行します。自分のsslを使用したい場合は、tls /root/xx.crt /root/xx.keyに変更すれば大丈夫です。後ろはssl証明書のパスです。
Caddyを起動します:
/etc/init.d/caddy start
最後に、すべての設定が完了したら、元のウェブサイトでリソースリンクのドメインを CDN のアドレスに置き換えるだけです。大体次のように使用します:
元の画像アドレスは:https://www.moerats.com/rats.jpg
CDNのアドレスは:https://cdn.moerats.com/poster/rats.jpg、このリンクは自動的に画像を処理します
#画像を処理したくない場合は、元のドメインを直接置き換えれば大丈夫です。例えば:
https://cdn.moerats.com/rats.jpg
#他のリソースもドメインをCDNアドレスに置き換えれば大丈夫です