GNU/Linux >> Linux の 問題 >  >> Linux

Docker Compose、Nginx、SSL を使用した Apache で WordPress をインストールする

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 サーバーでも行うことができます。

前提条件

<オール>
  • Ubuntu 22.04 に Docker をインストールする
  • Ubuntu 22.04 に Docker Compose をインストールします。
  • 上記の手順をすべて完了していることを確認してください

    • サーバーの 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 をヒット 続いて YENTER ファイルを保存して終了します。

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

    • バージョン :Docker Engine と互換性のある Compose ファイルのバージョン。ここで互換性を確認できます。
    • サービス :wordpress という名前の 4 つのサービスがあります 、 mariadbnginx および 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 をヒット 続いて YENTER ファイルを保存して終了します。

    Nginx サービスを再起動して、新しい構成を読み込みます。

    docker-compose restart nginx

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

    最もWordPress の高度なテクニックを学ぶ この簡単に学べるコースを今すぐ受講してください。

    結論

    これで、Nginx、Apache、PHP 8.1、MariaDB を使用して WordPress をインストールおよびセットアップする方法と、Ubuntu 22.04 で Docker および Docker Compose を使用して Let’s Encrypt を使用する方法を学習しました。

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


    Linux
    1. UbuntuにDockerでWordPressをインストールする方法

    2. DockerコンテナにApacheを使用してModSecurityをインストールする

    3. LinuxにApacheを使用してWordPressをインストールする

    1. Ubuntu18.04にNginxでWordPressをインストールする方法

    2. Ubuntu18.04にApacheを使用してWordPressをインストールする方法

    3. SSL を使用して CentOS 6.2 にソースから Apache 2.4.2 をインストールする方法

    1. CentOS7にNginxを使用してWordPressをインストールする方法

    2. CentOS7にApacheを使用してWordPressをインストールする方法

    3. AlmaLinux8にNginxでWordPressをインストールする方法