Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
İşletim sistemleri Linux Yönetim

Ubuntu’da Linux, Nginx, MySQL, PHP (LEMP) Stack Kurulumu: Tam Rehber

LEMP stackLinux, Nginx, MySQL ve PHP için bir kısaltma — dinamik web siteleri ve yüksek performanslı web uygulamalarını çalıştırmak için en yaygın olarak benimsenen web sunucusu yapılandırmalarından biridir. Linux’un sağlam istikrarı, Nginx’in yıldırım hızı, MySQL’in güçlü veri yönetimi yetenekleri ve PHP’nin çok yönlülüğünü birleştirerek, LEMP stack güçlü, ölçeklenebilir ve kaynak açısından verimli bir barındırma ortamı sunar.

Kişisel bir blog, bir işletme web sitesi veya karmaşık bir kurumsal uygulama dağıtıyor olsanız da, düzgün şekilde yapılandırılmış bir LEMP stack size daha iyi ölçeklenebilirlik, daha hızlı sayfa yükleme süreleri ve verimli bellek yönetimi sağlar — özellikle yüksek trafik koşullarında.

Bu stack’i çalıştırmak için güvenilir bir temel gerekiyorsa, AlexHost’un VPS Barındırması tam kök erişimi ile yüksek performanslı Linux tabanlı sanal sunucular sağlayarak, LEMP ortamınızın her bileşeni üzerinde tam kontrol verir. Bunu ilk günden uygulamanızı güvenli hale getirmek için bir SSL Sertifikası ile eşleştirin.

Bu kapsamlı kılavuzda, bir Ubuntu sunucusunda tam LEMP stack’i yükleme ve yapılandırmanın her adımında size rehberlik edeceğiz — ilk sistem hazırlığından canlı PHP ortamınızı test etmeye kadar.

1. Ön Koşullar

Başlamadan önce, aşağıdakilerin yerinde olduğundan emin olun:

  • Ubuntu 18.04, 20.04 veya 22.04 LTS çalıştıran bir sunucu
  • sudo ayrıcalıklarına sahip bir kullanıcı hesabı
  • Sunucunuza SSH erişimi veya doğrudan terminal erişimi
  • Kayıtlı bir alan adı (üretim dağıtımları için isteğe bağlı ancak önerilir — AlexHost Alan Adı Kaydı aracılığıyla bir tane kaydedebilirsiniz)

> Pro İpucu: Temiz, izole bir ortam ve garantili kaynaklar için, bir VPS Hosting planı herhangi bir LEMP dağıtımı için ideal başlangıç noktasıdır.

2. Sisteminizi Güncelleyin

Herhangi bir paket kurmadan önce, paket dizininizi yenilemek ve tüm bekleyen güncellemeleri uygulamak kritik önem taşır. Bu, en son ve en güvenli yazılım sürümleriyle çalıştığınızdan emin olmanızı sağlar.

Terminalinizi açın ve şunu çalıştırın:

sudo apt update && sudo apt upgrade -y

Bu komut yerel paket veritabanını günceller ve tüm yüklü paketleri en son kullanılabilir sürümlerine yükseltir.

3. Nginx Yükleyin

Nginx (“engine-x” olarak telaffuz edilir), yüksek performanslı, olay odaklı bir web sunucusu ve ters proxy’dir. Apache’nin aksine, Nginx eş zamanlı bağlantıları minimal bellek tüketimi ile yönetir, bu da onu yüksek trafikli ortamlar için tercih edilen seçim haline getirir.

Adım 1: Nginx Yükleyin

sudo apt install nginx -y

Adım 2: Nginx’i Başlatın ve Etkinleştirin

Yüklemeden sonra, Nginx hizmetini başlatın ve sistem önyüklemesinde otomatik olarak başlaması için yapılandırın:

sudo systemctl start nginx
sudo systemctl enable nginx

Adım 3: Nginx’in Çalıştığını Doğrulayın

Nginx’in etkin olduğunu doğrulamak için hizmet durumunu kontrol edin:

sudo systemctl status nginx

