LEMP Stack Kurulumu: Nginx + MySQL + PHP Ubuntu 22.04
Ubuntu 22.04'te LEMP stack (Linux, Nginx, MySQL, PHP) tam kurulumu, PHP-FPM entegrasyonu ve test sayfası rehberi.
LEMP Stack Nedir?
LEMP Stack; Linux işletim sistemi, ENginx web sunucusu (Engine-X olarak okunur), MySQL veritabanı yönetim sistemi ve PHP programlama dilinin baş harflerinden oluşan popüler bir yazılım yığınıdır. Modern web uygulamalarının büyük çoğunluğu bu dört bileşen üzerine inşa edilmektedir.
Nginx, Apache'ye kıyasla çok daha az kaynak kullanarak yüksek eşzamanlı bağlantıları işleyebilen event-driven (olay tabanlı) mimarisiyle öne çıkar. PHP-FPM (FastCGI Process Manager) ile entegrasyon sayesinde PHP istekleri ayrı worker process'ler üzerinden çok daha verimli biçimde işlenir. Bu kombinasyon özellikle yüksek trafikli WordPress, Laravel ve Symfony uygulamaları için idealdir.
Ön Gereksinimler
- Ubuntu 22.04 LTS sunucu (veya 20.04)
- Root veya sudo yetkili kullanıcı hesabı
- 80 ve 443 numaralı portların açık olması
- Temel Linux komut satırı bilgisi
Adım 1: Sistem Paketlerini Güncelleyin
Kuruluma başlamadan önce her zaman sistemi güncel tutun:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget gnupg2 software-properties-common
Adım 2: Nginx Kurulumu
Ubuntu resmi deposundan Nginx'i kurun:
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
Nginx kurulumunu doğrulamak için tarayıcınızdan sunucu IP adresinize gidin; "Welcome to nginx!" sayfasını görmelisiniz.
UFW Güvenlik Duvarı Ayarı
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
Adım 3: MySQL 8.0 Kurulumu
sudo apt install mysql-server -y
sudo systemctl start mysql
sudo systemctl enable mysql
MySQL Güvenlik Yapılandırması
Kurulum sonrasında mutlaka güvenlik scriptini çalıştırın:
sudo mysql_secure_installation
Bu işlem sırasında şunları yapın: validate password plugin kurun, root şifresi belirleyin, anonim kullanıcıları kaldırın, remote root girişini devre dışı bırakın ve test veritabanını kaldırın.
Uygulama Veritabanı ve Kullanıcı Oluşturma
sudo mysql -u root -p
CREATE DATABASE lemp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'lemp_user'@'localhost' IDENTIFIED BY 'GucluSifre_2024!';
GRANT ALL PRIVILEGES ON lemp_db.* TO 'lemp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Adım 4: PHP 8.1 ve PHP-FPM Kurulumu
PHP'nin LTS sürümünü ve yaygın kullanılan eklentileri kurun:
sudo apt install -y php8.1-fpm php8.1-mysql php8.1-xml php8.1-curl \
php8.1-gd php8.1-mbstring php8.1-opcache php8.1-zip php8.1-intl \
php8.1-bcmath php8.1-soap php8.1-imagick
PHP-FPM'yi Etkinleştirin
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm
php -v
php.ini Optimizasyonu
sudo nano /etc/php/8.1/fpm/php.ini
Aşağıdaki değerleri bulup güncelleyin:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_vars = 3000
memory_limit = 256M
date.timezone = Europe/Istanbul
expose_php = Off
Adım 5: Nginx Sanal Host Yapılandırması
sudo nano /etc/nginx/sites-available/mysite
server {
listen 80;
server_name example.com www.example.com;
root /var/www/mysite;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
client_max_body_size 64M;
access_log /var/log/nginx/mysite_access.log;
error_log /var/log/nginx/mysite_error.log;
}
Site Dizini Oluşturun ve Aktif Edin
sudo mkdir -p /var/www/mysite
sudo chown -R www-data:www-data /var/www/mysite
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Adım 6: PHP ve MySQL Bağlantı Testi
sudo nano /var/www/mysite/info.php
<?php phpinfo(); ?>
Tarayıcıdan http://example.com/info.php adresine gidin. PHP bilgilerini gördükten sonra bu dosyayı silin:
sudo rm /var/www/mysite/info.php
OPcache ile Performans Artırma
OPcache, PHP betiklerini derleme önbelleğine alarak işlem süresini önemli ölçüde kısaltır:
sudo nano /etc/php/8.1/fpm/conf.d/10-opcache.ini
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
Sık Karşılaşılan Sorunlar ve Çözümleri
502 Bad Gateway Hatası
Bu hata PHP-FPM servisinin çalışmadığına ya da Nginx'in yanlış socket kullandığına işaret eder:
sudo systemctl status php8.1-fpm
sudo systemctl restart php8.1-fpm
sudo tail -50 /var/log/nginx/error.log
403 Forbidden Hatası
Dosya izinleri hatalıysa bu hatayla karşılaşırsınız:
sudo chown -R www-data:www-data /var/www/mysite
sudo find /var/www/mysite -type d -exec chmod 755 {} \;
sudo find /var/www/mysite -type f -exec chmod 644 {} \;
MySQL Bağlantı Hatası
sudo mysql -u root -p
-- Kullanıcı yetkilerini kontrol edin:
SHOW GRANTS FOR 'lemp_user'@'localhost';
Sonuç
Ubuntu 22.04 üzerinde LEMP Stack kurulumunu başarıyla tamamladınız. Nginx + MySQL 8.0 + PHP 8.1-FPM ile çalışan bu yapı üzerine WordPress, Laravel, Symfony gibi popüler PHP uygulamalarını hızlıca kurabilirsiniz. OPcache ve doğru PHP-FPM pool ayarlarıyla sunucunuzun performansını daha da artırabilirsiniz.
Yorumlar
Henüz yorum yok. İlk yorumu siz yapın!