Home > ブログ > Plesk Onyx 17.8 へのアップグレード

ブログ

Plesk Onyx 17.8 へのアップグレード

先日、お客様のサーバーをPlesk 12系からPlesk Onyx 17.8へアップグレードしました。

Plesk Onyx 17.8に更新することによって各モジュールのバージョンが変わりますが、Webサーバーの構成も大きく変わっています。具体的にはフロント側でNginxがReverse Proxyとして動作し、バックエンド側でApacheが動作する構成になっています(図1)。

Reverse Proxy
図1 Plesk Onyx 17.8のWebサーバー構成

Reverse Proxyを使う場合は、Reverse Proxyを動作させるフロント側のサーバーとバックエンドのサーバーで別のサーバーとし、複数台構成とすることが多いですが、Plesk Onyxでは1サーバー内でReverse Proxy(Nginx)とバックエンド(Apache)を動作させています。

また、NginxをReverse Proxyとして動作させるなら、html,cssのような静的ファイルへのアクセスは、Apacheへ転送せずNginxに直接処理させる方が性能的にはいいはずですが、必ずApacheを経由するようになっています。一見無駄なことをやっているように見えますが、これは既存のApache環境と互換性を維持するために行っています。 全てのリクエストは一旦Apacheに来るため、既存のApacheの設定や.htaccessが従来どおり動作します。

  • 1サーバー内でReverse Proxyとバックエンドを動作させる
  • 静的ファイルへのリクエストもバックエンドのApacheに転送する

とちょっと変わった構成になっているのは、従来のApache環境との互換性を維持しつつ、Nginxの特長である静的コンテンツの高い配信性能/同時接続数を活かすためのようです。

性能的なメリットについては公式ドキュメント(ApacheとNginx)に以下のように記されています。

  • (1) ウェブサイトへの同時接続の最大数を増やすことができる。
  • (2) サーバ CPU およびメモリリソースの消費量を抑えることができる。
  • (3) 低速接続環境からの訪問者に、効率的にサービスを提供することができる。

(1),(2)についてはApacheを必ず経由することからどの程度有効なのかは不明ですが、 (3)については、接続あたり1プロセスを使うApacheの場合、いつまでもプロセスを占有されてしまいメモリが大量に消費されてしまいますが(図2)、今回のようなReverse Proxy構成の場合、接続のプールをNginxで行うため(図3)、同時接続数を向上できることは予想できます。

Apache Only
図2 Apacheのみの構成

1コネクションあたり1プロセスが必要になるので、同時に大量の接続を維持しようとするとメモリを大量に消費する。低速接続環境だと、転送に時間がかかりいつまでもプロセスを占有されてしまい新しい接続を受け付けられなくなってしまう。

Nginx + Apache
図3 Plesk Onyxでの構成

コネクションのプールはNginxで行われるので、遅いクライアントがたくさんいてもプロセスを大量に消費することはない。

ただ、ReverseProxy背後で動作することを想定していないシステムの場合は正常に動作しない可能性があります。その場合は、従来どおりApacheのみの環境に変更することもできます。

Plesk管理画面の[ツールと設定] -> [サービス管理]で「リバースプロキシサーバ(nginx)」を停止すれば、Apacheのみの構成になります(単にNginxを止めるだけはなくApacheがフロントになるようにconfigも正しく書き換えてくれます)。

[参考]
公式ドキュメント: ApacheとNginx

=============

弊社ではLinuxサーバーのOSアップグレード作業に関するお問合せもお受けしております。
サポート期限が切れたOSを新しいものに更新したい等、何かお困りのことがございましたらお問い合わせください。

=============

投稿日:2019/02/25 01:05

タグ: Server 作業実績

Top

アーカイブ

タグ

Server (24) 作業実績 (17) PHP (15) プログラミング (15) ネットワーク (12) C (8) OpenSSL (8) C++ (7) PHP関連更新作業 (7) EC-CUBE (6) Webアプリ (6) Nginx (5) AWS (4) 書籍 (4) laravel (4) Linux (4) JavaScript (4) Rust (3) Vue.js (3) 与太話 (3) Symfony (2) Golang (2) OSS (1) MySQL (1) お知らせ (1) デモ (1) CreateJS (1) Apache (1)