פריסת WordPress: Docker, Nginx, Apache ו-SSL

לפשט את פריסת אתר WordPress שלך עם המדריך שלנו הקל לעקיבה. השתמש ב-Docker Compose, Nginx, Apache ו-SSL לתהליך התקנה חלקלק.

אנו גם ניצור נפחים כך שהשינויים או העדכונים ישמרו כשהמכונית תחדש פעולתה.

הסיטואציה זוקמת על Google Cloud עם מופע פועל מערכת הפעלה Ubuntu 22.04. אפשר גם לעשות את הסיטואציה הזו בכל שירותי ענן כמו AWS או, Azure או, DigitalOcean, או בשרתים מיוחדים או VPS.

הכרחיות

  1. התקן Docker ב-Ubuntu 22.04
  2. התקן Docker Compose ב-Ubuntu 22.04.

אנא וודא שביצעת את כל הצעדים שהוזכרו לעיל.

  • הפניה לכתובת ה-Domain לכתובת IP של השרת.
  • Docker מותקן ומוגדר.
  • Docker Compose מותקן ומוגדר.

ברגע שביצעת את כל ההכרחיות, תוכל להמשיך לעשות את הסיטואציה ולהגדיר את WordPress.

יצירת ספריית הפרויקט

SSH לשרת שלך והתחל על ידי יצירת ספריית פרויקט חדשה בשם wp-project. אפשר גם לקרוא לה כפי שאתה צריך.

 
mkdir wp-project

יצירת קובץ Docker Compose YML

עכשיו, נavigate בתוך ספריית הפרויקט ויצור קובץ חדש של docker-compose.yml עם הקבצים הבאים.

 
cd wp-project

יצירת קובץ חדש docker-compose.yml.

 
nano docker-compose.yml

העתק את כל התוכן שלהלן והדבק אותו בקובץ.

הגדרת Docker Compose

הקפד להחליף את משתני הסביבה המוזכרים להלן.

 

docker-compose.ymlversion: "3.9"
services:
    wordpress:
        container_name: wordpress
        image: wordpress:php8.2-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
    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 Compose: הסבר

הנה הפרטים של ההגדרה:

  • גרסה: צור גרסת קובץ מודופיס התואמת למנוע הדוקר. תוכל לבדוק את התאמות כאן.
  • שירותים: כאן, יש לנו ארבעה שירותים הנקראים WordPress, MariaDB, nginx, ו-certbot.
  • תמונה: אנו משתמשים באחרונה של WordPress עם PHP 8.2, אפטה, Mariadb, Nginx, ו-Certbotתמונות זמינות בחבילת הדוקר.
  • נפחים:
    • wordpress_data: קבענו את הספרייה הזו להיות מסונכרנת עם הספרייה שאנו רוצים להשתמש בה כשורש האינטרנט בתוך המכונית.
    • conf: כאן, נשים את קובץ תיקיית Nginx כדי להסתנכרן עם תיקיית conf.d של Nginx הברירת מחדל בתוך המכונית.
    • cedtbot/conf: כאן נקבל את הסימון המערכתי של המסמך, וזה יהיה מסונכרן עם התיקייה שאנו רוצים בתוך המכונית.
    • ports: קבע את המכונית להקשיב על היציאות המתוארות.
    • command: הפקודה שנמצאת בשימוש לקבלת הסימון המערכתי של המסמך.
  • סביבה: כאן אנו מפרטים את כל משתני הסביבה הזמינים עבור תמונת WordPress.
    • WORDPRESS_DB_HOST: כאן אנו משתמשים בשם השירות של מיכאלה המכונית.
    • WORDPRESS_DB_USER: כמו זה שהגדרנו בשירות mariadb.
    • WORDPRESS_DB_PASSWORD: כמו זה שהגדרנו בשירות mariadb.
    • WORDPRESS_DB_NAME: כמו זה שהגדרנו בשירות mariadb.

הגדרת Nginx

על פי ההתקנה של docker-compose.yml, אנו צריכים ליצור את הקובץ default.conf בתוך המדריך nginx/conf.

צור את המדריך שליד הקובץ docker-compose.yml שלך כדי לאחסן את הקובץ ההתקנה.

 
mkdir -p nginx/conf

