スタンダードライセンスで運用中のシステムの安全なアップデート方法

時下ますますご清栄のこととお慶び申し上げます。平素は格別のお引き立てを賜り、厚く御礼申し上げます。

新しいライセンスの追加とライセンスの価格改定に関するお知らせ」の記事でもお知らせした通り、スタンダードライセンスでVer. 2.11以降へマイナーバージョンアップされたときバージョンアップ費用が必要になりました。(マイナーバージョンアップとは、Ver.2.10からVer.2.11にアップデートするような、小数点第2位の数字のバージョンアップを指します。マイナーバージョンは、後方互換性があり機能性を追加した場合にバージョンが上がります。)

本記事では、スタンダードライセンスで運用中のシステムの安全なアップデート方法についてお知らせいたします。

バージョンアップ費用について

バージョンアップ費用は、1回10,000円(+消費税)となっており、アップデート期間延長オプションを購入いただいてから1年間有効です。 アップデート期間延長オプションの有効期限内であれば、マイナーバージョンアップを何度でも行なっていただけます。

バージョンアップ費用が必要になる場合

  • Ver.2.10.x→Ver.2.11.x、Ver.2.8.x→Ver.2.11.x、Ver.1.7.x→Ver.2.11.x のアップデートの場合
  • Ver.2.11.x→Ver.2.12.x のアップデートの場合

バージョンアップ費用が不要の場合

  • Ver.2.8.x→Ver.2.10.x、Ver.1.7.x→Ver.2.10.x のアップデートの場合
  • Ver.2.11.0→Ver.2.11.1 のアップデートの場合
  • Ver.2.11.xを購入してから、半年以内にVer.2.12.x へアップデートする場合

安全なアップデートの手順

安全にCMSのバージョンをアップデートをしていただくために、順番としてはアップデート期間延長オプションを購入してからアップデート作業を行うことを推奨しています。

購入前にアップデート作業を行うと、ライセンスが一時開発ライセンスとなり、運用中のサイトで開発ライセンスで運用中であることを知らせるアラートが表示されたり、noindexとなってしまう危険性があります。

必ず購入してからアップデート作業を行うようにしてください。

1. アップデート期間延長オプションの購入方法

まず、マイページの所有ライセンス一覧に移動します。(※マイページに要ログイン)

一覧からバージョンアップしたいサイトを探し、オプション項目の「購入」ボタンをクリックし、オプション購入ページへ移動します。



オプション購入ページに移動したら、「アップデート期間延長」項目を選択します。バージョンアップ費用は、1回10,000円(+消費税)となっています。

購入手続きを完了したら、再び マイページの所有ライセンス一覧へ移動します。

一覧からバージョンアップしたいサイトを探し、license.phpをダウンロードします。ダウンロードしたlicense.phpは、CMSを設置しているサーバーにアップロードし、すでに設置されているlicense.phpを上書きしてください。

2. アップデートの操作方法

/private/config.system.yaml をテキストエディタで開きます。そして、ファイル内に以下の記述を追加します。

system_update_repository  : https://www.a-blogcms.jp/api/update-211.json

設置したサイトのCMSにログインし、管理画面に入り、「更新」ページに移動します。

「今すぐ更新」ボタンをクリックして、自動アップデートを開始します(「今すぐ更新」ボタンが表示されていなかったら、「もう一度確認する」ボタンをクリックしてください)。



更新ページに再度アクセスして、「インストールバージョン」が最新バージョンになっていたらアップデート完了です。

【重要】Ver.2.11以上にアップデートするときは校正オプションにご注意ください

Ver.2.11から、校正オプションのしようが変更されております。Webサイトの表示にも関わる修正となっておりますので、アップデートの際はご確認のほどお願いいたします。

ご不明な点があったときは

この件についてなにかご不明な点がございましたら、お問い合わせフォームまでご連絡ください。

日々使いやすいシステムとなるよう改善を勤めておりますので、皆様からの貴重なフィードバック、お待ちしております。

脆弱性が発見されました

a-blog cms で利用しているライブラリに脆弱性が見つかりました。
影響範囲にあるバージョンをご利用の方は、大変お手数ですが以下対応をお願いいたします。

影響範囲

  • 2.10系: Ver. 2.10.23 未満のバージョン
  • 2.9系: Ver.2.9.26 未満のバージョン
  • 2.8系: Ver.2.8.64 未満のバージョン
  • 2.7系: 全てのバージョン

内容

使用しているPHPのライブラリにXSS脆弱性があり、このライブラリの該当ファイルに直接URLでアクセス(CMSを通さないアクセス)されると、JavaScriptが実行できてしまいます。

