לפשט את פריסת אתר WordPress שלך עם המדריך שלנו הקל לעקיבה. השתמש ב-Docker Compose, Nginx, Apache ו-SSL לתהליך התקנה חלקלק.
אנו גם ניצור נפחים כך שהשינויים או העדכונים ישמרו כשהמכונית תחדש פעולתה.
הסיטואציה זוקמת על Google Cloud עם מופע פועל מערכת הפעלה Ubuntu 22.04. אפשר גם לעשות את הסיטואציה הזו בכל שירותי ענן כמו AWS או, Azure או, DigitalOcean, או בשרתים מיוחדים או VPS.
הכרחיות
אנא וודא שביצעת את כל הצעדים שהוזכרו לעיל.
- הפניה לכתובת ה-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