もっと詳しく

Docker、Nginx、ApachewithSSLを使用してWordPressをインストールします。 このガイドでは、Docker、Docker Compose、Nginx、Apache、PHP 8.1、MariaDB、Let’s Encryptを使用して、Ubuntu22.04でWordPressを実行するための最高のパフォーマンス設定を行う方法を学習します。

また、ボリュームを作成して、コンテナーの再起動中に変更または更新が保持されるようにします。

このセットアップは、Ubuntu22.04OSを実行しているインスタンスを使用してGoogleクラウドでテストされています。 このセットアップは、AWS、Azure、DigitalOceanなどのクラウドサービス、または専用サーバーやVPSサーバーでも行うことができます。

前提条件

  1. Ubuntu22.04にDockerをインストールします
  2. DockerComposeをUbuntu22.04にインストールします。

上記のすべての手順を完了していることを確認してください

  • ドメインがサーバーのIPアドレスを指しています。
  • Dockerがインストールおよび構成されています。
  • DockerComposeがインストールおよび構成されています。

すべての前提条件が完了したら、WordPressのセットアップと構成に進むことができます。

ステップ1:プロジェクトディレクトリを作成する

サーバーにSSHで接続し、次の名前の新しいプロジェクトディレクトリを作成することから始めます。 wp-project。 必要に応じて名前を付けることもできます。

mkdir wp-project

ステップ2:DockerComposeYMLファイルを作成する

次に、プロジェクトディレクトリ内を移動し、次の構成で新しい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 に続く YENTER ファイルを保存して終了します。

構成の詳細は次のとおりです。

  • バージョン:Dockerエンジンと互換性のあるファイルバージョンを作成します。 互換性を確認できます ここ
  • サービス:ここに3つのサービスがあります wordpressnginxcertbot
  • 画像:PHP 8.1、Apache、 NginxCertbot Dockerハブで利用可能なイメージ。
  • ボリューム
    • wordpress:このディレクトリを、コンテナ内のWebルートとして使用するディレクトリと同期するように構成しました。
    • conf:ここでは、コンテナー内のデフォルトのNginxconf.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 に続く YENTER ファイルを保存して終了します。

これで、dockercompose構成とNginx構成ができました。

ステップ4:DockerComposeを使用してWordPressをデプロイする

次のコマンドを使用してコンテナを起動します。コンテナが起動するとSSL証明書を受け取ります。

docker-compose up -d

すべてのコンテナが開始されると、2つの追加ディレクトリが表示されます certbotwordpress あなたと一緒に作成 docker-compose.yml ファイル。

ディレクトリ wordpress すべてのWordPressWebサイトのソースコードを保持します。

ディレクトリ certbot SSL証明書に関連するすべてのファイルを保持します。

コンテナを表示するには、次のコマンドを実行できます。

docker-compose ps

ステップ5:Let’sEncryptSSLを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 に続く YENTER ファイルを保存して終了します。

次に、Nginxサービスを再起動して、新しい構成をロードします。

docker-compose restart nginx

これで、ブラウザからドメイン名を確認できます。 HTTPSへのリダイレクトが表示され、WordPressのインストールページが表示されてインストールが完了します。

最も学ぶ WordPressの高度なテクニック この習得しやすいコースで今すぐ。

結論

これで、Nginx、Apache、PHP 8.1、MariaDBを使用してWordPressをインストールおよびセットアップする方法と、Ubuntu22.04でDockerおよびDockerComposeを使用して暗号化する方法を学習しました。

御時間ありがとうございます。 問題やフィードバックに直面した場合は、以下にコメントを残してください。

The post DockerNginxリバースプロキシを使用してWordPressをSSLを使用してApacheにインストールする appeared first on Gamingsym Japan.