
Ubuntu Server 22.04 LTS Kurulumu ve LEMP Stack Yapılandırması
Ubuntu Server 22.04 LTS nasıl kurulur? LEMP stack (Linux + Nginx + MySQL + PHP) kurulumu, SSL sertifikası, firewall yapılandırması ve WordPress deploy rehberi.
Ubuntu Server 22.04 LTS ile LEMP Stack Kurulumu
Ubuntu Server 22.04 LTS üzerine LEMP stack kurmak — Linux + Nginx + MySQL/MariaDB + PHP-FPM — aslında birkaç saatlik, adım adım ilerlenebilen bir iş. Ama "birkaç saatlik" deriz çünkü her bileşenin kendi yapılandırması var; doğrudan paket kurulumu değil. Nginx'in PHP-FPM ile konuşması, MariaDB'nin sadece localhost'u dinlemesi, PHP-OPcache'in aktif olması, SSL sertifikasının otomatik yenilenmesi — bunların hepsi kurulum sonrası dikkat gerektiren noktalar.
Bu rehber Ubuntu Server 22.04 LTS baz alınarak yazıldı. Buyukweb VDS'te KVM altyapısı üzerinde çalışır; root SSH erişimiyle sıfırdan başlarsınız. cPanel hosting'de bu rehberi uygulamanız gerekmez — cPanel ortamında web sunucusu (LiteSpeed) ve PHP çerçevesi zaten kurulu gelir, panel üzerinden yönetirsiniz.
LEMP Stack Nedir?
LEMP, dört bileşenin baş harflerinden oluşur:
| Harf | Bileşen | Görev |
|---|---|---|
| L | Linux (Ubuntu 22.04 LTS) | İşletim sistemi |
| E | Nginx (Engine-X) | Web sunucusu |
| M | MySQL 8.0 veya MariaDB 10.11 | Veritabanı |
| P | PHP-FPM 8.3 / 8.4 | Uygulama dili |
LAMP (Apache), yıllarca varsayılan web sunucusu yığınıydı. Nginx farkı nerede? Nginx event-driven (olay güdümlü) mimarisiyle çalışır; Apache'nin thread-per-request modeline kıyasla yüksek eş zamanlı bağlantılarda bellek tüketimi belirgin biçimde düşük kalır. 1.000 eş zamanlı bağlantıda Apache 200–400 MB RAM harcarken Nginx 20–40 MB civarında seyreder. Düşük RAM'li VDS (2–4 GB) için bu fark kritik hale gelir.
PHP-FPM (FastCGI Process Manager) ise PHP'yi Nginx'ten bağımsız bir süreç olarak yönetir; pool yapısıyla her site için ayrı PHP worker havuzu tanımlanabilir. Shared hosting'deki PHP handler yaklaşımından temel fark budur.
Ubuntu 22.04 LTS mi, 24.04 LTS mi?
Her ikisi de aktif LTS sürüm; hangisini seçeceğiniz kullanım senaryonuza göre değişir.
| Özellik | 22.04 LTS (Jammy) | 24.04 LTS (Noble) |
|---|---|---|
| Standart destek bitiş | Nisan 2027 | Nisan 2029 |
| ESM (genişletilmiş) bitiş | Nisan 2032 | Nisan 2034 |
| Olgunluk | Geniş ekosistem, yaygın rehber | Daha yeni çekirdek, bazı paketler olgunlaşıyor |
| PHP 8.3 resmi desteği | Ondrej PPA ile | Ondrej PPA ile |
| Üretim önerisi | Mevcut sistemler, kararlılık öncelikliyse | Yeni projeler, 2029+ planlıyorsanız |
Bu rehber 22.04 baz alır. 24.04'te komutlar büyük ölçüde aynıdır; paket versiyonlarında küçük farklar olabilir.
Buyukweb VDS siparişinde "Ubuntu 22.04 LTS" template seçilirse sistem hazır gelir; bu rehberdeki adımlar doğrudan uygulanabilir.
Sistem Hazırlığı
VDS'e root olarak SSH ile bağlandınız. İlk yapılandırma adımları:
# Paket listesini güncelle ve yükselt
apt update && apt upgrade -y
# Saat dilimi
timedatectl set-timezone Europe/Istanbul
timedatectl status
# Hostname
hostnamectl set-hostname webserver.siteniz.com
# Temel araçlar
apt install -y curl wget vim git htop unzip net-tools
Sudo Kullanıcısı Oluşturma
Root ile her zaman çalışmak yerine sudo yetkili ayrı bir kullanıcı oluşturun:
adduser ahmet
usermod -aG sudo ahmet
# Yeni oturum açarak test edin
su - ahmet
sudo whoami # "root" çıktısı beklenir
SSH Güvenliği
SSH anahtar tabanlı kimlik doğrulama, parola giriş denemelerini (brute-force) köklü biçimde engeller. SSH key kurulumu için ayrı rehberimize başvurabilirsiniz; özet adımlar:
Yerel makinenizde Ed25519 anahtar çifti oluşturun:
ssh-keygen -t ed25519 -C "webserver-key"
ssh-copy-id ahmet@SUNUCU_IP
Anahtar eklendikten sonra /etc/ssh/sshd_config içinde:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
systemctl restart ssh
Uyarı: PasswordAuthentication no ayarından önce anahtarla erişimin çalıştığından emin olun; aksi hâlde sunucuya kilitlenebilirsiniz.
fail2ban Kurulumu
apt install -y fail2ban
systemctl enable --now fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
maxretry = 5
bantime = 3600
findtime = 600
systemctl restart fail2ban
fail2ban-client status sshd
UFW Güvenlik Duvarı
Ubuntu 22.04'te UFW varsayılan olarak kurulu gelir ama etkin değildir. Etkinleştirmeden önce SSH portunu açmak zorunludur; yoksa bağlantınız kesilir:
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh # veya: ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable # "Rules updated, Firewall is active" beklenir
ufw status verbose
Özel SSH portu kullandıysanız (örneğin 2222):
ufw allow 2222/tcp
ufw deny ssh # varsayılan 22'yi kapat
Nginx Kurulumu
Ubuntu 22.04 resmi reposunda Nginx 1.18 gelir. Daha güncel sürüm için Nginx'in resmi Ubuntu reposunu ekleyebilirsiniz; ancak 1.18 üretim için yeterlidir.
apt install -y nginx
systemctl enable --now nginx
Tarayıcıdan http://SUNUCU_IP adresine gidin — "Welcome to nginx!" sayfası görünüyorsa kurulum başarılı.
Server Block (Virtual Host) Yapılandırması
Nginx'in site yapılandırmaları /etc/nginx/sites-available/ altında tutulur; aktif siteler /etc/nginx/sites-enabled/ içine symlink olarak eklenir. Varsayılan site:
# Varsayılan siteyi devre dışı bırak
unlink /etc/nginx/sites-enabled/default
# Yeni site config dosyası oluştur
vim /etc/nginx/sites-available/siteniz.com
Temel server block (SSL öncesi — HTTP):
server {
listen 80;
server_name siteniz.com www.siteniz.com;
root /var/www/siteniz.com;
index index.php index.html;
# WordPress için URL yönlendirme
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP-FPM entegrasyonu
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}
# Statik dosya cache
location ~* .(jpg|jpeg|png|gif|ico|css|js|woff2|webp|svg)$ {
expires 1y;
access_log off;
}
# Gizli dosyalara erişimi engelle
location ~ /. {
deny all;
}
}
# Siteyi etkinleştir
ln -s /etc/nginx/sites-available/siteniz.com /etc/nginx/sites-enabled/
# Syntax kontrolü
nginx -t
# Yeniden yükle (reload, restart değil)
systemctl reload nginx
MySQL mi, MariaDB mi?
Her ikisi de SQL standardıyla uyumlu; çoğu uygulama ikisini de destekler. Temel farklar:
| Özellik | MySQL 8.0 | MariaDB 10.11 LTS |
|---|---|---|
| Geliştiren | Oracle | MariaDB Foundation (community fork) |
| Lisans | GPL (community) / Commercial (enterprise) | GPL |
| JSON desteği | Gelişmiş | Temel |
| Galera Cluster | Ek araç gerekir | Yerleşik |
| WordPress uyumluluğu | Tam | Tam |
| Ubuntu 22.04 apt varsayılan | MySQL 8.0 | — |
Buyukweb önerisi: MariaDB 10.11 LTS. Community fork, Oracle bağımlılığı yok, production için olgun. WordPress dahil çoğu PHP uygulaması MariaDB ile sorunsuz çalışır.
MariaDB Kurulumu
apt install -y mariadb-server
systemctl enable --now mariadb
Güvenli yapılandırma:
mysql_secure_installation
# Sıraya sorular gelir:
# Enter current password for root: (Enter — yeni kurulumda boş)
# Set root password? Y → güçlü parola girin
# Remove anonymous users? Y
# Disallow root login remotely? Y
# Remove test database? Y
# Reload privilege tables? Y
MariaDB varsayılan olarak sadece localhost dinler — uzaktan erişim açık değil, bu güvenlik açısından doğru.
MySQL Kurulumu (Tercih Edilirse)
apt install -y mysql-server
systemctl enable --now mysql
mysql_secure_installation
PHP-FPM 8.3 Kurulumu
Ubuntu 22.04 resmi reposunda PHP 8.1 gelir. PHP 8.3 veya 8.4 için Ondrej Surý'nin PPA'si kullanılır (Ubuntu PHP ekosisteminin fiili standart kaynağı):
apt install -y software-properties-common
add-apt-repository ppa:ondrej/php -y
apt update
# PHP 8.3 ve yaygın modüller
apt install -y php8.3-fpm php8.3-mysql php8.3-curl php8.3-mbstring php8.3-xml php8.3-zip php8.3-gd php8.3-intl php8.3-imagick php8.3-redis php8.3-opcache
systemctl enable --now php8.3-fpm
php8.3 --version
PHP 8.4 tercih ederseniz: Aynı PPA ile php8.4-fpm şeklinde kurulur. PHP 8.4, Kasım 2024'te çıktı; aktif geliştirme aşamasında olup bazı eski eklentilerde uyumsuzluk yaşanabilir. Üretim için 8.3 daha olgun; yeni proje başlatıyorsanız 8.4 değerlendirilebilir.
PHP-FPM Pool Yapılandırması
vim /etc/php/8.3/fpm/pool.d/www.conf
RAM'e göre pm.max_children ayarı (her PHP worker ~25–40 MB tüketir):
pm = dynamic
pm.max_children = 20 ; 4 GB RAM için; 2 GB → 10, 8 GB → 40
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500
systemctl restart php8.3-fpm
Nginx + PHP-FPM Entegrasyonu
Nginx ile PHP-FPM'i bağlayan kritik direktif, server block içindeki fastcgi_pass satırıdır. PHP-FPM'in Unix socket dosyası /var/run/php/php8.3-fpm.sock konumunda oluşur.
Document root hazırlanması:
mkdir -p /var/www/siteniz.com
chown www-data:www-data /var/www/siteniz.com
chmod 755 /var/www/siteniz.com
Yukarıdaki server block'ta PHP-FPM socket yolu zaten doğru girildi. Değişiklikten sonra test ve reload:
nginx -t && systemctl reload nginx
PHP çalışıyor mu kontrolü:
# /var/www/siteniz.com/info.php oluştur (test sonrası silin!)
echo '<?php phpinfo(); ?>' > /var/www/siteniz.com/info.php
# Tarayıcıda http://SUNUCU_IP/info.php → PHP bilgi sayfası görünüyorsa OK
rm /var/www/siteniz.com/info.php
SSL Sertifikası (Let's Encrypt)
Let's Encrypt ücretsiz SSL sağlar; certbot aracı Nginx yapılandırmasını otomatik günceller.
Ön koşul: Alan adı DNS A kaydı sunucu IP'sine doğru yönlendirilmiş olmalı; DNS yayılımı tamamlanmadan sertifika doğrulaması başarısız olur.
apt install -y certbot python3-certbot-nginx
certbot --nginx -d siteniz.com -d www.siteniz.com
Certbot sertifikayı alır ve Nginx config'ini HTTPS bloğuyla günceller. Otomatik yenileme systemd timer ile gelir:
systemctl status certbot.timer
# Aktif olduğunu doğrulayın
# Yenilemeyi test edin (sertifikayı gerçekte yenileme)
certbot renew --dry-run
Sertifikalar 90 günde bir yenilenir; timer sayesinde manuel müdahale gerekmez.
WordPress Deploy Örneği
LEMP stack kurulumu tamamlandıktan sonra WordPress örneği:
Veritabanı ve Kullanıcı Oluşturma
mysql -u root -p
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'guclu-rastgele-sifre-buraya';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
WordPress Dosyaları
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
cp -r wordpress/. /var/www/siteniz.com/
# İzinler
chown -R www-data:www-data /var/www/siteniz.com
find /var/www/siteniz.com -type d -exec chmod 755 {} ;
find /var/www/siteniz.com -type f -exec chmod 644 {} ;
wp-config.php
cp /var/www/siteniz.com/wp-config-sample.php /var/www/siteniz.com/wp-config.php
vim /var/www/siteniz.com/wp-config.php
Veritabanı bölümünü düzenleyin:
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'guclu-rastgele-sifre-buraya' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
WordPress güvenlik anahtarlarını üretip wp-config.php içindeki ilgili bölümle değiştirin.
Tuning: Nginx, PHP, MariaDB
Nginx Temel Tuning
# /etc/nginx/nginx.conf içinde http {} bloğu
worker_processes auto;
worker_connections 1024;
# Gzip sıkıştırma
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
# Upload boyutu
client_max_body_size 64M;
PHP OPcache
# /etc/php/8.3/fpm/conf.d/10-opcache.ini (mevcut)
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
MariaDB innodb_buffer_pool_size
# /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
innodb_buffer_pool_size = 512M ; RAM'in %50-70'i; 4 GB VDS için 2 GB makul
innodb_log_file_size = 128M
max_connections = 150
systemctl restart mariadb
Performans Katmanı: FastCGI Cache ve Redis
Nginx FastCGI Cache
LiteSpeed Web Server'ın LSCache eklentisi sadece LiteSpeed'e özgüdür; Nginx'te çalışmaz. Nginx'in yerleşik FastCGI cache'i alternatif sunar:
# /etc/nginx/nginx.conf içinde http {} bloğuna ekleyin
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:50m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
Server block içinde:
# Giriş yapan kullanıcılar ve WooCommerce sepeti için cache bypass
set $skip_cache 0;
if ($request_method = POST) { set $skip_cache 1; }
if ($query_string != "") { set $skip_cache 1; }
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|index.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$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
}
Redis Object Cache (WordPress)
apt install -y redis-server
systemctl enable --now redis-server
WordPress'te Redis Object Cache eklentisi kurulduktan sonra wp-config.php içine:
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_CACHE', true);
Redis, WordPress'in veritabanı sorgularını önbellekler; özellikle yüksek trafikli WooCommerce sitelerinde anlamlı fark yaratır.
Buyukweb VDS Bağlamı
Bu rehberdeki adımların tamamı Buyukweb VDS altyapısında doğrudan uygulanabilir:
- KVM sanallaştırma: Full virtualization, Ubuntu 22.04 LTS template hazır — sipariş anında teslim edilir
- Bursa Tier 3 veri merkezi: Türkiye'de veri barındırma, KVKK uyumu için avantajlı
- NVMe SSD: Veritabanı I/O yoğun işlemlerde belirgin fark
- KVM web konsol: SSH erişimi kesilirse web panelinden konsol oturumu açabilirsiniz — LEMP kurulum sırasında SSH anahtarı yanlış yapılandırılsa dahi kurtarma yolu mevcut
- Root erişim: Nginx, MariaDB, PHP-FPM, Redis kurulumu üzerinde tam kontrol
Buyukweb'in n8n, forex-vds ve yapay zeka paketleri (genellikle yüksek bellek seçenekleri) Ubuntu Server LEMP üzerinde çalışan Node.js veya Python uygulamalarıyla birlikte kullanılabilir; PHP-FPM pool'ları bu senaryoda da bağımsız çalışır.
cPanel hosting tercih edenlere: cPanel ortamında LiteSpeed web sunucusu ve PHP sürümleri panel üzerinden yönetilir — bu rehberdeki manuel kurulum adımları gerekmez. Manuel kontrol isteyenler için VDS doğru seçimdir.
Destek hattı: 0850 302 60 70
Sık Sorulan Sorular
MariaDB mi, MySQL mi seçmeliyim?
WordPress ve çoğu PHP uygulaması için ikisi arasında pratikte fark yoktur. MariaDB 10.11 LTS community destekli, ücretsiz ve Oracle bağımlılığı olmadan gelir; Buyukweb'in önerisi bu yöndedir. Eğer uygulamanız MySQL 8.0'ın özgün JSON fonksiyonlarını veya Oracle Cloud entegrasyonunu gerektiriyorsa MySQL tercih edin.
Nginx, Apache'den gerçekten daha hızlı mı?
Ölçüt önemlidir. Statik dosya sunumu ve yüksek eş zamanlı bağlantılarda Nginx açık farkla öne geçer. PHP uygulamalarında (PHP-FPM ile) fark daha az belirgin; ancak düşük RAM'li VDS'de Nginx'in bellek verimliliği avantajı korunur. Çok küçük trafikli siteler için pratik fark hissedilmeyebilir.
PHP 8.3 mü, 8.4 mü kullanmalıyım?
PHP 8.3, Kasım 2023'ten itibaren geniş ekosistem desteğine sahip, olgun sürüm. PHP 8.4 (Kasım 2024) aktif geliştirme aşamasında; bazı eski eklentiler henüz tam uyumlu değil. Üretim sunucusu için 8.3 önerilir; yeni geliştirme projeleri için 8.4 değerlendirilebilir. İkisi aynı sunucuda php8.3-fpm ve php8.4-fpm şeklinde yan yana çalıştırılabilir.
VDS'te kaç GB RAM yeterli?
WordPress siteleri için: tek site → 2 GB yeterli; birden fazla site + Redis + MariaDB → 4 GB önerilir. WooCommerce veya yüksek trafikli site → 4–8 GB arası. PHP-FPM pm.max_children hesabı önemli: her worker ~30 MB × 20 worker = 600 MB sadece PHP. Buna Nginx (~50 MB) ve MariaDB (~200–500 MB buffer pool) eklenince toplam bellek planlaması yapın.
WordPress için LEMP yeterli mi, başka bileşen gerekli mi?
LEMP + Redis Object Cache + Nginx FastCGI Cache çoğu WordPress sitesi için yeterlidir. Çok yüksek trafik (günde 100.000+ sayfa görüntüleme) için ek optimizasyon gerekebilir: CDN entegrasyonu (Cloudflare dahil), Varnish önbelleği veya queue sistemi. Başlangıç için bu rehberdeki yapılandırma sağlam bir temel sunar.
22.04'ten 24.04'e nasıl geçiş yaparım?
Ubuntu resmi yükseltme aracı (do-release-upgrade) mevcuttur. Ancak üretim sunucusunda in-place yükseltme yerine yeni VDS + uygulama taşıma stratejisi önerilir: yeni 24.04 sunucu aç, LEMP'i kur, siteyi taşı, test et, DNS çevir. Risk en aza iner, geri dönüş kapısı açık kalır.
Let's Encrypt sertifikası kaç günde bir yenilenir?
Let's Encrypt sertifikaları 90 gün geçerlidir. Certbot'un systemd timer'ı günde iki kez yenileme kontrolü yapar; son 30 gün kala yenileme başlatılır. Otomatik yenileme çalıştığı sürece sertifika süresi dolmaz. Durumu kontrol etmek için: systemctl status certbot.timer ve certbot renew --dry-run.
Sonuç
Ubuntu Server 22.04 LTS + Nginx + MariaDB + PHP-FPM kombinasyonu, WordPress ve PHP uygulamaları için olgun, dengeli bir yığın. Kurulum birkaç saatlik çalışma; bakım ise sistemin kendiliğinden yürüttüğü (güvenlik güncellemeleri, SSL yenileme) rutinlerle mümkün olduğunca az el ister. Redis Object Cache ve Nginx FastCGI Cache eklenerek üretim kalitesinde bir ortam elde edilir.
Buyukweb VDS'te Ubuntu 22.04 LTS template ile başlayıp bu rehberi adım adım uygulayarak birkaç saat içinde production-ready LEMP stack hazır hale getirilebilir.
Teknik destek: 0850 302 60 70 veya iletişim sayfamız.
İlgili Büyükweb Hizmetleri
- VDS Sunucu — Ubuntu 22.04 LTS dahil, KVM, root erişim
- Linux Hosting — cPanel + LiteSpeed, manuel kurulum gerektirmez
- Fiziksel Dedicated Sunucu — tam kontrol, paylaşımsız kaynak
Sorularınız için 0850 302 60 70 numaralı destek hattımıza veya iletişim sayfamıza yazabilirsiniz.
İşletim Sistemleri İlgili Hizmetlerimiz
Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin
Etiketler:

