dockerでlnmp環境を構築する方法

dockerでlnmp環境を構築する方法

プロジェクトディレクトリを作成する

php ディレクトリをコピーする

次のプロジェクト構造を作成します

  • サイトディレクトリはプロジェクトファイルが置かれる場所です
  • サービスディレクトリはサービス関連の構成を配置します
  • スクリプト カスタムスクリプトを配置する
├── Readme.md
├── docker-compose.yml
├── スクリプト
├── サービス
│ ├── マリアdb
│ │ └── Dockerファイル
│ ├── nginx
│ │ ├── Dockerfile
│ │ ├── conf.d
│ │ │ └── default.conf
│ │ └── nginx.conf
│ ├──php
│ │ └── Dockerファイル
│ └── レディス
│ └── Dockerファイル
└── サイト
 ├──index.html
 └──index.php

 
8 つのディレクトリ、10 つのファイル

docker-composeファイルを編集する

バージョン: "3"
サービス: 
 php:
 ビルド: ./services/php
 ポート数: 
 # - 「9001:9000」
 コンテナ名: lnmp-php
 再起動: 常に
 ボリューム: 
  - ./サイト:/www
 ネットワーク:
  ネット:
  ipv4_アドレス: 101.11.11.10

 nginx:
 ビルド: ./services/nginx
 ポート:
  - 「81:80」
  - 「444:443」
 コンテナ名: lnmp-nginx
 再起動: 常に
 ボリューム: 
  - ./サイト:/www
  nginx.conf は、以下のディレクトリにあります。
  - ./services/nginx/conf.d:/etc/nginx/conf.d:rw
 ネットワーク:
  ネット:
  ipv4_アドレス: 101.11.11.11

ネットワーク:
 ネット:
 ドライバー: ブリッジ
 ipam:
  設定:
  - サブネット: 101.11.11.0/20

services/nginx ファイルを編集する

nginx:1.17.0-alpineから

# インストールソースを更新します RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

# タイムゾーンを上海に設定する RUN apk update && apk add --upgrade \
 && apk tzdata を追加 \
 && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
 && echo "アジア/上海" > /etc/timezone \
 && tzdata の apk

services/php ファイルを編集する

php:7.3.6-fpm-alpine3.9 より

# インストールソースを更新します RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

# タイムゾーンを上海に設定する RUN apk update && apk add --no-cache tzdata autoconf gcc g++ make zlib-dev curl-dev\
 && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
 && echo "アジア/上海" > /etc/timezone \
 && tzdata の apk \
 && docker-php-ext-install mysqli pdo_mysql opcache \
 && pecl install grpc protobuf xdebug yaf yar swoole \
 && docker-php-ext-enable xdebug yaf yar swoole grpc protobuf 

lnmp 環境は基本的に上記で構築されています。次に、Php 解析を設定します。

services/nginx/nginx.confを変更します。必要に応じて変更できます。

ユーザー nginx;
ワーカープロセスは自動です。

error_log /var/log/nginx/error.log 警告;
pid /var/run/nginx.pid;


イベント {
 ワーカー接続 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 を含めます。
}

services/nginx/conf.dディレクトリ内のファイルを変更する

このディレクトリは各プロジェクトの構成ファイルであり、必要に応じて単一または複数のサービスを構成できます。

サーバー{
 聞く 80;
 server_name ローカルホスト;

 #文字セット koi8-r;
 #access_log /var/log/nginx/host.access.log メイン;

  nginx を /usr/share/html にコピーします。
 ルート/www;
 インデックス index.php index.html index.htm;


 #エラーページ 404 /404.html;

 # サーバーのエラーページを静的ページ /50x.html にリダイレクトします
 #
 エラーページ 500 502 503 504 /50x.html;
 場所 = /50x.html {
  ルート /usr/share/nginx/html;
 }

 # PHP スクリプトを 127.0.0.1:80 で listen している Apache にプロキシします
 #
 #場所 ~ \.php$ {
 # プロキシパス http://127.0.0.1;
 #}

 # PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します
 #
 場所 ~ \.php$ {
 #ルートhtml;
  101.11.11.10:9000; をデフォルトとして設定します。
  fastcgi_index インデックス.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_params を含めます。
 }

 # Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する
 # nginxのものと一致します
 #
 #場所 ~ /\.ht {
 # すべて拒否;
 #}
}

