説明: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アドレスに置き換えれば大丈夫です