ホスト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データベース設計:Pythonを使ったスキーマ操作方法の詳しい解説

矢が放たれる前に、弓は矢にささやきました。「お前の自由は私のものだ。」スキーマは矢のようなもので、弓...

Linux の操作とメンテナンスの基本的なスワップ パーティションと LVM 管理のチュートリアル

目次1. スワップパーティション SWAP 1.1 スワップファイルを作成する1.2 スワップパーテ...

LNMP と phpMyAdmin を Docker にデプロイする方法

環境準備:複数のコンテナに基づいてホストに lnmp をデプロイします。 nginx サービス: 1...

MySQL 5.7 zip版(zip版)のインストールと設定手順の詳細

はじめに: Windows 10 を再インストールし、同時にファイルを整理しました。しかし、MySQ...

javascript:void(0) の意味と使用例

voidキーワードの紹介まず、void キーワードは JavaScript で非常に重要なキーワード...

Dockerイメージサイズを最適化する一般的な方法

通常、私たちが構築する Docker イメージはサイズが大きく、多くのディスク領域を占有します。コン...

Centos7.3は起動時に自動的に起動または指定されたコマンドを実行します

Centos7では、/etc/rc.d/rc.localファイルの権限が削減されており、実行権限があ...

MySQL データベース アカウントの作成、認証、データのエクスポートおよびインポート操作の例

この記事では、MySQL データベースでのアカウントの作成、認証、データのエクスポートおよびインポー...

Web面接におけるJS事前解析と変数プロモーションの違い

目次事前分析とは何ですか?変数と関数の準備の違いvar 変数の繰り返し宣言変数と関数の昇格の優先順位...

Linux コマンドで .sql ファイルをエクスポートおよびインポートする方法

この記事では、Linux コマンドを使用して .sql ファイルをエクスポートおよびインポートする方...

HTML ドラッグ アンド ドロップ機能の実装コード

Vueベースこの機能の核となるアイデアは、JavaScript コードを通じてページ上のノードの左余...

Mysql5.7.17 winx64.zip 解凍バージョンのインストールと設定のグラフィックチュートリアル

1. mysql-5.7.17-winx64.zip をダウンロードします。リンク: https:/...

axiosのシンプルなカプセル化と使用例コード

序文最近、プロジェクトを構築しているときに、リクエストのカプセル化について考え、どのようにカプセル化...

この記事では、Vue 3.0 レスポンシブの使い方を説明します。

目次ユースケースリアクティブAPI関連プロセス反応的なcreateReactiveObjectはレス...