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インデックス最適化分析に関する簡単な説明

推薦する

ウェブページでグレーまたはブラックモードを実現するための CSS3 フィルターコード

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

JavaScript のクロージャの問題の詳細な説明

クロージャは、純粋関数型プログラミング言語の伝統的な機能の 1 つです。クロージャをコア言語構造の不...

MySqlエスケープの詳細な使用例

MySQL エスケープエスケープとは、エスケープ文字の本来の意味を意味します。エスケープ文字の目的は...

JavaScriptはキュー構造プロセスを実現する

目次1. キューを理解する2. カプセル化キュー3. 太鼓をたたいて花を渡す場合1. キューを理解す...

簡単な手順で純粋な CSS3 で 3D 反転効果を実現

フロントエンド開発者の必須科目であるCSS3は、多くの基本的なアニメーション効果を実現するのに役立ち...

CSSはフロントエンドの画像変形の問題を完璧に解決します

Toutiao IT School で、CSS がフロントエンドの画像変形の問題を完璧に解決するとい...

CentOS に MySQL 8.0 をインストールして設定するための詳細な手順

序文CentOS に MySQL をインストールして設定する手順は次のとおりです。文章yumソースか...

ElementUI el-select の過剰なデータに対する解決策についての簡単な説明

目次1. シナリオの説明2. 解決策オプションが多すぎる el-select コンポーネントの解決策...

Ubuntu システムにおける Mysql ERROR 1045 (28000): ユーザー root@localhost へのアクセスが拒否される問題の解決方法

最初の方法: skip-grant-tables: 非常に便利なmysql起動パラメータ非常に便利な...

Linuxの運用と保守の基本プロセス管理と環境構成分析

目次1. プロセスの基本的な概要2. プロセスの構成要素3. プロセス環境4. プロセスステータス5...

Linux で crond ツールを使用してスケジュールされたタスクを作成する方法

序文Crond は Linux のスケジュール実行ツール (Windows のスケジュールされたタス...

Centos7.4 システムに yum ソースから mysql 5.6 をインストールする

システム環境: centos7.4 1. データベースがインストールされているかどうかを確認します。...

Mac OS 10.11 での MySQL 5.7.12 のインストールと設定のチュートリアル

Mac OS 10.11 に MySQL をインストールして設定する方法を、主に写真を使って手順を簡...

MySQL でテーブルデータをクリアする 2 つの方法とその違い

MySQL でデータを削除するには 2 つの方法があります。切り詰めは大まかな伐採の一種である削除は...