WordPress Kurulumu ve Optimizasyonu: VPS Rehberi
VPS'te WordPress kurulumu ve optimizasyonu rehberi. LEMP stack, wp-config.php ayarları, dosya izinleri, SSL, OPcache performans optimizasyonu ve güvenlik sertleştirme.
İçindekiler
WordPress Kurulumu ve Optimizasyonu: VPS Rehberi
WordPress, dünya genelinde en yaygın kullanılan içerik yönetim sistemidir. Paylaşımlı hosting yerine VPS üzerinde WordPress çalıştırmak; daha fazla kontrol, daha iyi performans ve özelleştirme imkânı sunar. Bu rehberde LEMP stack üzerinde WordPress kurulumunu, yapılandırmasını ve optimizasyonunu ele alacağız.
Ön Hazırlık: LEMP Stack
WordPress için LEMP stack (Linux + Nginx + MySQL + PHP) önerilir.
# Sistem güncellemesi
sudo apt update && sudo apt upgrade -y
# Nginx kur
sudo apt install nginx -y
sudo systemctl enable nginx
# MariaDB kur
sudo apt install mariadb-server -y
sudo systemctl enable mariadb
sudo mysql_secure_installation
# PHP 8.2 ve WordPress için gerekli eklentiler
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl \
php8.2-mbstring php8.2-zip php8.2-gd php8.2-imagick php8.2-intl \
php8.2-bcmath php8.2-soap -y
sudo systemctl enable php8.2-fpm
WordPress Veritabanı Oluşturma
sudo mysql -u root -p
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'guclu-sifre-buraya';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
WordPress İndirme ve Kurulum
# WordPress'i indir
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
# Web dizinine taşı
sudo mv wordpress /var/www/mysite.com
# Dosya izinlerini ayarla
sudo chown -R www-data:www-data /var/www/mysite.com
sudo find /var/www/mysite.com -type d -exec chmod 755 {} \;
sudo find /var/www/mysite.com -type f -exec chmod 644 {} \;
wp-config.php Yapılandırması
# Örnek config dosyasını kopyala
cd /var/www/mysite.com
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
// Veritabanı ayarları
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'guclu-sifre-buraya' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', 'utf8mb4_unicode_ci' );
// Güvenlik anahtarları (https://api.wordpress.org/secret-key/1.1/salt/ adresinden al)
define('AUTH_KEY', 'benzersiz-deger-1');
define('SECURE_AUTH_KEY', 'benzersiz-deger-2');
define('LOGGED_IN_KEY', 'benzersiz-deger-3');
define('NONCE_KEY', 'benzersiz-deger-4');
define('AUTH_SALT', 'benzersiz-deger-5');
define('SECURE_AUTH_SALT', 'benzersiz-deger-6');
define('LOGGED_IN_SALT', 'benzersiz-deger-7');
define('NONCE_SALT', 'benzersiz-deger-8');
// HTTPS arkasında çalışıyorsa
define('FORCE_SSL_ADMIN', true);
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
// Dosya düzenlemeyi devre dışı bırak (güvenlik)
define('DISALLOW_FILE_EDIT', true);
// Otomatik güncelleme ayarları
define('WP_AUTO_UPDATE_CORE', 'minor');
// Bellek limiti
define('WP_MEMORY_LIMIT', '256M');
Nginx Yapılandırması (WordPress için)
sudo nano /etc/nginx/sites-available/mysite.com
server {
listen 80;
server_name mysite.com www.mysite.com;
root /var/www/mysite.com;
index index.php;
# WordPress permalink yapısı
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP-FPM
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Güvenlik: xmlrpc.php'yi engelle
location = /xmlrpc.php {
deny all;
}
# Güvenlik: wp-config.php'ye erişimi engelle
location = /wp-config.php {
deny all;
}
# Gizli dosyalara erişimi engelle
location ~ /\. {
deny all;
}
# Statik dosyalar için cache
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
log_not_found off;
}
# Yükleme boyutu
client_max_body_size 64M;
access_log /var/log/nginx/mysite.com.access.log;
error_log /var/log/nginx/mysite.com.error.log;
}
sudo ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
SSL Sertifikası
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d mysite.com -d www.mysite.com
PHP Optimizasyonu (OPcache)
sudo nano /etc/php/8.2/fpm/php.ini
; OPcache ayarları
opcache.enable = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 2
opcache.save_comments = 1
; WordPress için önerilen ayarlar
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_vars = 3000
sudo systemctl restart php8.2-fpm
WordPress Güvenlik Sertleştirme
# wp-login.php için IP kısıtlaması (Nginx)
# /etc/nginx/sites-available/mysite.com içine ekle:
location = /wp-login.php {
allow 1.2.3.4; # Kendi IP adresiniz
deny all;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
# Dosya izinlerini kontrol et
sudo find /var/www/mysite.com -type f -name '*.php' -exec chmod 644 {} \;
sudo chmod 600 /var/www/mysite.com/wp-config.php
wp-config.php dosyasının izinlerini 600 olarak ayarlayın. Bu dosya veritabanı şifrenizi içerir.
Performans Optimizasyonu
Nginx FastCGI Cache
# /etc/nginx/nginx.conf içine http bloğuna ekle:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
# Site yapılandırmasına ekle:
set $skip_cache 0;
# POST istekleri ve giriş yapmış kullanıcılar için cache'i atla
if ($request_method = POST) { set $skip_cache 1; }
if ($query_string != "") { set $skip_cache 1; }
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php") { set $skip_cache 1; }
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; }
location ~ \.php$ {
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-FastCGI-Cache $upstream_cache_status;
# ... diğer fastcgi ayarları
}
REXE sunucularında WordPress için en az 2 GB RAM önerilir. Yüksek trafikli siteler için 4 GB+ RAM ve SSD disk tercih edin.
Sonuç
WordPress siteniz artık VPS üzerinde LEMP stack ile çalışıyor, SSL ile güvenli ve OPcache ile optimize edilmiş durumda. Düzenli yedekleme, güvenlik güncellemeleri ve performans izleme ile sitenizi sağlıklı tutun.
İlgili Makaleler
Node.js Uygulaması Deploy Etme: PM2 ve Nginx
Node.js uygulamasını VPS'e deploy etme rehberi. nvm ile Node.js kurulumu, PM2 process manager, Nginx reverse proxy, SSL sertifikası ve environment variables yönetimi.
PHP Uygulaması Deploy Etme: LAMP ve LEMP Stack
PHP uygulamasını VPS'e deploy etme rehberi. LAMP ve LEMP stack karşılaştırması, Apache/Nginx + PHP-FPM + MySQL kurulumu, sanal host yapılandırması ve PHP sürüm yönetimi.
Python/Django Deploy: Gunicorn ve Nginx ile Üretim
Python/Django uygulamasını VPS'e deploy etme rehberi. Virtualenv kurulumu, Django üretim ayarları, Gunicorn WSGI sunucusu, Nginx reverse proxy, systemd servisi ve statik dosya yönetimi.