GNU/Linux >> Belajar Linux >  >> Linux

Instal WordPress dengan Docker Compose, Nginx, Apache dengan SSL

Instal WordPress dengan Docker, Nginx, Apache dengan SSL. Dalam panduan ini Anda akan belajar cara membuat pengaturan kinerja terbaik dengan Docker, Docker Compose, Nginx, Apache, PHP 8.1, MariaDB dan Let's Encrypt untuk menjalankan WordPress di Ubuntu 22.04.

Kami juga akan membuat volume sehingga perubahan atau pembaruan akan dipertahankan saat penampung dimulai ulang.

Pengaturan ini diuji di Google cloud dengan instance yang menjalankan OS Ubuntu 22.04. Anda juga dapat melakukan penyiapan ini di layanan cloud apa pun seperti AWS atau Azure atau DigitalOcean atau server khusus atau VPS.

Prasyarat

  1. Instal Docker di Ubuntu 22.04
  2. Instal Docker Compose di Ubuntu 22.04.

Pastikan Anda telah menyelesaikan semua langkah yang disebutkan di atas

  • Domain menunjuk ke alamat IP server Anda.
  • Docker diinstal dan dikonfigurasi.
  • Docker Compose diinstal dan dikonfigurasi.

Setelah Anda menyelesaikan semua prasyarat, Anda dapat melanjutkan untuk membuat pengaturan dan mengkonfigurasi WordPress.

Langkah 1:Buat direktori proyek

SSH ke server Anda dan mulai dengan membuat direktori proyek baru bernama wp-project . Anda juga dapat memberi nama apa pun yang Anda butuhkan.

mkdir wp-project

Langkah 2:Buat File YML Tulis Docker

Sekarang navigasikan ke dalam direktori proyek dan buat file docker-compose.yml baru dengan konfigurasi berikut.

cd wp-project

Buat docker-compose.yml baru berkas.

nano docker-compose.yml

Salin seluruh konten di bawah dan tempel di file.

Pastikan untuk mengganti variabel lingkungan yang disebutkan di bawah ini.

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:

Tekan CTRL-X diikuti oleh Y dan ENTER untuk menyimpan dan keluar dari file.

Berikut detail konfigurasinya.

  • versi :Buat versi file yang kompatibel dengan Docker Engine. Anda dapat memeriksa kompatibilitasnya di sini.
  • layanan :di sini kami memiliki 4 layanan bernama wordpress , mariadb , nginx dan certbot .
  • gambar :Kami menggunakan WordPress terbaru dengan gambar PHP 8.1, Apache, Mariadb, Nginx, dan Certbot yang tersedia di hub Docker.
  • volume :
    • wordpress :kami telah mengonfigurasi direktori ini untuk disinkronkan dengan direktori yang ingin kami gunakan sebagai root web di dalam wadah.
    • conf :disini kita akan menempatkan file konfigurasi Nginx untuk disinkronkan dengan folder default Nginx conf.d di dalam container.
    • cedtbot/conf :ini adalah tempat kita akan menerima sertifikat SSL dan ini akan disinkronkan dengan folder yang kita inginkan di dalam container.
    • ports :konfigurasikan container untuk mendengarkan port yang terdaftar.
    • command :perintah yang digunakan untuk menerima sertifikat SSL.
  • lingkungan :di sini kami mencantumkan semua variabel lingkungan yang tersedia untuk gambar WordPress.
    • WORDPRESS_DB_HOST :Di sini kami menggunakan nama layanan wadah MariaDB.
    • WORDPRESS_DB_USER :Sama seperti yang telah kita konfigurasikan di layanan mariadb.
    • WORDPRESS_DB_PASSWORD :Sama seperti yang telah kita konfigurasikan di layanan mariadb.
    • WORDPRESS_DB_NAME :Sama seperti yang telah kita konfigurasikan di layanan mariadb.

Langkah 3:Konfigurasi Nginx

Sesuai dengan docker-compose.yml konfigurasi kita perlu membuat default.conf file di dalam nginx/conf direktori.

Buat direktori selain docker-compose.yml your Anda file untuk menyimpan file konfigurasi.

mkdir -p nginx/conf

Buat file bernama default.conf .

nano nginx/conf/default.conf

Tempatkan konfigurasi berikut, di sini kita menggunakan konfigurasi reverse proxy untuk container wordpress yang menjalankan Apache.

 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;
    }
} 

Tekan CTRL-X diikuti oleh Y dan ENTER untuk menyimpan dan keluar dari file.

Sekarang Anda memiliki konfigurasi penulisan buruh pelabuhan dan konfigurasi Nginx Anda.

Langkah 4:Terapkan WordPress dengan Docker Compose

Mulai container menggunakan perintah berikut, Anda akan menerima sertifikat SSL setelah container dimulai.

docker-compose up -d

Setelah semua wadah dimulai, Anda akan melihat dua direktori tambahan certbot dan wordpress dibuat di samping docker-compose.yml . Anda berkas.

Direktori wordpress menyimpan semua kode sumber situs WordPress Anda.

Direktori certbot menyimpan semua file yang terkait dengan sertifikat SSL Anda.

Untuk melihat kontainer, Anda dapat menjalankan perintah berikut.

docker-compose ps

Langkah 5:Konfigurasi Let's Encrypt SSL dengan Nginx

Karena Anda telah menerima sertifikat Let's Encrypt SSL, Anda dapat mengonfigurasi HTTPS dan mengatur pengalihan ke HTTPS.

Edit default.conf dan buat perubahan berikut.

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;
    }
} 

Tekan CTRL-X diikuti oleh Y dan ENTER untuk menyimpan dan keluar dari file.

Sekarang restart layanan Nginx untuk memuat konfigurasi baru.

docker-compose restart nginx

Sekarang Anda dapat memeriksa nama domain Anda dari browser Anda. Anda akan mendapatkan pengalihan ke HTTPS dan Anda akan melihat halaman instalasi WordPress untuk menyelesaikan instalasi.

Pelajari Teknik WordPress Tingkat Lanjut dengan kursus yang mudah dipelajari ini sekarang.

Kesimpulan

Sekarang Anda telah mempelajari cara menginstal dan mengatur WordPress dengan Nginx, Apache, PHP 8.1, MariaDB dan Let's Encrypt dengan Docker dan Docker Compose di Ubuntu 22.04.

Terima kasih atas waktunya. Jika Anda menghadapi masalah atau umpan balik, silakan tinggalkan komentar di bawah.


Linux
  1. Cara Menginstal WordPress dengan Docker di Ubuntu

  2. Instal ModSecurity dengan Apache di Docker Container

  3. Instal WordPress di Linux dengan Apache

  1. Cara Menginstal WordPress dengan Nginx di Ubuntu 18.04

  2. Cara Menginstal WordPress dengan Apache di Ubuntu 18.04

  3. Cara Menginstal Apache 2.4.2 dari Sumber di CentOS 6.2 dengan SSL

  1. Cara Menginstal WordPress dengan Nginx di CentOS 7

  2. Cara Menginstal WordPress dengan Apache di CentOS 7

  3. Cara Instal WordPress dengan Nginx di AlmaLinux 8