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



All Articles