# 環境構築 参考: - [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」に下記を追記する。 ``` 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 ※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: 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: 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のインストール画面が表示されること