Buyukweb
Ubuntu Server 22.04 LTS Kurulumu ve LEMP Stack Yapılandırması

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.

Büyükweb Editör EkibiHosting, Sunucu ve Sistem Yönetimi Editörü13 dakika okuma

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

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:

#ubuntu#kurulum rehberi#işletim sistemi#sunucu os#linux

Bu yazıyı paylaş