ホスト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

推薦する

Vue でバイナリ ファイル ストリームを受信して​​ PDF プレビューを実現する方法

バックグラウンド コントローラー @RequestMapping("/getPDFStre...

MySQL 5.7.9 シャットダウン構文例の詳細な説明

mysql-5.7.9 では、ついにシャットダウン構文が提供されます。以前は、MySQL データベー...

古典的なスネークゲームの JavaScript 実装

この記事では、古典的なスネークゲームを実装するためのJavaScriptの具体的なコードを参考までに...

更新とデータ整合性処理のためのMySQLトランザクション選択の説明

MySQL のトランザクションはデフォルトで自動的にコミットされます (autocommit = 1...

Vue が価格カレンダー効果を実現

この記事では、価格カレンダー効果を実現するためのVueの具体的なコードを例として紹介します。具体的な...

JavaScript の非同期処理で待機時間を節約できますか?

JavaScriptで非同期実行の結果を同期的に取得するには、 for ループ内でawaitを使用...

MySQL の詳細な単一テーブルの追加、削除、変更、クエリの CRUD ステートメント

MySQL の追加、削除、変更、クエリステートメント1. 練習シートを作成するここでの練習表は3つの...

VMware 仮想マシン (CentOS7 イメージ) を使用して Linux をインストールする

1. VMwareのダウンロードとインストールリンク: https://www.jb51.net/s...

Linuxサービスの監視と運用および保守

目次1. psutilパッケージをインストールする次に、オペレーティングシステム内のすべてのサービス...

JS でシンプルな画像カルーセル効果を実現

この記事では、シンプルな画像カルーセル効果を実現するためのJSの具体的なコードを参考までに紹介します...

Windows 環境での MySQL の解凍、インストール、バックアップ、復元

システム環境はserver2012です1. MySQLの解凍バージョンをダウンロードし、インストール...

MySQL 8.0.24 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.24のインストールチュートリアルを参考までに紹介します。具体的な内...

JavaScript ES6 分割演算子の理解と応用

目次序文脱構築記号の役割使い方分割割り当ての適用アプリケーションの簡単な紹介JSONデータを抽出する...

JavaScript で localStorage を使用する方法

.NET の世界に参入したい開発者であれば、何が可能なのかを知る必要があります。 .NET Fram...

ネイティブjsはショッピングカートのロジックと機能を実装します

この記事の例では、ショッピングカートのロジックと機能を実装するためのjsの具体的なコードを共有してい...