ホストNginx + Docker WordPress Mysqlを設定するための詳細な手順

ホストNginx + Docker WordPress Mysqlを設定するための詳細な手順

環境

  • Linux 3.10.0-693.el7.x86_64
  • Docker バージョン 18.09.0
  • docker-compose バージョン 1.17.0

インストール

Docker依存関係をインストールする

$ sudo yum install -y yum-utils デバイスマッパー永続データ lvm2

docker-ceをインストールする

 $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 $ sudo yum インストール docker-ce
 $ sudo systemctl dockerを起動します
 $ docker --version
 $ sudo docker run hello-world

docker-composeをインストールする

$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
$ sudo chmod +x /usr/bin/docker-compose
$ docker-compose --version

docker-compose.ymlを書く

$ mkdir ./blog
$ cd ブログ
$ sudo vim docker-compose.yml
バージョン: '3'

サービス:
 デシベル:
  イメージ:mysql:5.7
  ボリューム: #データボリューム、マッピングローカルフォルダ - db_data:/var/lib/mysql
  ports: # ポートマッピングを記述しないと、外部から mysql に接続できません (以下の WordPress 接続は問題ありません)
  - 「3306:3306」                       
  再起動: 常に
  環境:
  MYSQL_ROOT_パスワード: xxx
  MYSQL_DATABASE: ワードプレス
  MYSQL_USER: ワードプレス
  MYSQL_パスワード: wordpress

 ワードプレス:
  depends_on: #上記の db サービスに依存
  -db
  画像: wordpress:最新
  ボリューム:
  - wp_site:/var/www/html
  ポート:
  - 「8000:80」
  再起動: 常に
  特権: true
  環境:
  # 上記のサービス名 + ポートを直接使用してリンクを取得できます WORDPRESS_DB_HOST: db:3306
  WORDPRESS_DB_USER: ワードプレス
  WORDPRESS_DB_PASSWORD: ワードプレス
  # ドメイン名を定義します WORDPRESS_CONFIG_EXTRA: "define('WP_HOME','https://blog.amoyiki.com'); define('WP_SITEURL','https://blog.amoyiki.com');"

ボリューム:
 db_データ:
 wp_サイト:

コンテナの実行

# 開始 $ sudo docker-compose up -d
# シャットダウン$ sudo docker-compose down

これで、http://ip:port を使用してアクセスできるようになります。アクセスできない場合は、コンテナ ログをチェックしてエラーを見つけることができます。

$ sudo docker-compose ps
 名前 コマンド 状態 ポート    

blog_db_1 docker-entrypoint.sh mysqld 0.0.0.0:3306->3306/tcp、33060/tcp が起動しました
blog_wordpress_1 docker-entrypoint.sh apach ... 0.0.0.0:8000->80/tcp を起動 
# 最後の WordPress はサービス名です。これは Docker でログを表示するために使用するコンテナ名とは異なります。$ sudo docker-compose logs -f --tail=10 wordpress 
$ sudo docker-compose ログ -f --tail=10 db

ホストNginxを使用してdocker wordpressをリバースする

nginxの設定ファイルは以下のとおりです(関係ない内容は省略)

user root; # これは、docker コンテナ内の WordPress ファイル ユーザーが www-data であるためです。

サーバー{
 聞く 80;
 サーバー名 *.amoyiki.com;
 301 https://$host$request_uri を返します。                
}
アップストリーム wordpress-workhorse {
 サーバー 127.0.0.1:8000 fail_timeout=10s;
}
サーバー{ 
 サーバー名 blog.amoyiki.com;
 443 ssl を聴く;
 sslオン;
 ssl_certificate /ssl/path/fullchain.pem;
 ssl_certificate_key /ssl/path/privkey.pem;
 access_log /var/log/nginx/access.log メイン;
 # ホストルート内の WordPress データボリュームの場所 /var/lib/docker/volumes/blog_wp_site/_data;


 位置 / {
  proxy_pass http://wordpress-workhorse;
  proxy_set_header ホスト $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto https;
 }
 
 場所 ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
  有効期限は7日です。
  access_log オフ;             
 }

 エラーページ 500 502 503 504 /50x.html;
 場所 = /50x.html {
  ルートhtml;
 }
} 

