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
- Instal Docker di Ubuntu 22.04
- 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
dancertbot
. - 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.