環境要件:
プロジェクト計画: コンテナネットワークセグメント: 172.16.10.0/24 172.16.10.10 のネットワーク MySQL: 172.16.10.20 172.16.10.20 のアドレス ウェブサイトのルートディレクトリ:/www Nginx 設定ファイル: /conf mysql 永続ディレクトリ: /var/lib/mysql 事前にサービス構成ファイルを準備します。 nginx docker run -itd --name テスト nginx #テストコンテナを実行する docker cp test:/etc/nginx /conf #メイン設定ファイルをコピーする ls /conf/ conf.d koi-win nginx.conf win-utf fastcgi_params mime.types scgi_params koi-utf モジュール uwsgi_params docker cp テスト:/usr/share/nginx/html /www #ウェブサイトのディレクトリをコピー ls /www/ 50x.html インデックス.html </strong> マイスク [root@node1 ~]# docker rm -f テスト テスト [root@node1 ~]# docker run -itd --name test -e MYSQL_ROOT_PASSWORD=pwd123 mysql:5.7 6b8d73ecd541d454f121302963a85d53131286d3118a968525a24ad2315b047b [root@node1 ~]# docker exec -it test sh # mysql -uroot -ppwd123 -h127.0.0.1 .......... mysql> データベーステストを作成します。 クエリは正常、1 行が影響を受けました (0.00 秒) mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |mysql | | パフォーマンススキーマ | |システム| | テスト | +--------------------+ セット内の行数は 5 です (0.00 秒) mysql>終了 さよなら # 出口 [root@node1 ~]# docker cp test:/var/lib/mysql /var/lib/mysql </strong> 1. lnmp 仮想ネットワーク カード、ネットワーク セグメント 172.16.10.0/24、ゲートウェイ 172.16.10.254 を設定します。 docker ネットワーク作成 -d ブリッジ --subnet 172.16.10.0/24 --gateway 172.16.10.254 lnmp </strong> 2. アクセスをテストするためのnginxコンテナを作成する #mysql マウントデータディレクトリ、開発ポートを作成し、IP を指定します [root@node1 ~]# docker run -itd --name mysql -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql --network lnmp --ip 172.16.10.20 mysql:5.7 448227483a9c3141c2155d2c7b027aec263bfcfe4ebc49371b6817c17565ff81 #実行状態を確認する [root@node1 ~]# docker ps コンテナID イメージ コマンド 作成ステータス ポート名 448227483a9c mysql:5.7 "docker-entrypoint.s..." 10 秒前 9 秒前に起動 0.0.0.0:3306->3306/tcp、33060/tcp mysql 4d1e99a06972 nginx:latest "/docker-entrypoint.…" 3 分前 3 分前にアップ 0.0.0.0:80->80/tcp nginx 6b8d73ecd541 mysql:5.7 "docker-entrypoint.s..." 9 分前 9 分前に起動 3306/tcp、33060/tcp テスト #ログインテスト [root@node1 ~]# yum -y install mariadb [root@node1 ~]# mysql -uroot -ppwd123 -h127.0.0.1 MariaDB モニターへようこそ。コマンドは ; または \g で終わります。 MySQL接続IDは2です サーバーバージョン: 5.7.33 MySQL コミュニティサーバー (GPL) Copyright (c) 2000、2018、Oracle、MariaDB Corporation Ab およびその他。 ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。 MySQL [(なし)]> さようなら </strong> 3. MySQLコンテナを実行する [root@node1 www]# docker run -itd --name php-fpm -p 9000:9000 -v /www:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 php:7.2-fpm ae09213d7c8c84299b1522ca474fccf7f26e27973cd02563891c37d51799b766 [root@node1 www]# docker ps コンテナID イメージ コマンド 作成ステータス ポート名 ae09213d7c8c php:7.2-fpm "docker-php-entrypoi…" 7 秒前 6 秒前にアップ 0.0.0.0:9000->9000/tcp php-fpm 4. php-fpmコンテナを作成する [root@node1 ~]# vim /conf/conf.d/default.conf </strong> 5. nginxとPHPの接続 5.1. nginx 静的テストインターフェースを追加する <strong>[root@node1 ~]# echo Hello LNMP! > /www/index.html [root@node1 ~]# cat /www/index.html こんにちは、LNMP! [root@node1 ~]# カール 192.168.1.1 こんにちは、LNMP! </strong> 5.2. PHPテストページを追加する [root@node1 ~]# cd /www [root@node1 www]# vim test.php [root@node1 www]# cat test.php <?php phpinfo(); ?> [root@node1 www]# docker nginxを再起動します nginx [root@node1 www]# pwd /www [root@node1 www]# ls 50x.html インデックス.html テスト.php </strong> 上記の 2 つのインターフェースにアクセスできるということは、nginx と php 間の接続に問題がないことを示しています。次のステップは、php と mysql 間の接続です。ここでは、phpMyAdmin データベース管理ツールを使用します。 6. PHPコンテナとMySQLコンテナ間の連携をテストする(ツールphpMyadmin) [root@node1 www]# pwd /www [root@node1 www]# phpMyAdmin-4.9.0.1-all-languages.zip を解凍します [root@node1 www]# mv phpMyAdmin-4.9.0.1-すべての言語phpMyAdmin [root@node1 www]# rm -rf phpMyAdmin 6.1. nginx設定ファイルの更新 [root@node1 www]# cd /conf/conf.d/ [root@node1 conf.d]# vim default.conf 内容は以下のとおりです。 場所 /phpmyadmin { ルート /usr/share/nginx/html; インデックス index.php index.html index.htm; } 場所 ~ /phpmyadmin/(?<after_ali>(.*)\.(php|php5)?$) { ルート /usr/share/nginx/html; 172.16.10.30:9000; をパスします。 fastcgi_index インデックス.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_params を含めます。 } テストアクセス: 実際、これは主に PHP イメージが MySQL への接続をサポートしていないためであり、新しいイメージを作成する必要があります。 7. PHPがMySQLと関連付けられていない問題を解決する [root@node1 /]# cd /file/ [root@node1 ファイル]# ls Dockerファイル [root@node1 ファイル]# cat Dockerfile php:7.2-fpm より apt-get update && apt-get install -y \ を実行します。 libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-install -j$(nproc) iconv \ && docker-php-ext-configure gd --with-freetypedir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-install mysqli pdo pdo_mysql [root@node1 ファイル]# docker build -t php_mysql . #phpコンテナを削除 [root@node1 /]# docker rm php-fpm -f php-fpm #phpmysqlコンテナを実行 [root@node1 /]# docker run -itd --name phpfpm -p 9000:9000 -v /www:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 phpmysql:latest c4e943880fd51f947cba64ba0006abd26a923439a3e39a0350ca2561b42b8026 [root@node1 /]# docker ps コンテナID イメージ コマンド 作成ステータス ポート名 c4e943880fd5 phpmysql:latest "docker-php-entrypoi…" 14 秒前 13 秒前にアップ 0.0.0.0:9000->9000/tcp phpfpm 7.1、phpmysql 設定は mysql アドレスを指します [root@node1 www]# cd /www/phpmyadmin/ [root@node1 phpmyadmin]# mv config.sample.inc.php config.inc.php [root@node1 phpmyadmin]# vim config.inc.php [root@node1 phpmyadmin]# docker phpfpmを再起動します phpfpm 8. アクセステスト 9. 鉄は熱いうちに打て、dzフォーラムを公開する dz フォーラム リンク アドレス: http://down.chinaz.com/soft/41403.htm #アップロード [root@node1 /]# ls bin Discuz_X3.4_SC_UTF8_20210119.zip #/www ウェブディレクトリへ移動 mv upload/ /www/dz chmod 777 /www/dz<br># データベースに dz ライブラリがあることを確認します<br># dz ライブラリの管理者を承認します<br># インストール IP はデータベース IP なので間違えないようにしてください<br> これで、LNMP アーキテクチャを Docker にデプロイする方法に関するこの記事は終了です。LNMP アーキテクチャを Docker にデプロイする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Node.js は、異なるリクエストパスに応じて異なるデータを返します。
複数の Docker コンテナがデプロイされたサーバーがあり、各 Docker コンテナが stde...
nginx 設定ファイルのパスを表示する nginx -t 経由nginx -t コマンドの本来の機...
今日は、さまざまなブラウザでのデフォルト要素のマージン値が何であるかという問題について説明しました。...
バージョンアップデートにより、元のユーザーのパスワードフィールドがauthentication_st...
序文Reduce は ES5 で追加された新しい従来の配列メソッドの 1 つです。forEach、f...
たくさんのリンクおそらく、このようなサイトをたくさん見たことがあるでしょう。ページの下部に 50 個...
目次1. proxy と Object.defineProperty の利点2. プロキシ監視オブジ...
この記事では、Linux yumを使用してmysql5.6をインストールする簡単な手順を参考までに紹...
序文: 最近の医療モバイル プロジェクトに基づいて、Vue はさまざまな画面のさまざまな画面サイズに...
序文Vuex を使用すると、ストア内に「ゲッター」を定義できます (これはストアの計算されたプロパテ...
(?i) は大文字と小文字を区別しないことを意味します。大文字と小文字をすべて置き換えます。 htm...
次のコマンドを使用してコンテナを作成し、ローカルの /home/dock/Downloads ディレ...
私は長い間問題に取り組み、文法上の問題を何度も確認しました。しかし、後でネットで調べてみたら、突然理...
ウェブサイトが悪意を持ってリクエストされた場合、IP アドレスをブラックリストに登録することは重要な...
目次ステップ1: プロジェクトをインストールするディレクトリにnode_modulesをインストール...