エラー収集

nginx エラー 権限が拒否されました

「/var/lib/docker/volumes/myblog_wp_site/_data/wp-includes/css/dashicons.min.css」が失敗しました (13: 権限が拒否されました)

以前は、nginx.conf ユーザーはデフォルトの nobody を使用していましたが、docker の wp 内の www-data のユーザー グループ データを読み取ることができませんでした。そのため、nginx ユーザーを直接 root に昇格しました。これは後で最適化できます。

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

以下もご興味があるかもしれません:
  • WordPress をベースに個人ブログをゼロから構築する方法を教える 6 つのステップ
  • nginx+WordPressで個人ブログを構築するプロセス全体の詳細な説明
  • Nginx 環境での WordPress マルチサイト構成の詳細な説明
  • Nginx で WordPress 擬似静的を設定する方法の例
  • Nginx で WordPress を設定する方法
  • WordPress ウェブサイトのアクセスが遅い問題を解決する方法に関する詳細なグラフィックチュートリアル

<<:  mysql 5.7.11 winx64 初期パスワード変更

>>:  星のきらめき効果を実現するネイティブ js

推薦する

MySQLデータベースの基礎知識

目次1. データベースを理解する1.1 データベースとデータ構造の関係1.2 なぜデータベースが必要...

Vueトップタグ閲覧履歴の実装

目次ナンセンス実装された機能文章要点ナンセンスデモプレビュー実装された機能デフォルトでホームページが...

MySQL における datetime と timestamp の違いと使い方

1. MySQL で現在の時刻を表現するにはどうすればよいでしょうか?実際、表現方法はいろいろありま...

DockerはElasticsearch7.6クラスタをインストールし、パスワードを設定します

Elasticsearch 6.8 以降、無料ユーザーは X-Pack のセキュリティ機能を使用でき...

MySQLセグメンテーション関数substring()の具体的な使用法

MySQL には、主に left()、right()、substring()、substring_i...

Linux で MySQL 5.6 X64 バージョンをインストールする詳細な手順

環境: 1. CentOS6.5 X64 2.mysql-5.6.34-linux-glibc2.5...

JDBC を使用して MySQL を操作するための簡単な分析では、Class.forName("com.mysql.jdbc.Driver") を追加する必要があります。

導入データベースに接続するためにJDBCを使用することに慣れている場合は、データベースに接続するため...

JavaScript コンソールのその他の機能

目次概要コンソールログコンソール.infoコンソール.警告コンソールエラーコンソールテーブルコンソー...

MySQL の binlog_format モードと設定の詳細な分析

MySQL レプリケーションには、SQL ステートメント ベースのレプリケーション (SBR)、行ベ...

Dockerコンテナの紹介

Dockerの概要Docker はオープンソースのソフトウェア展開ソリューションです。 Docker...

MySQLデータベースにパスワードを入力した後にフラッシュバックする問題の解決策

パスワード入力後にMySQLデータベースがクラッシュする問題と解決策1 ケースの説明最近、基本的な機...

Windows Server 2012 でファイル サーバーを構築するための詳細な手順

ファイル サーバーは、企業内で最も一般的に使用されるサーバーの一つであり、主にファイル共有を提供する...

Ubuntu 18.04 Server に静的 IP を設定する方法

1. 背景Netplan は、Ubuntu システムのネットワーク設定を簡単に管理および構成できるよ...

クリーンなコードのための Web デザインの 12 の法則 [グラフィック]

美しいコードは美しい Web サイトの基礎です。優れた CSS は、同様に優れた HTML の上にの...

Ubuntu の MySQL のパラメータ ファイル my.cnf の詳細な分析

序文MySQL に関する私の理解に基づくと、パフォーマンスの最適化作業やマスター スレーブ レプリケ...