LAMP yığını (Linux, Apache, MariaDB, PHP), WordPress, Laravel ve çoğu PHP uygulamasının klasik temelidir. Bu rehberde Ubuntu 24.04 yüklü yeni bir VPS Linux Infrawire üzerinde, ayrı bir sanal sunucu (virtual host) ve yalnızca gerekli portları açan bir güvenlik duvarıyla adım adım kurulum yapacaksınız.
📋 Ön koşullar
- Ubuntu 24.04 yüklü bir KVM VPS (IP adresi ve root parolası müşteri alanınızda yer alır)
- root olarak veya
sudoyetkili bir kullanıcıyla SSH erişimi - A (ve AAAA) kayıtları
VPS_IPadresine yönlenen birexample.comalan adı
Aşağıdaki komutlar root olduğunuzu varsayar. Değilseniz başına sudo ekleyin.
1. Sistemi güncelleyin
Bashapt update && apt upgrade -y
2. Apache'yi kurun
Bashapt install -y apache2 systemctl enable --now apache2 apache2 -v
Hizmet hemen başlar ve her açılışta otomatik çalışır.
3. MariaDB'yi kurun
MariaDB, Ubuntu depolarında bulunur ve MySQL'in yerine sorunsuz geçer. Oracle MySQL tercih ediyorsanız mysql-server kurun, ancak aynı makineye ikisini birden kurmayın.
Bashapt install -y mariadb-server systemctl enable --now mariadb mysql_secure_installation
Sihirbazda root için unix_socket kimlik doğrulamasını koruyun, istenirse güçlü bir parola belirleyin, anonim kullanıcıları kaldırın, uzaktan root girişini yasaklayın ve test veritabanını silin. Ardından uygulamanız için bir veritabanı ve özel bir kullanıcı oluşturun:
Bashmariadb
SQL1CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 2CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD'; 3GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; 4FLUSH PRIVILEGES; 5EXIT;
4. PHP 8.3'ü kurun
Ubuntu 24.04, PHP 8.3'ü varsayılan depolarında sunar; ek bir PPA gerekmez.
Bashapt install -y php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-intl php -v
libapache2-mod-php paketi Apache'yi otomatik olarak prefork MPM'ye geçirir ve PHP modülünü yükler.
5. Sanal sunucu oluşturun ve mod_rewrite'ı etkinleştirin
Bashmkdir -p /var/www/example.com/public_html chown -R www-data:www-data /var/www/example.com nano /etc/apache2/sites-available/example.com.conf
Apache1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5 6 <Directory /var/www/example.com/public_html> 7 AllowOverride All 8 Require all granted 9 </Directory> 10 11 ErrorLog ${APACHE_LOG_DIR}/example.com-error.log 12 CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined 13</VirtualHost>
AllowOverride All, WordPress ve Laravel'deki temiz URL'lerin dayandığı .htaccess dosyalarını etkinleştirir. Şimdi modülü ve siteyi etkinleştirip varsayılan sayfayı devre dışı bırakın:
Basha2enmod rewrite a2ensite example.com.conf a2dissite 000-default.conf apache2ctl configtest systemctl reload apache2
Yeniden yüklemeden önce configtest çıktısı Syntax OK olmalıdır.
6. Güvenlik duvarını yapılandırın
Önce SSH'ye izin verin; aksi halde güvenlik duvarını açtığınızda sunucuya erişiminizi kaybedersiniz.
Bashufw allow OpenSSH ufw allow 'Apache Full' ufw enable ufw status
Apache Full profili 80 ve 443 numaralı portları açar. 3306 portunu açmayın: MariaDB'nin yalnızca yerelde dinlemesi yeterlidir.
7. PHP'yi test edin ve test dosyasını silin
Bashecho '<?php phpinfo();' > /var/www/example.com/public_html/info.php curl -sI http://example.com/info.php | head -n 1
HTTP/1.1 200 OK almalısınız. PHP yapılandırma sayfasını görmek için tarayıcıda http://example.com/info.php adresini açın. phpinfo() sayfası sürümleri, dizin yollarını ve modülleri ifşa eder; bu yüzden hemen silin:
Bashrm /var/www/example.com/public_html/info.php
Diğer bileşenleri de kontrol edin:
Bashapache2ctl -M | grep -E 'rewrite|php' php -m | grep -E 'mysqli|pdo_mysql' systemctl is-active apache2 mariadb
🛠️ Sorun giderme
Apache'nin varsayılan sayfası hâlâ görünüyor. Varsayılan site hâlâ etkin ya da DNS henüz yayılmadı. a2dissite 000-default.conf komutunu çalıştırın, Apache'yi yeniden yükleyin ve curl -I -H 'Host: example.com' http://VPS_IP/ ile test edin.
403 Forbidden. Dizinde Require all granted olduğunu, www-data kullanıcısının dosyaları okuyabildiğini (ls -ld /var/www/example.com/public_html) kontrol edin ve /var/log/apache2/example.com-error.log günlüğüne bakın.
Tarayıcı PHP dosyasını çalıştırmak yerine indiriyor. PHP modülü yüklenmemiş. apache2ctl -M | grep php komutunu, ardından systemctl restart apache2 çalıştırın. Çıktı yoksa libapache2-mod-php paketini yeniden kurun.
Yeniden yazma kuralları yok sayılıyor (temiz URL'lerde 404). a2enmod rewrite komutunun çalıştırıldığını ve <Directory> bloğunuzda AllowOverride All bulunduğunu doğrulayın.
🎉 LAMP yığınınız hazır: Apache, MariaDB ve PHP 8.3 ilk sitenizi barındırmaya hazır.