צור קובץ בשם default.conf.

 
nano nginx/conf/default.conf

הכנס את ההתקנות הבאות; כאן אנו משתמשים בהתקנת ממרה הפוכה למכונת WordPress המרוצה באפטש.

 

nginx/conf/default.conf 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;
    }
} 

הכן CTRL-X ואז Y ו-ENTER כדי לשמור ולצאת מהקובץ.

עכשיו יש לך את הקונפיגורציה של docker-compose ואת הקונפיגורציה של Nginx.

לפרוס WordPress עם Docker Compose

התחל את המכונות באמצעות הפקודה הבאה; תקבל את התעודות SSL ברגע שהמכונות יתחילו.

 
docker-compose up -d

ברגע שכל המכונות מתחילות, תראה שני ספריות נוספות, certbot ו-WordPress, שנוצרו במקביל לקובץ docker-compose.yml שלך.

הספריה wordpress מחזיקה את כל קוד המקור של אתר ה-WordPress שלך.

הספריה certbot מחזיקה את כל הקבצים הקשורים לתעודות ה-SSL שלך.

כדי לראות את המכונות, אפשר לבצע את הפקודה הבאה.

 
docker-compose ps

להגדיר SSL של Let’s Encrypt עם Nginx

ברגע שקיבלת את התעודת SSL של Let’s Encrypt, אפשר להגדיר HTTPS ולהגדיר הפניה ל-HTTPS.

ערוך את default.conf ועשה את השינויים הבאים.

 
nano nginx/conf/default.conf

 

nginx/conf/default.confserver {
    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;
    }
} 

הכוון CTRL-X ואחריה Y ו-ENTER כדי לשמור ולצאת מהקובץ. 

עכשיו, אפשר להפעיל מחדש את שירות Nginx כדי לטעון את ההגדרות החדשות.

 
docker-compose restart nginx

עכשיו, אפשר לבדוק את שם הדומיין מהדפדפן שלך. תקבל הפניה ל-HTTPS, ותראה את דף ההתקנה של WordPress להשלמת ההתקנה.

פתרון בעיות

להלן כמה טיפים ל-SSH למכונות; ראה את יומני השגיאות.

SSH למכונת Docker

כדי להתחבר ב-SSH למכונת wordpress, אפשר להשתמש בפקודה הבאה.

 
docker-compose exec wordpress /bin/bash

להתחבר ב-SSH למיכל nginx, תוכל להשתמש בפקודה הבאה.

 
docker-compose exec nginx /bin/bash

בדוק יומני המיכלים

אפשר להשתמש בפקודה הבאה כדי לבדוק את יומני המיכלים באמצעות docker-compose

 
docker-compose logs -f

הפעל מחדש את המיכלים

אפשר להפעיל מחדש את המיכלים בקלות באמצעות הפקודה restart.

 
docker-compose restart container_name

החלף את container_name בשם המיכל שלך (wordpress, nginx, certbot)

עצור את כל מיכלי Docker

אפשר לעצור את כל מיכלי Docker באמצעות הפקודה הבאה.

docker-compose down

הסר את כל המיכלים והנפחים

אפשר להשתמש ב-docker-compose כדי להסיר את כל המיכלים והנפחים שלהם באמצעות הפקודה הבאה.

 
docker compose rm -fv

הסר את כל מיכלי Docker

הסר את כל המיכלים באמצעות הפקודה הבאה.

 
docker rm -f $(docker ps -a -q)

מחק את כל הנפחים

אפשר גם למחוק את כל הנפחים באמצעות הפקודה הבאה.

 
docker volume rm $(docker volume ls -q)

הפעל את כל המיכלים

באמצעות פקודת Docker compose אחת, אפשר להפעיל את כל המיכלים.

 
docker-compose up -d

מסקנה

עכשיו למדת איך להתקין ולהגדיר את WordPress עם Nginx, Apache, PHP 8.2, MariaDB ו-Let’s Encrypt באמצעות Docker ו-Docker Compose ב-Ubuntu 22.04.

תודה על הזמן שלך.

Source:
https://dzone.com/articles/wordpress-deployment-docker-nginx-apache-ssl