サービスを開始する

cd php && docker-compose up --build -d

上記の手順の実行時間は、ネットワーク速度と docker 構成によって異なります。一部の拡張機能は PHP でコンパイルされているため、必要に応じて削除することもできます。ブラウザから http://127.0.0.1:81 にアクセスします。phpinfo の出力情報が表示されたら、おめでとうございます。lnmp 環境がデプロイされました。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker で LNMP 環境を素早く構築する方法 (最新)
  • Dockerを使用して分散lnmpイメージを作成する
  • DockerでLNMPアーキテクチャを展開する方法
  • Dockerを使用して統合サービスlnmp環境を作成する
  • Dockerを使用してLNMP環境を構築する詳細な説明
  • DockerコンテナでLNMPをコンパイルする例

<<:  JavaScript で配列遅延評価ライブラリを実装する方法

>>:  MySQLインデックス最適化分析に関する簡単な説明

推薦する

Windows で負荷分散に Nginx+Tomcat を使用するための完全な手順

序文今日は、Prince が Windows で負荷分散に Nginx + Tomcat を使用する...

preタグを自動的に折り返すためのサンプルコード

pre 要素は、フォーマット済みのテキストを定義します。 pre 要素で囲まれたテキストでは、通常、...

MySql 学習 3 日目: データ テーブル間の接続とクエリの詳細

主キー:キーワード: 主キー機能: null にすることはできず、一意である必要があります。主キーの...

Vue の詳細な入門ノート

目次1. はじめに2. 初期ビュー(I) Vueの概念を理解する(II) MVVMアーキテクチャ(I...

MySQL レプリケーションの詳細な説明と簡単な例

MySQL レプリケーションの詳細な説明と簡単な例マスタースレーブレプリケーション技術は、MySQL...

Sysbench の MySQL ベンチマーク プロセスの分析

序文1.ベンチマークは、テスト オブジェクトのクラスの特定のパフォーマンス指標の定量的、再現可能、比...

JS配列の次元削減のいくつかの方法の詳細な説明

2次元配列の次元削減配列インスタンスメソッド concat と ES6 スプレッド演算子を使用した次...

mysql5.7.20 のインストールと設定方法のグラフィック チュートリアル (mac)

MySQL 5.7.20のインストールと設定方法のグラフィックチュートリアルをあなたと共有します1...

一般的なDockerコマンドの詳細な説明

1. ヘルプコマンド1. 現在のDockerバージョンを表示する docker バージョン2. イメ...

Linuxで中断されたシステムを呼び出す方法

序文低速システム コールとは、決して戻らない可能性があり、プロセスを永久にブロックするシステム コー...

Docker で MySQL を起動したときに SQL 文を自動的に実行する方法

Docker で MySQL コンテナを作成する場合、コンテナの起動後にデータベースとテーブルが自動...

HTML マウス CSS コントロール

一般的に、マウスは上向きの斜め矢印として表示され、テキストの上に移動すると垂直線になり、ハイパーリン...

Linux で大容量メモリ ページを持つ Oracle データベースを最適化する方法

序文PC サーバーは今日まで発展を続け、パフォーマンスにおいて大きな進歩を遂げてきました。 64ビッ...

スライダー効果を実装するミニプログラム

この記事の例では、スライディングブロック効果を実現するための小さなプログラムの具体的なコードを参考ま...

Mysql と Oracle でよく使用される複数テーブルの変更ステートメントの概要

今日、SQLトレーニングの質問バンクでこの質問を見ました。これは、非常に代表的なマルチテーブル変更の...