参照: JVN#10377257

対応方法

php/vendor/pear/http_request2/tests/ ディレクトリの削除をお願いいたします。このディレクトリ内にあるファイルは、CMSでは利用していませんので削除しても動作に影響はありません。

php/vendor/pear/http_request2/tests/ のディレクトリを削除いただければ、特にCMSのアップデートは必要ありません。

この度はご迷惑をおかけしてしまい大変申し訳ございませんでした。
今後ともa-blog cmsをよろしくお願いいたします。

TinyPNG API を使って、画像を最適化してみよう

この記事は Advent Calendar 2019 の25日目の記事となります。さまざまな a-blog cms に関する記事が公開されていますので是非ごらんください。



画像を最適化してファイルサイズを小さくすることでパフォーマンスをよくすることができます。
これを実現するために「ロスレス圧縮」機能が a-blog cms にはありますが、サーバー側で必要なライブラリが入っていないと動作しません。

必要なライブラリ例

  • pngquant
  • optipng
  • pngcrush
  • pngout
  • advpng
  • jpegtran
  • jpegoptim
  • gifsicle
  • svgo

共用のレンタルサーバーなどだと、これらのライブラリが入っている可能性が少なく、対応に困ります。
そこで、画像最適をするサービスで有名な「TinyPNG」のAPIを使い、ライブラリが入っていないサーバーでも画像のロスレス圧縮に対応させる拡張アプリを作ってみたので紹介いたします。

この拡張アプリで実現できること

TinyPNGのAPIを利用して、画像のロスレス圧縮を実現できます。Hook機能を使って画像生成時にすべてロスレス圧縮します。 また校正オプションを用意していて、ロスレス圧縮された状態で画像のリサイズをすることができます。

インストール方法

設置方法

https://github.com/appleple/acms-tiny-png/raw/master/build/TinyPNG.zip のリンクからzipファイルをダウンロードします。zipを解凍すると TinyPNG というディレクトリが出てくるので extension/plugins/ に設置します。

アプリのインストール

設置できたら、管理画面にログインし、拡張アプリ から TinyPNG 拡張アプリをインストールします。

config.server.php

拡張アプリのインストールができたら、config.server.php の HOOK_ENABLE の値を「1」に設定します。

APIキーの設定

https://tinypng.com/ でアカウントを作成し、API Key を発行ください。発行した API Key を以下の様に private/config.system.yaml に追記します。

tiny_png_api_key: xxxxxxxxxxxxxxxxxxxxxxxxxxx

以上でインストール・設定は完了です。

参照: https://github.com/appleple/acms-tiny-png

使い方

特にロスレス圧縮するだけなら、なにも意識せず通常通りの作業で、自動的にTinyPNGのAPIを通して、圧縮されるようになります。

画像のリサイズを TinyPNG APIで実行する

TinyPNGで画像を好きなサイズにリサイズできる校正オプションも用意しました。もちろんロスレス圧縮された状態でリサイズされます。

scale

アスペクト比を維持したまま、幅または高さを指定してリサイズします。幅、高さの両方の指定はできません。

<img src="%{MEDIA_ARCHIVES_DIR}{hoge@path}[resizeTinyPng('scale', 300)]" /> <!-- 幅指定 -->
<img src="%{MEDIA_ARCHIVES_DIR}{hoge@path}[resizeTinyPng('scale', 0, 300)]" /> <!-- 高さ指定 -->

fit

アスペクト比を維持したまま、指定された寸法に収まるように縮小します。幅と高さ両方の指定が必要です。

<img src="%{MEDIA_ARCHIVES_DIR}{hoge@path}[resizeTinyPng('fit', 300, 300)]" />

cover

指定された寸法になるように縮小し、はみ出した部分はトリミングします。幅と高さ両方の指定が必要です。

<img src="%{MEDIA_ARCHIVES_DIR}{hoge@path}[resizeTinyPng('cover', 200, 200)]" />

改善したいところ

さくっと作ったままですので、まだまだ改善しないといけないところがあります。

  • 同期的にAPIをたたいているので、画像のアップロード処理がすごく遅くなってしまう。-> バックグラウンドで実行する様に修正する。
  • 余分なAPIコールがあるので、節約するようにしたい。
  • 残りAPI回数が、管理画面から確認できるようにしたい。

まだまだ改善点はありますが、この拡張アプリを入れることで、共用のレンタルサーバーなどでも簡単にロスレス圧縮に対応できるようになります。 よかったらぜひ試してみてください。