Docker:WordPress:環境構築

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
Docker:WordPress:環境構築 [2023/05/13 21:31] – 削除 - 外部編集 (Unknown date) 127.0.0.1Docker:WordPress:環境構築 [2025/04/12 05:15] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
 +# 環境構築
 +
 +
 +参考:
 +
 +- [Dockerを使ってサクッとHTTPS対応WordPress環境を構築する | 気さくなエンジニ屋](https://4mo.co/start-wordpress-with-docker/#check-container-log)
 +- [Apacheでマルチドメイン証明書で複数のSSLサイトを構成する](https://ssl-process.com/support/etc/apache_multidomain/index.php)
 +- [proxies - Reverse proxy and auto_complete with mixed content - Drupal Answers](https://drupal.stackexchange.com/questions/309701/reverse-proxy-and-auto-complete-with-mixed-content)
 +
 +##### 環境
 +
 +- CentOS Stream 9 (ホスト環境)
 +- ホストに Apache 2.4.53をインストール済み
 +- SSL証明書として Let's Encrypt を利用
 +- ホストに対してhttps通信が可能
 +- ホストのグローバルIPアドレスに関連付けされたドメイン名を取得済み
 +- Docker 20.10.21 がインストール済み
 +
 +##### 構成
 +
 +```
 +--->[ホストのApache]--->[WordPressコンテナ]<---->[MYSQLコンテナ]
 +```
 +
 +##### 方針
 +
 +WordPress用に新しくサブドメインを登録する。
 +
 +そのサブドメインにアクセスしてきたら、Apacheに設定したリバースプロキシでWordPressコンテナに通信を転送する。
 +
 +また、SSL証明書はホスト上のApacheにて設定する。
 +
 +##### サブドメイン登録
 +
 +このページに書かれている方法でサブドメインを登録する。[[ネットワーク:サブドメイン|サブドメイン参考]]
 +
 +以下では「abc.example.com」を例に記載する。
 +
 +##### SSL証明書の発行
 +
 +下記のコマンドを実行してSSL証明書を発行する。
 +
 +```
 +$ certbot certonly --webroot -w <ドキュメントルート> -d abc.example.com
 +```
 +
 +##### Apacheの設定
 +
 +「/etc/httpd/conf.d/ssl.conf」に下記を追記する。
 +
 +```
 +<VirtualHost abc.example.com:443>
 +   ServerName wp.sirokujira.com
 +   SSLEngine on
 +   SSLProtocol all
 +   SSLCertificateFile <証明書の絶対パス>/cert.pem
 +   SSLCertificateKeyFile <証明書の絶対パス>/privkey.pem
 +   SSLCertificateChainFile <証明書の絶対パス>/chain.pem
 +
 +   ProxyPreserveHost On
 +   ProxyPass / http://localhost:8082/
 +   ProxyPassReverse / http://localhost:8082/
 +   RequestHeader set X-Forwarded-Proto "https" ※1
 +   RequestHeader set X-Forwarded-Port "443"    ※1
 +</VirtualHost>
 +
 +※1. この設定がないと、混在コンテンツとなりjavascriptやcss等が正常に読み込まれない
 +```
 +
 +設定ファイルを編集後、下記のApacheを再起動する。
 +
 +```
 +$ sudo systemctl restart httpd
 +```
 +
 +##### docker-compose.yml の作成
 +
 +任意のディレクトリで下記内容の「docker-compose.yml」を作成する。
 +
 +```
 +version: '3'
 +services:
 +  wordpress:
 +    image: wordpress:php8.0-apache
 +    container_name: wordpress
 +    ports:
 +      - 8082:80
 +    volumes:
 +      - ./wp-data:/var/www/html
 +    environment:
 +      WORDPRESS_DB_HOST: wordpress-db
 +      WORDPRESS_DB_USER: <ユーザ名>
 +      WORDPRESS_DB_PASSWORD: <パスワード>
 +      WORDPRESS_DB_NAME: <DB名>
 +    depends_on:
 +      - wordpress-db
 +    restart: always
 +
 +  wordpress-db:
 +    image: mysql:8.0
 +    container_name: wordpress-db
 +    ports:
 +      - 3308:3306
 +    environment:
 +      TZ: Asia/Tokyo
 +      MYSQL_ROOT_PASSWORD: <ルートパスワード>
 +      MYSQL_DATABASE: <DB名>
 +      MYSQL_USER: <ユーザ名>
 +      MYSQL_PASSWORD: <パスワード>
 +    volumes:
 +      - ./db-data:/var/lib/mysql
 +    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
 +    restart: always
 +```
 +
 +##### コンテナ作成
 +
 +```
 +$ docker-compose up -d
 +```
 +
 +コマンド実行後、WordPress と MySQL の接続に数十秒かかる。
 +
 +その後、%%「https://abc.example.com」%%にアクセスして、WordPressのインストール画面が表示されること
 +