動作環境
WordPress をコンテナで立ち上げる。
同一サーバで別のWebアプリも動作させているので、ホスト上でNGINXを稼働させる。
WordPress用のサブドメインを設定して、コンテナでWordPressを稼働させてNGINXからWordPressにつなぐ。
DBは、MySQLとして、WordPressと同様にコンテナで稼働させて、DockerComposeで起動する。
WordPress | dockerコンテナ( FPM版 ) |
DB | MySQL dockerコンテナ |
webサーバ | NGINX ホスト上で稼働 |
設定
docker-compose.yaml
基本的には、公式をベースに作成する。
ポイントは、/var/www/html をホストに作成して、volumes でつなぐ。
設定ファイルができたら、docker compose up -d で起動させたらひとまずOK。
version: '3'
services:
mysql:
image: mysql:8.0.35-bullseye
restart: always
environment:
MYSQL_DATABASE: WordPress
MYSQL_USER: wordpress
MYSQL_PASSWORD: pass
MYSQL_ROOT_PASSWORD: rootpass
TZ: Asia/Tokyo
volumes:
- db_data:/var/lib/mysql
expose:
- "3306"
networks:
wordpress_net:
ipv4_address: 172.99.0.2
wordpress:
depends_on:
- mysql
image: wordpress:6.4.2-php8.1-fpm
links:
- mysql
restart: always
volumes:
- /var/www/html:/var/www/html
environment:
WORDPRESS_DB_HOST: 172.99.0.2:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: pass
WORDPRESS_DB_NAME: WordPress
PHP_ERROR_LOG: /var/log/php-fpm/error.log
TZ: Asia/Tokyo
networks:
wordpress_net:
ipv4_address: 172.99.0.3
ports:
- "9000:80"
networks:
wordpress_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.99.0.0/24
volumes:
db_data:
NGINX blog.conf
サブドメインに対応したsever定義を.conf に定義する。
upstream で WordPressのコンテナとつなぐ。
fastcgi のパラメータについて、追加の定義をしておくことと、php と php 以外でWordPressアプリに渡すものと渡さないものを定義してしまうと良い。
upstream wordpress_php {
server 172.99.0.3:9000;
}
server{
listen 443 ssl;
server_name blog.k.com;
# データ転送サイズ上限値(デフォルトは1M)
client_max_body_size 1m;
ssl_session_timeout 15m;
#サーバー証明書
ssl_certificate /fullchain.pem;
ssl_certificate_key /privkey.pem;
ssl_protocols TLSv1.3;
ssl_ciphers ;
# WORDPRESSと同様のパスで、docker の volume で連鎖させる
root /var/www/html;
# WORDPRESS 用設定
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_read_timeout 60s;
proxy_set_header X-Forwarded-Proto $scheme;
fastcgi_pass wordpress_php;
}
}
fastcgi_params
WordPressで、どこまでの定義が必要なのかは確認をしていないが、以下の設定値で動いてはいる。
fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP 用の設定 fastcgi_param PHP_FLAG "session.auto_start=off \n suhosin.session.cryptua=off"; fastcgi_param PHP_VALUE "max_execution_time=60 \n session.gc_maxlifetime=10800"; # Custom headers for PHP fastcgi_param HTTP_AUTHORIZATION $http_authorization; fastcgi_param HTTP_USER_AGENT $http_user_agent; fastcgi_param HTTP_X_REAL_IP $remote_addr;
NGINX をリスタート( sudo systemctl restart nginx ) させて、https://blog.k.com にアクセス。
WordPressの初期設定が始まる。
コメント