ホスト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 シリーズ 8 MySQL サーバー変数

チュートリアルシリーズMySQL シリーズ: MySQL リレーショナル データベースの基本概念My...

HTML ページ ヘッダー コード例の詳細な説明

知識ポイント1: ヘッダー情報にWebページのベースURLを設定するベース URL の本質は、ハイパ...

デザイン協会: なぜ間違った場所を探したのですか?

数日前、バスで仕事に行きました。バスのカードリーダーの実際の使用シーンを実際に見て、カードリーダーの...

プロジェクトに必須の 8 つの JavaScript コード スニペット

目次1. ファイル拡張子を取得する2. コンテンツをクリップボードにコピーする3. スリープ時間は何...

CSSでnグリッドレイアウトを実装する方法

一般的なアプリケーションシナリオ現在のアプリのインターフェースは基本的に同じであり、グリッドレイアウ...

htmlダウンロード機能の詳しい説明

新しいプロジェクトは基本的に終了しました。フロントエンドとバックエンドを分離して統合を完了したのは初...

あまり使われていない、または誤解されている HTML タグ 10 個

ここでは、あまり使われていない、または誤解されている 10 個の HTML タグを紹介します。あまり...

Vue の計算プロパティとリスナーの使用の概要

1. 計算プロパティとリスナー1.1 計算プロパティ <!DOCTYPE html> &...

MYSQL は、指定されたユーザーのランキングとクエリを実装します。ランキング関数 (並列ランキング関数) のサンプルコード

序文この記事は主に、MYSQL でランキングを実現し、指定ユーザーランキング関数 (並列ランキング関...

MYSQL メタデータ ロック (MDL ロック) MDL ロックの問題分析

1. はじめにMYSQL の MDL ロックは常に頭痛の種でした。ロックについて話すとき、通常は I...

MySQL クエリ キャッシュとバッファ プール

1. キャッシュ - クエリキャッシュ次の図は、MySQL 公式サイトから提供されています: MyS...

MySQL が group by をサポートしない場合の解決策の概要

MySQL 5.7.x の最新バージョンをダウンロードしてインストールしました。デフォルトでは、on...

NexusはHTTPSプロトコルをサポートするためにnginxプロキシを使用します

背景すべての会社の Web サイトは HTTPS プロトコルをサポートする必要があります。Aliba...

MySQL は information_schema オブジェクトの付与をバイパスし、ERROR 1044 (4200) エラーを報告します

この質問は、MySQL の権限に関する WeChat グループのネットユーザー間の議論です。次のよう...