DNMP の紹介 DNMP (Docker + Nginx + MySQL + PHP7/5 + Redis) は、フル機能のLNMP ワンクリック インストーラーです。豊富なサービス、強力な機能、使いやすさ、複数のプラットフォームとの互換性をサポートします。複数のターミナルに適した、docker 開発および本番環境用の PHP 環境の完全なセットです。 DNMP プロジェクトの特徴:
1. MySQL に接続できない問題を修正しました。 2. NGINX 仮想ドメイン名を設定します。 3. PHP拡張機能をインストールします。
MySQL接続の問題を修正 dnmp はインストール中にローカル ポート 3305 を MySQL コンテナのポート 3306 にマップするため、接続時にはポート 3305 に接続する必要があります。 サンプル コードの www ディレクトリの下に、localhost ディレクトリがあります。次のように、MySQL をテストするためのコードが見つかります。 // MySQL サービス関数 getMysqlVersion() を検出する { (拡張機能がロードされた場合('PDO_MYSQL')){ 試す { $dbh = 新しい PDO ('mysql:host=192.168.2.103;dbname=mysql', 'root', '123456'); $sth = $dbh->query('バージョンとしてVERSION()を選択します'); $info = $sth->fetch(); } キャッチ (PDOException $e) { $e->getMessage() を返します。 } $info['version']を返します。 } それ以外 { 'PDO_MYSQL 拡張機能がインストールされていません ×' を返します。 } } コードを次のように変更するだけです。 // MySQL サービス関数 getMysqlVersion() を検出する { (拡張機能がロードされた場合('PDO_MYSQL')){ 試す { $dbh = 新しい PDO ('mysql:host=192.168.2.103;port=3305;dbname=mysql', 'root', '123456'); $sth = $dbh->query('バージョンとしてVERSION()を選択します'); $info = $sth->fetch(); } キャッチ (PDOException $e) { $e->getMessage() を返します。 } $info['version']を返します。 } それ以外 { 'PDO_MYSQL 拡張機能がインストールされていません ×' を返します。 } }
NGINXドメイン名を設定する 設定する前に、いくつか明確にしておくべき点があります。ソース コード ディレクトリ、NGINX 構成ファイル、NGINX ログ ファイルの場所。 1. スクリーンショットから、conf.d ディレクトリの下に 2 つの設定ファイルがあることがわかります。これら 2 つは事前に設定したドメイン名ファイルです。このファイルは、NGINX コンテナを通じてローカル ディスクにマップされます。したがって、ホストマシンを通じて表示できます。 2. ログ ファイルは、NGINX のエラー、アクセス、およびその他の関連ログ ファイルであり、NGINX コンテナー内のホストにもマップされます。 3. ここでの www はプログラム ソース コードのパスであり、すべてのプログラム ソース コードをここに配置できます。
ステップ 1: www ディレクトリに移動してアプリケーションをインストールします。インストールには compser を使用することをお勧めします。composer を使用する場合は、簡単な設定に関するドキュメントを参照することもできます。 ert@ertiaodeMac-mini ~/develop/env/dnmp/www master ● composer create-project topthink/think=5.1.35 tp5 「./tp5」に「topthink/think=5.1.35」プロジェクトを作成する topthink/think (v5.1.35) のインストール - topthink/think (v5.1.35) のインストール: キャッシュから読み込み /app/tp5にプロジェクトを作成しました パッケージ情報を含む Composer リポジトリの読み込み 依存関係の更新(require-devを含む) パッケージ操作: インストール 2 回、更新 0 回、削除 0 回 - topthink/think-installer (v2.0.0) のインストール: キャッシュから読み込み中 - topthink/framework (v5.1.39) のインストール: キャッシュから読み込み ロックファイルの書き込み 自動ロードファイルの生成 ert@ertiaodeMac-mini ~/develop/env/dnmp/www マスター ● ll 合計 0 drwxr-xr-x 3 ert スタッフ 96B 9 6 22:02 ローカルホスト drwxr-xr-x 19 エルトスタッフ 608B 9 8 22:26 tp5 このようにして、tp5 フレームワークがローカルに設定されます。ステップ 2: NGINX コンテナに入り、docker ps で Docker コンテナのコンテナ ID を表示し、docker exec コマンドを使用してコンテナに入ります。 ert@ertiaodeMac-mini ~/develop/env/dnmp/www マスター ● docker ps コンテナID イメージ コマンド 作成ステータス ポート名 0f5f9cd08aa2 dnmp_php "docker-php-entrypoi…" 27 時間前 約 1 時間前 9000/tcp、9501/tcp php 8bc44fc8c578 dnmp_nginx "/docker-entrypoint.…" 27 時間前 26 時間前 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx f02ad53bf14d mysql:5.7.28 "docker-entrypoint.s..." 27 時間前 26 時間前にアップ 33060/tcp、0.0.0.0:3305->3306/tcp mysql5 ert@ertiaodeMac-mini ~/develop/env/dnmp/www マスター ● docker exec -it 8bc44fc8c578 /bin/sh /www#ls ローカルホスト tp5 NGINX設定ファイルのパスを入力してください / # cd /etc/nginx/ /etc/nginx # ls -la 合計60 drwxr-xr-x 1 ルート ルート 4096 9月 8日 20:23 。 drwxr-xr-x 1 ルート ルート 4096 9月 7日 19:34 .. drwxr-xr-x 5 ルート ルート 160 9月8日 20:05 conf.d -rw-r--r-- 1 ルート ルート 429 9月 6日 22:02 fastcgi-php.conf -rw-r--r-- 1 ルート ルート 1077 7月 8日 00:14 fastcgi.conf -rw-r--r-- 1 ルート ルート 1062 9月 6日 22:02 fastcgi_params -rw-r--r-- 1 ルート ルート 2837 7月 8 00:14 koi-utf -rw-r--r-- 1 ルート ルート 2223 7月 8 00:14 koi-win -rw-r--r-- 1 ルート ルート 5231 7月 8日 00:14 mime.types lrwxrwxrwx 1 root root 22 Jul 11 04:27 モジュール -> /usr/lib/nginx/modules -rw-r--r-- 1 ルート ルート 760 9月 6日 22:02 nginx.conf drwxr-xr-x 2 ルート ルート 4096 9月8日 20:23 書き換え -rw-r--r-- 1 ルート ルート 636 7月8日 00:14 scgi_params -rw-r--r-- 1 ルート ルート 664 7月 8日 00:14 uwsgi_params -rw-r--r-- 1 ルート ルート 3610 7月 8 00:14 win-utf
ドメイン構成ファイルを作成します。 /etc/nginx # conf.d/ を cd し、tp5.conf をタッチします /etc/nginx/conf.d # ls -la 合計 16 drwxr-xr-x 5 root root 160 9月8日 20:05 . drwxr-xr-x 1 ルート ルート 4096 9月 8日 20:23 .. -rw-r--r-- 1 ルート ルート 48 9月 6 22:02 .gitignore -rw-r--r-- 1 ルート ルート 2254 9月 6日 22:02 localhost.conf -rw-r--r-- 1 ルート ルート 505 9月8日 20:29 tp5.conf tp5.conf ファイルを設定します。次の内容をコピーします。 サーバー{ 聞く 80; サーバー名 tp5.com; ルート /www/tp5/public; インデックスindex.php; #NGINX ログ ファイル。別のドメイン名の場合は、ファイル名を nginx.tp5.com.xx.log に置き換えます。 アクセスログ /var/log/nginx/nginx.tp5.com.access.log; エラーログ /var/log/nginx/nginx.tp5.com.error.log; #Thinkphp5 の URL 書き換えファイルは、繰り返しの書き込みを回避し、別のファイルに配置します。将来的には、他の thinkphp プロジェクトを直接インポートできます。 rewrite/thinkphp.conf をインクルードします。 場所 ~ \.php$ { # ここで php は PHP コンテナの名前です。実際の IP に変更できます。IP が変更されるため、推奨されません。 fastcgi_passphp:9000; fastcgi-php.conf をインクルードします。 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_params を含めます。 } } ドメイン名の設定をテストし、NGINX サービスを再起動します。 /etc/nginx/conf.d # nginx -t && nginx -s リロード nginx: 設定ファイル /etc/nginx/nginx.conf の構文は正常です nginx: 設定ファイル /etc/nginx/nginx.conf のテストが成功しました /etc/nginx/conf.d # ホストマシンのホストファイルにドメイン名を追加します。 アクセステスト PHP拡張機能のインストール Docker 環境を構築する場合、PHP の Redis 拡張機能はデフォルトではインストールされません。ここでは Redis 拡張機能を例に説明します。 一部の拡張機能は組み込まれているため (特定の拡張機能については、上記の使用方法のドキュメントを参照してください)、コマンドを使用して直接インストールできます。 PHP拡張機能Redisのインストール 拡張機能のテスト /www # php --ri redis レディス Redis サポート => 有効 Redis バージョン => 5.3.1 ...... 要約する これで、docker を使用して完全な開発環境を構築する方法についての記事は終了です。docker を使用して完全な開発環境を構築する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: この記事はVueのライフサイクルを理解するのに役立ちます
Tomcat テストで 404 問題が発生します。問題は次のとおりです。 HTTP ステータス 40...
目次序文関連資料成果を達成する実装手順序文Openlayer には独自の拡張プラグイン ol-ext...
序文:この記事では主にMySQLのロングトランザクションに関する内容を紹介します。例えば、トランザク...
目次序文主な実装コードHTMLコードJSコード序文南の友達の多くは、雪をほとんど見たことがない、ある...
Tomcat は Java 言語をベースにした Web サーバー ソフトウェアです。この記事では主に...
方法 1: readonly 属性を true に設定します。入力値=読み取り専用 readOnly...
公式サイトからインストールパッケージをダウンロードします: mysql-8.0.19-linux-g...
問題を見つけるまず問題を見てみましょう。ミニプログラムでは、Vant のダイアログ コンポーネント ...
実際には、対応する記述方法は多数ありますが、最も一般的なのは object + embedded で...
この記事では、3D テキストのホバー変更効果を実現するための CSS3 のサンプル コードを紹介しま...
削除する方法はいくつかあります:リンクを直接追加するonfocus="this.blur(...
シナリオ会社のプロジェクトはDockerでデプロイされています。原因不明ですが、コンテナが時々停止し...
この記事の例では、ショッピングカートのロジックと機能を実装するためのjsの具体的なコードを共有してい...
今日は、MySQL データベースと SQL 標準 (および他のデータベース) の UPDATE ステ...
目次序文1. 共通オブジェクトを反復処理するには for...of を使用します2. 通常のオブジェ...