WordPress を Docker、Nginx、Apache with SSL でインストールします。このガイドでは、Docker、Docker Compose、Nginx、Apache、PHP 8.1、MariaDB、および Let’s Encrypt を使用して最高のパフォーマンスを設定し、Ubuntu 22.04 で WordPress を実行する方法を学習します。
また、ボリュームを作成して、コンテナーの再起動中に変更または更新が保持されるようにします。
このセットアップは、Ubuntu 22.04 OS を実行するインスタンスを使用して Google クラウドでテストされています。この設定は、AWS、Azure、DigitalOcean などのクラウド サービス、または専用サーバーや VPS サーバーでも行うことができます。
前提条件
<オール>上記の手順をすべて完了していることを確認してください
- サーバーの IP アドレスを指しているドメイン
- Docker のインストールと構成
- Docker Compose のインストールと構成
すべての前提条件が完了したら、WordPress のセットアップと構成に進むことができます。
ステップ 1:プロジェクト ディレクトリを作成する
サーバーに SSH で接続し、wp-project
という名前の新しいプロジェクト ディレクトリを作成することから始めます。 .必要な名前を付けることもできます。
mkdir wp-project
ステップ 2:Docker Compose YML ファイルを作成する
プロジェクト ディレクトリ内に移動し、次の構成で新しい docker-compose.yml ファイルを作成します。
cd wp-project
新しい docker-compose.yml
を作成します ファイル。
nano docker-compose.yml
以下の内容全体をコピーして、ファイルに貼り付けてください。
以下の環境変数を必ず置き換えてください。
version: "3.9" services: wordpress: container_name: wordpress image: wordpress:php8.1-apache restart: always stdin_open: true tty: true environment: WORDPRESS_DB_HOST: mariadb WORDPRESS_DB_USER: db_user WORDPRESS_DB_PASSWORD: db_user_pass WORDPRESS_DB_NAME: db_name volumes: - wordpress_data:/var/www/html - ./wordpress:/var/www/html mariadb: container_name: mariadb image: mariadb restart: always environment: MYSQL_DATABASE: db_name MYSQL_USER: db_user MYSQL_PASSWORD: db_user_pass MYSQL_RANDOM_ROOT_PASSWORD: 'root_pass' volumes: - db_data:/var/lib/mysql nginx: container_name: nginx image: nginx:latest restart: unless-stopped ports: - 80:80 - 443:443 volumes: - ./nginx/conf:/etc/nginx/conf.d - ./certbot/conf:/etc/nginx/ssl - ./certbot/data:/var/www/html certbot: container_name: certbot image: certbot/certbot:latest command: certonly --webroot --webroot-path=/var/www/html --email [email protected] --agree-tos --no-eff-email -d domain.com -d www.domain.com volumes: - ./certbot/conf:/etc/letsencrypt - ./certbot/logs:/var/log/letsencrypt - ./certbot/data:/var/www/html volumes: db_data: wordpress_data:
CTRL-X
をヒット 続いて Y
と ENTER
ファイルを保存して終了します。
構成の詳細は次のとおりです。
- バージョン :Docker Engine と互換性のある Compose ファイルのバージョン。ここで互換性を確認できます。
- サービス :
wordpress
という名前の 4 つのサービスがあります 、mariadb
、nginx
およびcertbot
. - 画像 :Docker ハブで利用可能な PHP 8.1、Apache、Mariadb、Nginx、および Certbot イメージを備えた最新の WordPress を使用します。
- ボリューム :
wordpress
:このディレクトリは、コンテナ内の Web ルートとして使用するディレクトリと同期するように構成されています。conf
:ここでは、コンテナー内のデフォルトの Nginx conf.d フォルダーと同期する Nginx 構成ファイルを配置します。cedtbot/conf
:ここで SSL 証明書を受け取ります。これは、コンテナー内の希望するフォルダーと同期されます。ports
:リストされたポートをリッスンするようにコンテナーを構成します。command
:SSL 証明書を受信するために使用されるコマンド。
- 環境 :ここでは、WordPress イメージで使用できるすべての環境変数をリストします。
WORDPRESS_DB_HOST
:ここでは、MariaDB コンテナーのサービス名を使用しています。WORDPRESS_DB_USER
:mariadb サービスで構成したものと同じです。WORDPRESS_DB_PASSWORD
:mariadb サービスで構成したものと同じです。WORDPRESS_DB_NAME
:mariadb サービスで構成したものと同じです。
ステップ 3:Nginx を構成する
docker-compose.yml
のとおり default.conf
を作成するために必要な構成 nginx/conf
内のファイル ディレクトリ。
docker-compose.yml
のほかにディレクトリを作成します 構成ファイルを保持するファイル。
mkdir -p nginx/conf
default.conf
という名前のファイルを作成します .
nano nginx/conf/default.conf
次の構成を配置します。ここでは、Apache を実行する wordpress コンテナーにリバース プロキシ構成を使用します。
server { listen [::]:80; listen 80; server_name domain.com www.domain.com; root /var/www/html; index index.php; location ~ /.well-known/acme-challenge { allow all; root /var/www/html; } location / { try_files $uri @apache; } location ~ ^/.user.ini { deny all; } location ~* .(svg|svgz)$ { types {} default_type image/svg+xml; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location @apache { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://wordpress:80; } location ~[^?]*/$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://wordpress:80; } location ~ .php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://wordpress:80; } location ~/. { deny all; access_log off; log_not_found off; } }
CTRL-X
をヒット 続いて Y
そして ENTER
ファイルを保存して終了します。
これで、docker Compose 構成と Nginx 構成ができました。
ステップ 4:Docker Compose を使用して WordPress をデプロイする
次のコマンドを使用してコンテナーを開始します。コンテナーが開始されると、SSL 証明書を受け取ります。
docker-compose up -d
すべてのコンテナが開始されると、2 つの追加ディレクトリ certbot
が表示されます。 と wordpress
docker-compose.yml
と一緒に作成されました ファイル。
ディレクトリ wordpress
WordPress ウェブサイトのソース コードをすべて保持します。
ディレクトリ certbot
SSL 証明書に関連するすべてのファイルを保持します。
コンテナーを表示するには、次のコマンドを実行できます。
docker-compose ps
ステップ 5:Let’s Encrypt SSL を Nginx で構成する
Let’s Encrypt SSL 証明書を受け取ったら、HTTPS を構成し、HTTPS へのリダイレクトをセットアップできます。
default.conf
を編集します 次の変更を加えます。
nano nginx/conf/default.conf
server { listen [::]:80; listen 80; server_name domain.com www.domain; return 301 https://www.domain.com$request_uri; } server { listen [::]:443 ssl http2; listen 443 ssl http2; server_name domain.com; ssl_certificate /etc/nginx/ssl/live/domain.com/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/live/domain.com/privkey.pem; return 301 https://www.domain.com$request_uri; } server { listen [::]:443 ssl http2; listen 443 ssl http2; server_name www.domain.com; ssl_certificate /etc/nginx/ssl/live/domain.com/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/live/domain.com/privkey.pem; root /var/www/html; index index.php; location ~ /.well-known/acme-challenge { allow all; root /var/www/html; } location / { try_files $uri @apache; } location ~ ^/.user.ini { deny all; } location ~* .(svg|svgz)$ { types {} default_type image/svg+xml; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location @apache { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://wordpress:80; } location ~[^?]*/$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://wordpress:80; } location ~ .php$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_pass http://wordpress:80; } location ~/. { deny all; access_log off; log_not_found off; } }
CTRL-X
をヒット 続いて Y
と ENTER
ファイルを保存して終了します。
Nginx サービスを再起動して、新しい構成を読み込みます。
docker-compose restart nginx
これで、ブラウザからドメイン名を確認できます。 HTTPS へのリダイレクトが表示され、インストールを完了するための WordPress インストール ページが表示されます。
最もWordPress の高度なテクニックを学ぶ この簡単に学べるコースを今すぐ受講してください。
結論
これで、Nginx、Apache、PHP 8.1、MariaDB を使用して WordPress をインストールおよびセットアップする方法と、Ubuntu 22.04 で Docker および Docker Compose を使用して Let’s Encrypt を使用する方法を学習しました。
御時間ありがとうございます。問題やフィードバックに直面した場合は、下にコメントを残してください。