Dockerに基づいた1C-Bitrixの環境

なぜこれが必要なのですか?


長い間、当社のすべてのプロジェクトがPHP5に取り組んでいましたが、今ではPHP7に切り替えて、動作に必要なすべての環境を更新することで、それらを高速化したいという要望がありました。 「異なるバージョンのPHPで異なるプロジェクトを動作させる方法は?」という疑問がすぐに生じました。

思いついたのは:

  1. 2つの異なるサーバーを含む
  2. 仮想マシンを使用する
  3. Dockerを適用する

オプション1は明らかに経済的に実行可能ではありません。 オプション2では、構成が難しく、リソースを大量に消費することがわかりました。 多くの人はおそらくこれに同意しませんが、その軽さとアプリケーション転送の容易さから、Dockerテクノロジーを使用することにしました。 主な選択基準は、Dockerが「私のマシンで動作する」問題を解決することでした。

環境選択


Maria DBはDBMSから選択されました。これは、すべてのプロジェクトでデータをすばやく読み取ることが重要であり、同時にデータを書き込む必要がないためです。

Nginxが静的ファイルを提供し、Apache2がダイナミクスを担当するApache2 + Nginxバンチを使用することにしました。

将来的には、必要に応じて、Redis、Memcachedなどをシステムに簡単に追加できます。

環境構造


すべてのプロジェクトには、リリース前に変更をテストするために使用されるバトルサーバー上のコピーがあります。 したがって、条件付きで環境を2つの部分に分割しました: demoprod

各パーツには、b / dのある独自のコンテナがあります。 つまり demoデータベースとprodデータベースは分離されています。 デモと製品には、PHP5のコンテナーとPHP7のコンテナーも含まれています。

すべての先頭にあるNginxプロキシは、構成ファイルで指定されたコンテナーに要求を送信します。 これにより、要求を必要なコンテナにリダイレクトするだけで、PHPバージョンを簡単に切り替えることができます。プロジェクトファイルはそれぞれで利用できるためです。 唯一の違いは、実行される環境です。

Nginxプロキシのサイト構成の例:

server { listen 80; server_name example.ru www.example.ru; location / { proxy_pass http://demo_php7_web; } } 

図でシステムの構造を明確に見ることができます。

画像

システム最適化


ほとんどのプロジェクトは1C-Bitrixプラットフォームで動作するため、1C-Bitrixが提供するbitrix_server_test スクリプトの要件を考慮してApache2とNginxを構成しました。

必要なすべてのPHP拡張機能は、Webサーバー、 curl、rsyslog、htop、xvfb、libfontconfig、wkhtmltopdf、jpegoptim、optipngを含むコンテナーにインストールされます。 さらに、サーバー側のファイル圧縮が構成されます。

特徴



使用する


現在、30以上のプロジェクトが開始されているこのシステムは、サーバー上で正常に動作しています。

プロジェクトはGitHubで入手できます 。 また、プロジェクトのファイル構造のより詳細な説明と、開始方法についても説明しています。

Source: https://habr.com/ru/post/J351286/


All Articles