Hizmetin etkin (çalışıyor) olduğunu gösteren bir çıktı görmelisiniz. Ayrıca bir web tarayıcısı açabilir ve sunucunuzun IP adresine gidebilirsiniz:

http://your_server_ip

Nginx doğru şekilde çalışıyorsa, varsayılan “Welcome to nginx!” sayfasıyla karşılanacaksınız.

Adım 4: Güvenlik Duvarını Yapılandırın (Uygulanabilirse)

UFW (Uncomplicated Firewall) etkinse, HTTP ve HTTPS trafiğine izin verin:

sudo ufw allow 'Nginx Full'
sudo ufw status

4. MySQL Yükleyin

MySQL, WordPress, Joomla ve özel PHP uygulamaları dahil olmak üzere çoğu dinamik web uygulamasının veri omurgası olarak hizmet veren güçlü, açık kaynaklı bir ilişkisel veritabanı yönetim sistemidir (RDBMS).

Adım 1: MySQL Server Yükleyin

sudo apt install mysql-server -y

Adım 2: MySQL Kurulumunu Güvenli Hale Getirin

Yüklendikten sonra, yerleşik güvenlik sağlamlaştırma komut dosyasını çalıştırın. Bu komut dosyası, güçlü bir kök parolası ayarlamanıza, anonim kullanıcıları kaldırmanıza, uzaktan kök girişini devre dışı bırakmanıza ve test veritabanını silmenize yardımcı olur:

sudo mysql_secure_installation

Size bir dizi soru sorulacaktır. Bir üretim sunucusu için önerilen yanıtlar şunlardır:

İstemÖnerilen Yanıt
VALIDATE PASSWORD bileşeni ayarlansin mi?Evet
Parola doğrulama politikası seviyesi2 (GÜÇLÜ)
Anonim kullanıcılar kaldırılsin mı?Evet
Kök girişi uzaktan yasaklansin mı?Evet
Test veritabanı silinsin mi?Evet
Ayrıcalık tabloları yeniden yüklensin mi?Evet

Adım 3: MySQL’in Çalışıp Çalışmadığını Doğrulayın

sudo systemctl status mysql

Adım 4: MySQL’e Giriş Yapın (İsteğe Bağlı Doğrulama)

sudo mysql -u root -p

İstendiğinde kök parolanızı girin. MySQL kabuğundan çıkmak için exit yazın.

5. PHP Yükleyin

PHP (Hypertext Preprocessor), dinamik içeriği işleyen ve veri odaklı web sayfalarını sunmak için MySQL ile iletişim kuran sunucu tarafı komut dosyası dilidir. Nginx kullanırken, PHP, web sunucusundan bağımsız olarak PHP isteklerini işleyen PHP-FPM (FastCGI Process Manager) aracılığıyla işlenir ve bu da performansı artırır.

Adım 1: PHP-FPM ve MySQL Uzantısını Yükleyin

sudo apt install php-fpm php-mysql -y

Daha geniş uygulama uyumluluğu için yaygın olarak kullanılan PHP uzantılarını da yüklemek isteyebilirsiniz:

sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip -y

Adım 2: PHP-FPM’i Güvenlik için Yapılandırın

PHP-FPM yapılandırma dosyasını açın. 8.1 yerine yüklü PHP sürümünüzü yazın (php -v ile kontrol edin):

sudo nano /etc/php/8.1/fpm/php.ini

cgi.fix_pathinfo yönergesini bulun ve kritik bir güvenlik açığını önlemek için 0 olarak ayarlayın:

cgi.fix_pathinfo=0

> Neden önemlidir: cgi.fix_pathinfo değeri 1 olarak ayarlanırsa, istenen PHP dosyası mevcut değilse PHP bulabileceği en yakın dosyayı yürütmeye çalışacaktır. Bu davranış, saldırganlar tarafından rastgele kod yürütmek için istismar edilebilir.

Dosyayı kaydedin ve kapatın (Ctrl+X, ardından Y, ardından Enter).

Adım 3: PHP-FPM’i Yeniden Başlatın

Yapılandırma değişikliklerini uygulayarak PHP-FPM hizmetini yeniden başlatın:

sudo systemctl restart php8.1-fpm

6. Nginx’i PHP İşlemek İçin Yapılandırın

Varsayılan olarak, Nginx PHP dosyalarını nasıl işleyeceğini bilmez. Nginx’e PHP isteklerini işlenmesi için PHP-FPM’ye iletmesini söyleyen bir sunucu bloğu (Apache sanal ana bilgisayarının Nginx eşdeğeri) oluşturmanız gerekir.

Adım 1: Web Kök Dizinini Oluşturun

Web sitesi dosyalarınızın depolanacağı dizini oluşturun:

sudo mkdir -p /var/www/your_domain
sudo chown -R www-data:www-data /var/www/your_domain
sudo chmod -R 755 /var/www/your_domain

your_domain yerine gerçek alan adınızı veya açıklayıcı bir proje adını yazın.

Adım 2: Yeni Bir Nginx Sunucu Bloğu Oluşturun

Siteniz için yeni bir Nginx yapılandırma dosyası oluşturun:

sudo nano /etc/nginx/sites-available/your_domain

Aşağıdaki yapılandırma bloğunu ekleyin. Satır içi yorumları dikkatle okuyun — her yönergenin ne yaptığını açıklarlar:

server {
    listen 80;
    listen [::]:80;

    server_name your_domain www.your_domain;  # Replace with your domain or server IP

    root /var/www/your_domain;                # Document root — where your files live
    index index.php index.html index.htm;     # Default files to serve

    # Handle all requests; return 404 if file not found
    location / {
        try_files $uri $uri/ =404;
    }

    # Pass PHP scripts to PHP-FPM for processing
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;  # Adjust PHP version as needed
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Deny access to hidden files (e.g., .htaccess)
    location ~ /.ht {
        deny all;
    }
}

> Önemli: your_domain yerine gerçek alan adınızı yazın ve php8.1-fpm.sock öğesini yüklü PHP sürümünüzle eşleşecek şekilde ayarlayın.

Adım 3: Sunucu Bloğunu Etkinleştirin

Yapılandırmayı etkinleştirmek için sites-available öğesinden sites-enabled öğesine sembolik bir bağlantı oluşturun:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Olası bir hash bucket bellek sorununu önlemek için, ana Nginx yapılandırmasını açmak ve server_names_hash_bucket_size yönergesinin açıklamasının kaldırıldığından emin olmak da iyi bir uygulamadır:

sudo nano /etc/nginx/nginx.conf

Bulun ve açıklamasını kaldırın:

server_names_hash_bucket_size 64;

Adım 4: Nginx Yapılandırmasını Test Edin

Nginx’i yeniden başlatmadan önce, yapılandırmayı sözdizimi hataları açısından her zaman test edin:

sudo nginx -t

Çıktı şunu gösterirse:

nginx: configuration file /etc/nginx/nginx.conf test is successful

Devam etmeye hazırsınız.

Adım 5: Nginx’i Yeniden Başlatın

Tüm değişiklikleri Nginx hizmetini yeniden başlatarak uygulayın:

sudo systemctl restart nginx

7. PHP Info Dosyası Oluşturun ve Test Edin

Nginx’in PHP isteklerini PHP-FPM’ye doğru şekilde ilettiğini doğrulamak için, belge kökünüzde basit bir PHP test dosyası oluşturun.

Adım 1: PHP Info Dosyasını Oluşturun

sudo nano /var/www/your_domain/info.php

Aşağıdaki içeriği ekleyin:

<?php
phpinfo();
?>

Dosyayı kaydedin ve kapatın.

Adım 2: PHP Info Sayfasına Erişin

Web tarayıcınızı açın ve şu adrese gidin:

http://your_domain/info.php

Veya henüz bir alan adı yapılandırmadıysanız:

http://your_server_ip/info.php

PHP bilgi sayfasını görmelisiniz — PHP kurulumunuzun, yüklü modüllerin, yapılandırma değerlerinin ve ortam değişkenlerinin ayrıntılı bir özeti. Bu, üç bileşenin (Nginx, PHP-FPM ve MySQL) birlikte doğru şekilde çalıştığını doğrular.

