Debian 9 Üzerinde LAMP Stack ile WordPress Kurulumu: Adım Adım Tam Kılavuz
Debian 9 (kod adı “Stretch”), kararlılığı, güvenliği ve geniş paket deposuyla sunucu dünyasında kendini kanıtlamış bir Linux dağıtımıdır. Bir web sitesi veya blog kurmak istiyorsanız, dünyanın en popüler İçerik Yönetim Sistemi (CMS) olan WordPress ile Debian’ın bu sağlam yapısını bir araya getirmek mükemmel bir seçenektir. WordPress’in çalışabilmesi için dinamik web sayfalarını işleyen, verileri depolayan ve sunan bir altyapıya ihtiyaç vardır. Bu altyapı, Linux (İşletim Sistemi), Apache (Web Sunucusu), MariaDB/MySQL (Veritabanı) ve PHP (Programlama Dili) bileşenlerinden oluşan LAMP yığınıdır.
Bu kapsamlı rehberde, Debian 9 sunucunuz üzerinde sıfırdan adım adım LAMP yığınını nasıl kuracağınızı, veritabanını nasıl yapılandıracağınızı ve en güncel WordPress sürümünü nasıl yayına alacağınızı öğreneceksiniz. Güvenlik yapılandırmalarından Apache sanal konak (Virtual Host) ayarlarına kadar tüm teknik detaylar en ince ayrıntısıyla ele alınacaktır.
Gereksinimler ve Ön Hazırlık
Kuruluma başlamadan önce aşağıdaki gereksinimlerin karşılandığından emin olmanız gerekir:
- Temiz bir Debian 9 (Stretch) kurulumuna sahip sanal veya fiziksel bir sunucu (VPS/VDS).
- Sunucuya erişmek için root yetkilerine sahip bir kullanıcı hesabı (veya sudo yetkisi).
- Sunucunuza yönlendirilmiş, aktif bir alan adı (örneğin: alanadiniz.com). DNS kayıtlarında A kaydının sunucu IP adresinizi gösterdiğinden emin olun.
- SSH üzerinden sunucuya bağlanabileceğiniz bir terminal istemcisi (Putty, Terminal vb.).
Adım 1: Sistem Güncelleştirmeleri
Herhangi bir yazılım kurulumuna başlamadan önce, işletim sistemindeki mevcut paketlerin güncel olduğundan emin olmak güvenlik ve kararlılık açısından kritik öneme sahiptir. Aşağıdaki komutları çalıştırarak Debian paket listesini güncelleyin ve mevcut tüm paketleri en son sürümlerine yükseltin:
sudo apt update && sudo apt upgrade -y
Bu işlem, sunucunuzun hızına ve internet bağlantısına bağlı olarak birkaç dakika sürebilir. Güncelleme tamamlandıktan sonra, sistemin temiz bir şekilde çalışmaya devam etmesi için gerekirse sunucuyu yeniden başlatabilirsiniz.
Adım 2: Apache Web Sunucusunun Kurulması
Apache, dünya genelinde milyonlarca web sitesine hizmet veren, son derece güvenilir, modüler ve açık kaynaklı bir web sunucusudur. Debian 9 depolarında varsayılan olarak yer alır.
Apache’yi kurmak için şu komutu çalıştırın:
sudo apt install apache2 -y
Kurulum tamamlandıktan sonra, Apache servisinin otomatik olarak başlatıldığından ve her sistem açılışında otomatik olarak çalışacak şekilde yapılandırıldığından emin olmalıyız. Bunun için aşağıdaki systemd komutlarını kullanın:
sudo systemctl start apache2
sudo systemctl enable apache2
Apache’nin durumunu kontrol etmek için şu komutu çalıştırabilirsiniz:
sudo systemctl status apache2
Eğer çıktıda “active (running)” ifadesini görüyorsanız, web sunucunuz sorunsuz bir şekilde çalışıyor demektir. Şimdi, sunucunuzun IP adresini veya alan adınızı bir web tarayıcısına yazarak test edin (örneğin: http://sunucu_ip_adresi). Karşınıza “Apache2 Debian Default Page” başlıklı varsayılan Debian Apache test sayfası çıkmalıdır. Bu, Apache’nin dış dünyaya başarıyla hizmet verdiğini gösterir.
Adım 3: MariaDB Veritabanı Sunucusunun Kurulması
WordPress, tüm yazılarınızı, kullanıcı bilgilerinizi, site ayarlarınızı ve yorumlarınızı depolamak için ilişkisel bir veritabanına ihtiyaç duyar. Debian 9, varsayılan MySQL paketi yerine onun tamamen açık kaynaklı ve topluluk tarafından geliştirilen alternatifi olan MariaDB’yi sunar. MariaDB, MySQL ile tamamen uyumludur ve genellikle daha yüksek performans sunar.
MariaDB sunucusunu ve istemcisini kurmak için şu komutu çalıştırın:
sudo apt install mariadb-server mariadb-client -y
Kurulum bittikten sonra servisi başlatın ve etkinleştirin:
sudo systemctl start mariadb
sudo systemctl enable mariadb
Varsayılan kurulumda MariaDB güvenli değildir. Veritabanı sunucumuzu dış tehditlere karşı korumak için entegre gelen güvenlik betiğini çalıştırmalıyız:
sudo mysql_secure_installation
Bu betik size bir dizi soru soracaktır. Soruları aşağıdaki şekilde yanıtlamanız önerilir:
- Enter current password for root (enter for none): Doğrudan Enter tuşuna basın (varsayılan olarak şifre yoktur).
- Set root password? [Y/n]: “Y” yazıp Enter’a basın ve root kullanıcısı için güçlü, karmaşık bir şifre belirleyin. Bu şifreyi güvenli bir yerde saklayın.
- Remove anonymous users? [Y/n]: “Y” yazarak anonim kullanıcıları kaldırın. Bu, güvenlik için önemlidir.
- Disallow root login remotely? [Y/n]: “Y” yazarak root kullanıcısının dışarıdan (uzaktan) bağlanmasını engelleyin. Root sadece localhost üzerinden bağlanabilmelidir.
- Remove test database and access to it? [Y/n]: “Y” yazarak varsayılan olarak gelen test veritabanını silin.
- Reload privilege tables now? [Y/n]: “Y” yazarak yaptığınız tüm değişikliklerin hemen devreye girmesini sağlayın.
Artık güvenli bir veritabanı sunucusuna sahipsiniz.
Adım 4: PHP ve Gerekli PHP Uzantılarının Kurulması
WordPress, PHP tabanlı dinamik bir uygulamadır. PHP, sunucu tarafında kodları işler ve sonucu HTML olarak ziyaretçinin tarayıcısına gönderir. Debian 9, resmi depolarında PHP 7.0 sürümü ile birlikte gelir. Bu sürüm, WordPress’in temel işlevlerini yerine getirmesi için tamamen yeterlidir.
WordPress’in en iyi performansı göstermesi ve tüm modern eklentilerin, temaların sorunsuz çalışabilmesi için PHP ile birlikte bazı ek kütüphanelerin (uzantıların) de kurulması gerekir. Aşağıdaki komutla PHP’yi ve gerekli tüm uzantıları tek seferde kurun:
sudo apt install php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y
Bu paketlerin ne işe yaradığını kısaca açıklayalım:
- libapache2-mod-php: Apache’nin PHP kodlarını yorumlayabilmesini sağlayan entegrasyon modülüdür.
- php-mysql: PHP’nin MariaDB/MySQL veritabanı ile iletişim kurmasını sağlar.
- php-curl: WordPress’in harici API’lere ve sunuculara (güncellemeleri kontrol etmek vb. için) veri göndermesini sağlar.
- php-gd: Görsel işleme kütüphanesidir. WordPress’e yüklediğiniz resimlerin kırpılması, boyutlandırılması gibi işlemler için şarttır.
- php-mbstring: Çok baytlı karakter setlerini (örneğin Türkçe karakterler) düzgün işlemek için gereklidir.
- php-xml: XML verilerini işlemek için kullanılır, RSS beslemeleri ve bazı eklentiler için zorunludur.
- php-zip: Eklenti ve temaların zip formatında yüklenmesi ve açılması için gereklidir.
Kurulum tamamlandıktan sonra, Apache’nin PHP dosyalarını öncelikli olarak işlemesini sağlamak için yapılandırma dosyasını düzenleyebiliriz. /etc/apache2/mods-enabled/dir.conf dosyasını açın:
sudo nano /etc/apache2/mods-enabled/dir.conf
Dosya içeriği şu şekilde görünecektir:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
Buradaki index.php ifadesini alıp index.html‘in önüne taşıyın. Böylece bir dizin çağrıldığında Apache öncelikle PHP dosyasını arayacaktır:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
Dosyayı kaydedip kapatın. Ardından Apache servisini yeniden başlatın:
sudo systemctl restart apache2
PHP’nin doğru çalıştığını doğrulamak için geçici bir test dosyası oluşturabiliriz:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
Tarayıcınızdan http://sunucu_ip_adresi/info.php adresine gidin. Karşınıza PHP sürümünüzü ve yüklü modülleri gösteren detaylı bir tablo çıkmalıdır. Test başarılı olduysa, güvenlik nedeniyle bu dosyayı hemen silin:
sudo rm /var/www/html/info.php
Adım 5: WordPress İçin Veritabanı ve Kullanıcı Oluşturma
WordPress kurulum aşamasında bizden bir veritabanı adı, veritabanı kullanıcısı ve şifresi isteyecektir. Bu bilgileri oluşturmak için MariaDB komut satırına root olarak giriş yapalım:
sudo mysql -u root -p
Adım 3’te belirlediğiniz MariaDB root şifresini girin. Başarıyla giriş yaptıktan sonra sırasıyla aşağıdaki SQL komutlarını çalıştırın. Güvenlik amacıyla veritabanı adını ve şifresini kendinize göre özelleştirin:
CREATE DATABASE wordpress_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Not: utf8mb4 karakter seti, WordPress’in Türkçe dahil tüm dilleri, özel karakterleri ve emojileri veritabanında sorunsuz bir şekilde saklamasını sağlar.
Şimdi bu veritabanını yönetecek özel bir kullanıcı oluşturalım ve güçlü bir şifre atayalım:
CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'Guclu_Sifre_Buraya';
Oluşturduğumuz bu kullanıcıya, sadece az önce oluşturduğumuz wordpress_db veritabanı üzerinde tam yetki verelim:
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost';
Yapılan yetkilendirme değişikliklerinin geçerli olması için önbelleği temizleyelim ve MariaDB konsolundan çıkalım:
FLUSH PRIVILEGES;
EXIT;
Veritabanı hazırlıklarımız tamamlandı. Bu aşamada oluşturduğunuz veritabanı adını (wordpress_db), kullanıcı adını (wordpress_user) ve şifreyi (Guclu_Sifre_Buraya) bir yere not edin.
Adım 6: WordPress’in İndirilmesi ve Dosya İzinlerinin Ayarlanması
Veritabanımız hazır olduğuna göre artık WordPress’in en güncel sürümünü resmi web sitesinden indirebiliriz. Güvenlik ve temiz bir çalışma için indirme işlemini geçici dizin olan /tmp içinde gerçekleştireceğiz.
Dizine geçiş yapın ve güncel WordPress paketini indirin:
cd /tmp
wget https://wordpress.org/latest.tar.gz
İndirilen sıkıştırılmış arşivi açın:
tar -xvzf latest.tar.gz
Bu işlem sonucunda /tmp dizini altında wordpress adında yeni bir klasör oluşacaktır. Bu klasörün içeriğini, web sitemizin yayınlanacağı ana dizine taşıyalım. Biz bu rehberde /var/www/html/wordpress dizinini kullanacağız:
sudo mv wordpress /var/www/html/
Dosya İzinleri ve Sahiplik Ayarları
WordPress’in arka planda eklenti yükleyebilmesi, temaları güncelleyebilmesi ve medya kütüphanesine resim/video yükleyebilmesi için dosyaların sahibi, Apache web sunucusunun arka planda kullandığı sistem kullanıcısı olmalıdır. Debian tabanlı sistemlerde Apache, www-data kullanıcısı ve grubu altında çalışır.
Aşağıdaki komutla /var/www/html/wordpress dizininin sahipliğini www-data kullanıcısına verelim:
sudo chown -R www-data:www-data /var/www/html/wordpress
Güvenlik açısından dosya ve klasör izinlerinin de doğru ayarlanması gerekir. Klasörler için 755, dosyalar için ise 644 izin standarttır. Bu izinleri toplu olarak uygulamak için aşağıdaki find komutlarını çalıştırın:
sudo find /var/www/html/wordpress/ -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress/ -type f -exec chmod 644 {} \;
Bu ayarlar, sunucunuzun güvenliğini üst düzeye çıkarırken WordPress’in de sorunsuz çalışmasını garanti altına alır.
Adım 7: Apache Sanal Konak (Virtual Host) Yapılandırması
Apache’nin gelen istekleri doğru bir şekilde karşılaması ve alanadiniz.com adresine gelen bir ziyaretçiyi /var/www/html/wordpress dizinine yönlendirmesi için bir Sanal Konak (Virtual Host) yapılandırma dosyası oluşturmamız gerekir.
Yeni bir yapılandırma dosyası oluşturun:
sudo nano /etc/apache2/sites-available/wordpress.conf
Dosyanın içerisine aşağıdaki blokları yapıştırın. alanadiniz.com ve www.alanadiniz.com kısımlarını kendi gerçek alan adınızla değiştirmeyi unutmayın:
<VirtualHost *:80>
ServerAdmin webmaster@alanadiniz.com
DocumentRoot /var/www/html/wordpress
ServerName alanadiniz.com
ServerAlias www.alanadiniz.com
<Directory /var/www/html/wordpress/>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/wordpress_error.log
CustomLog ${APACHE_LOG_DIR}/wordpress_access.log combined
</VirtualHost>
Bu yapılandırmadaki kritik satırları inceleyelim:
- DocumentRoot: Sitenizin dosyalarının fiziksel olarak bulunduğu konumu belirtir.
- ServerName ve ServerAlias: Bu sanal konağın hangi alan adı isteklerine yanıt vereceğini belirler.
- AllowOverride All: WordPress’in kalıcı bağlantı (permalink) yapısının çalışabilmesi için
.htaccessdosyalarının Apache tarafından okunmasına ve işlenmesine izin verir.
Dosyayı kaydedip kapatın.
Şimdi, oluşturduğumuz bu yeni siteyi etkinleştirmemiz, varsayılan gelen boş siteyi devre dışı bırakmamız ve WordPress’in URL yönlendirmeleri için ihtiyaç duyduğu Apache rewrite modülünü aktif hale getirmemiz gerekiyor. Sırasıyla şu komutları uygulayın:
sudo a2ensite wordpress.conf
sudo a2dissite 000-default.conf
sudo a2enmod rewrite
Yaptığımız değişikliklerin Apache tarafından algılanması için yapılandırma testini çalıştıralım:
sudo apache2ctl configtest
Eğer çıktı olarak “Syntax OK” görüyorsanız, yaptığınız ayarlarda hiçbir yazım hatası yoktur. Apache servisini yeniden başlatarak değişiklikleri uygulayabilirsiniz:
sudo systemctl restart apache2
Adım 8: Kurulumun Web Arayüzü Üzerinden Tamamlanması
Sunucu tarafındaki tüm teknik hazırlıklar bittiğine göre artık tarayıcımızı açıp kuruluma geçebiliriz. Bilgisayarınızdan bir web tarayıcısı açın ve alan adınızı yazın:
http://alanadiniz.com
Karşınıza ilk olarak WordPress’in dil seçim ekranı gelecektir. Listeden Türkçe veya tercih ettiğiniz herhangi bir dili seçip “Devam Et” butonuna tıklayın.
Bir sonraki ekranda WordPress sizden veritabanı bilgilerini isteyecektir. “Başlayalım!” butonuna tıklayarak devam edin ve Adım 5’te oluşturduğumuz bilgileri ilgili alanlara girin:
- Veritabanı İsmi: wordpress_db
- Kullanıcı Adı: wordpress_user
- Parola: Guclu_Sifre_Buraya
- Veritabanı Sunucusu: localhost (Varsayılan olarak kalmalıdır)
- Tablo Ön eki: wp_ (Güvenlik için bunu
wp_custom_gibi farklı bir şeyle değiştirebilirsiniz, ancak sonuna alt çizgi koymayı unutmayın)
Bilgileri girdikten sonra “Gönder” butonuna tıklayın. Eğer dosya izinlerini Adım 6’da doğru yaptıysanız, WordPress veritabanı ile başarıyla iletişim kuracak ve arka planda otomatik olarak wp-config.php dosyasını oluşturacaktır. “Kurulumu çalıştır” butonuna tıklayarak devam edin.
Son adımda sitenizin temel kimlik bilgilerini ve yönetici hesabını oluşturmanız istenir:
- Site Başlığı: Sitenizin adını yazın (örneğin: Kişisel Blogum).
- Kullanıcı Adı: Yönetici paneline giriş yaparken kullanacağınız kullanıcı adı. Güvenlik nedeniyle asla “admin” veya “administrator” gibi tahmin edilebilir isimler seçmeyin.
- Parola: WordPress sizin için son derece güçlü bir şifre önerecektir. Bu şifreyi kullanmanız veya kendiniz güçlü bir şifre belirlemeniz önerilir.
- E-posta Adresiniz: Yönetici bildirimlerini ve şifre sıfırlama maillerini alacağınız geçerli bir e-posta adresi girin.
- Arama Motoru Görünürlüğü: Siteniz henüz yapım aşamasındayken Google gibi arama motorları tarafından indekslenmesini istemiyorsanız bu seçeneği işaretleyebilirsiniz. Siteniz tamamlandığında bu ayarı panelden kapatmayı unutmayın.
Tüm alanları doldurduktan sonra “WordPress’i Kur” butonuna tıklayın. Birkaç saniye içinde kurulum tamamlanacak ve karşınıza başarı ekranı gelecektir. “Giriş” butonuna tıklayarak kullanıcı adınız ve şifrenizle WordPress yönetim paneline (/wp-admin) giriş yapabilirsiniz. Tebrikler, WordPress siteniz artık yayında!
Adım 9: Kurulum Sonrası Güvenlik ve Optimizasyon Adımları
WordPress sitenizin kurulumunu tamamladınız ancak işiniz henüz bitmedi. Sitenizin güvenliğini artırmak ve modern web standartlarına uyum sağlamak için aşağıdaki adımları mutlaka uygulamalısınız.
1. Let’s Encrypt ile Ücretsiz SSL Sertifikası Kurulumu (HTTPS)
Günümüzde web sitelerinin HTTPS protokolü üzerinden şifrelenmiş olarak hizmet vermesi bir zorunluluktur. SSL sertifikası olmayan siteler tarayıcılarda “Güvenli Değil” olarak işaretlenir ve arama motoru sıralamalarında geriye düşer. Let’s Encrypt, tamamen ücretsiz ve otomatik yenilenen SSL sertifikaları sunar.
Debian 9 üzerinde Certbot aracını kullanarak SSL sertifikasını saniyeler içinde kurabilirsiniz. Öncelikle Certbot istemcisini ve Apache eklentisini kurun:
sudo apt install certbot python-certbot-apache -y
Ardından, alan adınız için SSL sertifikası oluşturmak ve Apache yapılandırmanızı otomatik olarak HTTPS’e yönlendirecek şekilde güncellemek için şu komutu çalıştırın:
sudo certbot --apache -d alanadiniz.com -d www.alanadiniz.com
Bu komut sırasında sizden bir e-posta adresi istenecek ve kullanım koşullarını kabul etmeniz istenecektir. En kritik aşamada size tüm trafiği HTTPS’e yönlendirip yönlendirmek istemediğiniz sorulacaktır (Redirect seçeneği). Sitenizin her zaman güvenli bağlantı kullanması için 2 (Redirect) seçeneğini seçin.
İşlem bittiğinde sitenizi tarayıcıda https://alanadiniz.com olarak açtığınızda adres çubuğunda asma kilit simgesini göreceksiniz.
2. wp-config.php Dosyasının Güvenliğini Sağlama
wp-config.php dosyası, veritabanı şifreleriniz de dahil olmak üzere sitenizin en hassas verilerini barındırır. Bu dosyanın dışarıdan okunmasını engellemek için dosya izinlerini sıkılaştırmalıyız.
Aşağıdaki komutla dosya izinlerini sadece root ve web sunucusunun okuyabileceği şekilde 600 veya 640 olarak ayarlayın:
sudo chmod 600 /var/www/html/wordpress/wp-config.php
3. PHP Yükleme Limitlerini Artırma
Varsayılan PHP ayarlarında dosya yükleme limiti oldukça düşüktür (genellikle 2MB). Büyük boyutlu temalar veya görseller yüklerken hata almamak için bu limitleri artırmamız gerekir.
Debian 9 üzerindeki PHP yapılandırma dosyasını açın:
sudo nano /etc/php/7.0/apache2/php.ini
Dosya içerisinde aşağıdaki parametreleri bulun (Nano’da arama yapmak için CTRL+W kullanabilirsiniz) ve değerlerini şu şekilde güncelleyin:
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
Dosyayı kaydedip kapatın ve değişikliklerin geçerli olması için Apache’yi yeniden başlatın:
sudo systemctl restart apache2
Sonuç
Bu rehberimizde, kararlı ve güvenli yapısıyla bilinen Debian 9 (Stretch) işletim sistemi üzerinde adım adım LAMP yığınını (Apache, MariaDB, PHP) kurduk ve üzerine dünyanın en popüler içerik yönetim sistemi olan WordPress’i başarıyla entegre ettik. Son olarak web sitemizi Let’s Encrypt SSL sertifikası ile şifreleyerek modern güvenlik standartlarına ulaştırdık.
Artık tamamen kontrolü sizde olan, yüksek performanslı ve güvenli bir web barındırma ortamına sahipsiniz. Sitenizin güvenliğini korumak için Debian işletim sisteminizi, Apache ve MariaDB servislerinizi ve en önemlisi WordPress çekirdeğini, temalarını ve eklentilerini düzenli olarak güncellemeyi ihmal etmeyin. Güçlü şifreler kullanmak ve düzenli yedek almak, dijital varlığınızı korumanın en temel kurallarıdır.
