Ubuntu'ya Nginx + PHP + MySQL Kurulumu (LEMP Stack)
Son güncelleme: 23 Eylül 2026
LEMP = Linux + Engine-X (Nginx) + MariaDB/MySQL + PHP. Bu rehber, sıfır bir Ubuntu 22.04/24.04 sunucusuna bir PHP sitesi çalıştıracak tam yığını kurar: Nginx, PHP-FPM, MariaDB, bir sanal sunucu (server block) ve Let's Encrypt SSL.
sudo yetkili normal kullanıcıyla çalıştırın.
1. Nginx
sudo apt update
sudo apt install nginx -y
sudo systemctl enable --now nginx
UFW zaten 80,443/tcp'ye izin veriyorsa sunucunun IP adresine tarayıcıdan girince Nginx karşılama sayfasını görürsünüz.
2. MariaDB
sudo apt install mariadb-server -y
sudo systemctl enable --now mariadb
sudo mysql_secure_installation
mysql_secure_installation sorularında: root için unix_socket doğrulamasına Y, anonim kullanıcıları sil, uzaktan root girişini kapat, test veritabanını sil, yetki tablolarını yeniden yükle.
Uygulama için veritabanı ve kullanıcı
sudo mysql
CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'GUCLU_BIR_PAROLA';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
3. PHP-FPM
sudo apt install php-fpm php-mysql php-mbstring php-xml php-curl php-zip php-gd php-intl php-bcmath -y
Sürümü kontrol edin (Ubuntu 24.04'te tipik olarak 8.3):
php -v
systemctl status php8.3-fpm
ondrej/php PPA'sını ekleyin:
sudo add-apt-repository ppa:ondrej/php ardından sudo apt install php8.2-fpm ...
4. Site için server block
sudo mkdir -p /var/www/siteniz.com/public
sudo chown -R $USER:www-data /var/www/siteniz.com
/etc/nginx/sites-available/siteniz.com:
server {
listen 80;
server_name siteniz.com www.siteniz.com;
root /var/www/siteniz.com/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
sudo ln -s /etc/nginx/sites-available/siteniz.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Test
echo "<?php phpinfo();" | sudo tee /var/www/siteniz.com/public/info.php
http://siteniz.com/info.php PHP bilgi sayfasını göstermeli. Testten sonra silin: sudo rm /var/www/siteniz.com/public/info.php
5. DNS
Alan adınızın A kaydını sunucunun IP adresine yönlendirin:
siteniz.com. A 203.0.113.10
www.siteniz.com. A 203.0.113.10
Yayılmayı bekleyin (dig siteniz.com +short IP'yi dönene kadar).
6. Ücretsiz SSL (Let's Encrypt)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d siteniz.com -d www.siteniz.com
Certbot sertifikayı alır, Nginx yapılandırmasını HTTPS'e günceller ve yönlendirme ekler. Otomatik yenileme certbot.timer ile kurulur; test:
sudo certbot renew --dry-run
Ayrıntı: SSL Sertifikası Nedir?
7. Ayarları güçlendirin
/etc/php/8.3/fpm/php.ini içinde tipik ayarlar:
upload_max_filesize = 32M
post_max_size = 32M
memory_limit = 256M
max_execution_time = 60
date.timezone = Europe/Istanbul
sudo systemctl restart php8.3-fpm
Sık karşılaşılan sorunlar
- 502 Bad Gateway:
fastcgi_passyolundaki PHP sürümü kurulu sürümle uyuşmuyor.ls /run/php/ile doğru soketi görün. - 403 Forbidden:
rootdizini yanlış ya da izinler hatalı.www-dataokuyabilmeli. - PHP dosyası indiriliyor:
location ~ \.php$bloğu eksik veyanginx -thatalı. - certbot "DNS problem": A kaydı henüz yayılmadı;
digile doğrulayıp tekrar deneyin.
Sık sorulan sorular
LEMP ile LAMP arasındaki fark nedir?
Nginx'te 502 Bad Gateway hatası neden olur?
Belirli bir PHP sürümünü nasıl kurarım?
phpinfo() test dosyasını silmem şart mı?
Bu makale yardımcı oldu mu?
Teşekkürler, geri bildirimin kaydedildi.
Hâlâ takıldıysan destek talebi aç.