Docker Compose ile WordPress Kurulumu: Kapsamlı Rehber
Anahtar Kelime: Docker Compose WordPress Kurulumu
📘 Bu Rehberde Ne Öğreneceksiniz?
Bu rehberde, klasik LAMP veya LEMP kurulumlarıyla uğraşmadan Docker Compose kullanarak modern bir WordPress altyapısı kuracaksınız.
MySQL veritabanı, Nginx web sunucusu ve Let’s Encrypt SSL sertifikalarını konteyner mimarisiyle entegre edeceksiniz.
Son aşamada SSL sertifikalarının otomatik yenilenmesini sağlayacaksınız.
🔧 Ön Hazırlıklar
Devam etmeden önce aşağıdakiler hazır olmalıdır:
- Ubuntu yüklü bir sanal sunucu (Rabisu Bulut önerilir)
- Docker ve Docker Compose kurulu olmalı
- Alan adı ve DNS A kayıtları sunucu IP’sine yönlendirilmiş olmalı
- 80 ve 443 portları açık olmalı
1ï¸âƒ£ Web Sunucusu (Nginx) Yapılandırmasını Tanımlama
- İlk aşamada proje dizinini oluşturup Nginx yapılandırmasını hazırlıyoruz.
Bu aşamada SSL henüz aktif edilmez.
mkdir wordpress && cd wordpress
- Bu komut WordPress için ana proje dizinini oluşturur.
mkdir nginx-conf
- Nginx konfigürasyon dosyaları bu dizinde tutulur.
nano nginx-conf/nginx.conf
- Bu komut Nginx yapılandırma dosyasını açar.
server {
listen 80;
listen [::]:80;
server_name siteadresiniz.com www.siteadresiniz.com;
root /var/www/html;
index index.php index.html;
location ~ /.well-known/acme-challenge {
allow all;
root /var/www/html;
}
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass wordpress:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
Bu yapı PHP isteklerini WordPress konteynerine yönlendirir.
2ï¸âƒ£ Ortam DeÄŸiÅŸkenlerini (.env) Tanımlama
- Veritabanı şifrelerini güvenli şekilde saklamak için .env dosyası kullanılır.
nano .env
Bu dosya gizli verileri tutar.
MYSQL_ROOT_PASSWORD=guclu_root_sifresi
MYSQL_USER=wp_kullanici
MYSQL_PASSWORD=wp_db_sifresi
- Bu bilgiler MySQL ve WordPress bağlantısı için kullanılır.
- .env dosyasını sürüm kontrolünden hariç tutun:
nano .gitignore
.env
nano .dockerignore
.env
.git
3ï¸âƒ£ Docker Compose Servislerini OluÅŸturma
- Tüm servisleri tek dosyada tanımlıyoruz.
nano docker-compose.yml
Bu dosya tüm konteynerleri yönetir.
version: '3'
services:
db:
image: mysql:8.0
container_name: db
restart: unless-stopped
env_file: .env
environment:
- MYSQL_DATABASE=wordpress
volumes:
- dbdata:/var/lib/mysql
command: --default-authentication-plugin=mysql_native_password
networks:
- app-network
wordpress:
image: wordpress:php8.2-fpm
container_name: wordpress
depends_on:
- db
restart: unless-stopped
env_file: .env
environment:
- WORDPRESS_DB_HOST=db:3306
- WORDPRESS_DB_USER=${MYSQL_USER}
- WORDPRESS_DB_PASSWORD=${MYSQL_PASSWORD}
- WORDPRESS_DB_NAME=wordpress
volumes:
- wordpress:/var/www/html
networks:
- app-network
webserver:
image: nginx:alpine
container_name: webserver
depends_on:
- wordpress
restart: unless-stopped
ports:
- "80:80"
volumes:
- wordpress:/var/www/html
- ./nginx-conf:/etc/nginx/conf.d
- certbot-etc:/etc/letsencrypt
networks:
- app-network
certbot:
image: certbot/certbot
container_name: certbot
depends_on:
- webserver
volumes:
- certbot-etc:/etc/letsencrypt
- wordpress:/var/www/html
command: certonly --webroot --webroot-path=/var/www/html \
--email [email protected] --agree-tos --no-eff-email --staging \
-d siteadresiniz.com -d www.siteadresiniz.com
volumes:
dbdata:
wordpress:
certbot-etc:
networks:
app-network:
driver: bridge
--staging parametresi test sertifikası alır ve limitleri korur.
4ï¸âƒ£ SSL Sertifikasını Alma
docker-compose up -d
- Tüm servisler arka planda başlatılır.
docker-compose logs certbot
“Congratulations†mesajı sertifikanın alındığını gösterir.
Başarılıysa --staging kaldırılıp gerçek sertifika alınır:
docker-compose up --force-recreate --no-deps certbot
5ï¸âƒ£ HTTPS Yapılandırmasını Tamamlama
- Nginx yapılandırması HTTPS destekleyecek şekilde güncellenir.
- HTTP trafiği otomatik olarak HTTPS’e yönlendirilir.
- Bu dosya önerilen SSL güvenlik ayarlarını indirir.
curl -sSLo nginx-conf/options-ssl-nginx.conf \
https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf
- 443 portunu aktif edin:
ports:
- "80:80"
- "443:443"
docker-compose up -d --force-recreate --no-deps webserver
6ï¸âƒ£ WordPress Kurulumunu Web Arayüzünden Tamamlama
- Tarayıcıdan şu adrese gidin:
https://siteadresiniz.com
- Dil seçimi yapın, yönetici bilgilerini girin ve kurulumu tamamlayın.
7ï¸âƒ£ SSL Sertifikasını Otomatik Yenileme
nano ssl_renew.sh
#!/bin/bash
cd /home/kullaniciadi/wordpress
docker-compose run certbot renew && docker-compose kill -s SIGHUP webserver
chmod +x ssl_renew.sh
sudo crontab -e
0 12 * * * /home/kullaniciadi/wordpress/ssl_renew.sh >> /var/log/cron.log 2>&1
Sertifikalar her gün otomatik kontrol edilir.
ⓠSıkça Sorulan Sorular (SSS)
1. Docker Compose neden tercih edilmeli? Kurulumu hızlandırır ve altyapıyı standartlaştırır.
2. Veriler silinir mi? Hayır, Docker volume kullanıldığı için kalıcıdır.
3. mysql_native_password neden gerekli? WordPress’in MySQL 8 uyumu için gereklidir.
4. SSL neden önce staging ile alınır? Let’s Encrypt limitlerine takılmamak için.
ğŸ Sonuç Bu rehberle Docker Compose kullanarak güvenli ve ölçeklenebilir bir WordPress altyapısı kurdunuz. Nginx, MySQL ve SSL tamamen konteyner tabanlı çalışır. Otomatik yenilenen sertifikalarla kesintisiz güvenlik saÄŸlanır.
Bu yapıyı Rabisu Bulut sunucularında dakikalar içinde hayata geçirebilirsiniz 🚀