LEMP(Linux + Nginx + MySQL + PHP)は、基本的に今日のWeb開発者にとって必須の環境です。通常、aptやyumなどのシステムパッケージ管理ツールを通じて直接インストールして使用できます。ただし、互換性を考慮して、システムに付属するソフトウェアソースは更新が遅く、半年ほどで以前のバージョンで停滞することが多く、開発者の新機能のフォローアップテストに影響を与えます。 最新バージョンを追求するために、多くの開発者がソースコード パッケージをダウンロードして自分でコンパイルするようになりましたが、そのプロセスは面倒すぎるため、後に Oneinstack や lamp.sh などのワンクリック インストール パッケージが作成されました。 Docker の起動により、上記のプロセスが大幅に簡素化されます。 Docker Hub には、PHP や nginx などのさまざまなコンポーネントをイメージにパッケージ化するメンテナーが多数います。ユーザーは、関連するイメージをプルするだけで LEMP スタックを構築できます。 Docker ベースの機能には、少なくとも次のような利点があります。
2 か月前、私は LEMP フレームワーク全体の構築を開始し、必要に応じていくつかのイメージを自分でメンテナンスしました。関連するオーケストレーション テンプレートは、https://github.com/metowolf/docker-lemp でオープン ソースになっています。現在、ブログ全体とAPIサイトはdocker上で稼働しており、動作はかなり安定しています。 容器
デモ 簡単な例でこれを説明しましょう。 まず、docker および docker-compose 環境をインストールする必要があります。デモンストレーションの便宜上、PWD トライアル ホストを直接使用して実行します。 $ curl -fsSL https://get.docker.com -o get-docker.sh $ sh get-docker.sh $ curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose を実行します。 サーバーにログインし、オーケストレーションテンプレートを取得します。 $ git clone https://github.com/metowolf/docker-lemp.git $ cd docker-lemp 設定ファイルを作成する $ cp .env.example .env $ cp docker-compose.example.yml docker-compose.yml nginx設定を作成する $ cat > etc/nginx/config/example.conf <<EOF サーバー{ 聞く 80; サーバー名 example.com *.direct.labs.play-with-docker.com; ルート /var/www/example.com; インデックスindex.php; 位置 / { try_files \$uri \$uri/ /index.php?\$query_string; } 場所 ~ \.php\$ { fastcgi_split_path_info ^(.+\.php)(/.+)\$; fastcgi_pass php-fpm:9000; fastcgi_index インデックス.php; fastcgi_params を含めます。 fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; fastcgi_param PATH_INFO \$fastcgi_path_info; } } 終了 phpinfoファイルを作成する $ mkdir wwwroot/example.com/ $ cat > wwwroot/example.com/index.php <<EOF <?php phpinfo(); 終了 コンテナを起動する $ docker-compose up -d php-fpm nginx mysql 起動が成功すると、何も問題がなければポート 80 でおなじみのページが表示されます。 高度なゲームプレイ クイック オーケストレーションの例では、quic 機能を取得するために、リバース nginx に caddy を追加しました。 docker の機能を利用すると、caddy がポート 443 udp のみを listen し、nginx が引き続きポート 443 tcp を listen するようにして、TLSv1.3 と quic を同時に考慮できるようになります。 ブラウザにquicへの接続を試みるよう通知するために、nginx設定にリターンヘッダーを追加する必要がある。 add_header alt-svc 'quic=":443"; ma=2592000; v="44,43,39"'; ブロトリ nginx コンテナでは、必要に応じて有効にできる動的モジュールに brotli をコンパイルしました。 新しいetc/nginx/nginx.conf設定ファイルを作成する ユーザー nginx; ワーカープロセスは自動です。 error_log /var/log/nginx/error.log 警告; pid /var/run/nginx.pid; # brotli モジュールをマウントします。load_module modules/ngx_http_brotli_filter_module.so; モジュールモジュール/ngx_http_brotli_static_module.so をロードします。 イベント { ワーカー接続 1024; } http { /etc/nginx/mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log メイン; ファイル送信オン; #tcp_nopush オン; キープアライブタイムアウト65; #gzip オン; /etc/nginx/conf.d/*.conf を含めます。 } 新しいetc/nginx/config/brotli.conf設定ファイルを作成する ブロトリオン; brotli_comp_レベル 6; brotli_types application/x-httpd-php application/javascript application/x-javascript application/xml application/json text/plain text/javascript text/css text/xml image/jpeg image/gif image/png image/svg+xml; docker-compose.yml を変更して nginx.conf 設定ファイルをマウントします。 ---docker-compose.yml +++ docker-compose.yml @@ -11,6 +11,7 @@ -php-fpm ボリューム: ログファイル + - ./etc/nginx/nginx.conf:/etc/nginx/nginx.conf:rw - ./etc/nginx/config:/etc/nginx/conf.d:rw - ./etc/ssl:/etc/nginx/ssl:rw - ./wwwroot:/var/www:rw @@ -65,6 +66,8 @@ 最後に、コンテナオーケストレーションを更新します $ docker-compose up -d --no-deps --build 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: MySQL バッチ SQL 挿入パフォーマンス最適化の詳細な説明
1. はじめにロケーション命令は、http モジュールのコア構成です。事前に定義された URL マッ...
Win10 システムでの MySQL 8.0.20 のインストールと設定の超詳細なチュートリアルMy...
top コマンドは、Linux システムのパフォーマンスを監視するために誰もが使用している最適なコマ...
目次COUNT 関数は何をするのですか? MyISAMの「魔法」シンプルなCOUNT最適化近似値を使...
実装のアイデアまず、親コンテナーを作成し、2 つの順序なしリストを使用して、柔軟なレイアウトで親コン...
最終的な解決策は最後の写真にありますリモート データベース ( Linux システム) に接続したと...
目次VueUse にはどのようなユーティリティがありますか? VueUseをVueプロジェクトにイン...
ますます多くのウェブサイトで、XHTML が HTML4 に取って代わって急速に普及しています。しか...
結果: 実装コード: スワイパーコンポーネントと一緒に使用する必要がありますSwiper 基本デモア...
従来、開発者はインスタンスで必要になる可能性のあるデータに対して JavaScript クラス内にプ...
目次Pagodaをインストールする管理塔Nginx サービス管理Apache サービス管理MySQL...
このチュートリアルでは、MySQL 5.7.18のインストールと設定方法を参考までに紹介します。具体...
この記事では、JavaScriptで全選択と全選択解除の操作を実装するための具体的なコードを参考まで...
IIS7 では、「URL REWRITE2」疑似静的モジュールがインストールされているかどうかを確...
目次1. 技術概要2. 技術的な詳細1. インターフェースからバックエンドデータを取得する2. フロ...