Adım 3: PHP Info Dosyasını Kaldırın (Kritik Güvenlik Adımı)

Her şeyin çalıştığını doğruladıktan sonra, info.php dosyasını hemen silin. Bu dosya, kötü niyetli kişiler tarafından istismar edilebilecek hassas sunucu yapılandırma ayrıntılarını ortaya çıkarır:

sudo rm /var/www/your_domain/info.php

8. Sonraki Adımlar: LEMP Stack’inizi Sertleştirin ve Optimize Edin

LEMP stack’iniz çalışır durumda olduğuna göre, sunucunuzu üretime hazırlamak için aşağıdaki ek adımları göz önünde bulundurun:

Ücretsiz SSL Sertifikası ile HTTPS’i Etkinleştirin

Certbot ve Let’s Encrypt kullanarak sitenizi TLS/SSL şifrelemesiyle güvenli hale getirin:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain -d www.your_domain

Alternatif olarak, işletme ve e-ticaret uygulamaları için daha yüksek güven seviyeleri sağlayan ticari olarak doğrulanmış premium sertifikalar için AlexHost SSL Sertifikaları‘nı keşfedin.

Nginx Performansını Optimize Edin

Performansı iyileştirmek için Nginx yapılandırmanıza aşağıdaki yönergeleri ekleyin:

# Enable Gzip compression
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;

# Enable browser caching for static assets
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

Adanmış MySQL Kullanıcısı Ayarlayın

Uygulamalarınız için root MySQL hesabını kullanmaktan kaçının. Sınırlı ayrıcalıklara sahip adanmış bir veritabanı kullanıcısı oluşturun:

CREATE DATABASE your_app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON your_app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;

Daha Kolay Yönetim için Kontrol Paneli Kullanmayı Düşünün

LEMP stack’inizi, Nginx sanal konakları, veritabanlarını ve e-posta hesaplarını yönetmek için grafik bir arayüz tercih ediyorsanız, bir kontrol paneli dağıtmayı düşünün. AlexHost, sunucu yönetimini basitleştirmek için cPanel VPS ve performans veya kontrolü feda etmeden bir dizi başka VPS Kontrol Panelleri sunmaktadır.

9. Sonuç

Ubuntu sunucunuzda başarıyla bir LEMP stack (Linux, Nginx, MySQL, PHP) yüklediniz ve yapılandırdınız. İşte başardığınız şeylerin hızlı bir özeti:

  • Nginx yüklenmiş, başlatılmış ve web sunucunuz olarak yapılandırılmış
  • MySQL yüklenmiş ve sertleştirme betiği ile güvenli hale getirilmiş
  • PHP-FPM güvenlik odaklı yapılandırma ile yüklenmiş
  • Nginx server block PHP isteklerini PHP-FPM’e yönlendirmek için yapılandırılmış
  • PHP işleme phpinfo() test sayfası aracılığıyla doğrulanmış

Bu stack, WordPress ve Laravel’den özel olarak oluşturulmuş platformlara kadar hemen hemen her PHP tabanlı uygulamayı barındırmak için üretime hazır bir temel sağlar. Nginx’in olay odaklı mimarisi ve PHP-FPM’in süreç yönetiminin kombinasyonu, özellikle yüksek eşzamanlılık iş yükleri için çok uygundur.

En iyi performans ve güvenilirlik için LEMP stack’inizi amaçlı bir Linux ortamında barındırın. AlexHost’un VPS Hosting planları SSD destekli depolama, garantili RAM, tam root erişimi ve 24/7 teknik destek sunmaktadır — hızlı, güvenli ve ölçeklenebilir bir web uygulaması çalıştırmak için ihtiyacınız olan her şey.

Tüm bileşenleri düzenli olarak güncellenmiş tutmayı, sunucu günlüklerini izlemeyi ve devam eden güvenlik duruşunuzun bir parçası olarak bir güvenlik duvarı ve izinsiz giriş algılama sistemi uygulamayı unutmayın.