環境構築
参考:
環境
- 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のインストール画面が表示されること
コメント