Yeni Bir Ubuntu 14.04 Sunucusunda LAMP, SFTP ve DNS ile Sitenizi Nasıl Başlatırsınız?
Modern web uygulamalarının temelini oluşturan sunucu altyapıları, bir sitenin başarıyla yayına alınmasında kritik rol oynar. Bu makalede, yeni bir Ubuntu 14.04 sunucusu üzerinde popüler LAMP (Linux, Apache, MySQL, PHP) yığınını kurmayı, güvenli dosya transferi için SFTP’yi yapılandırmayı ve alan adınızı sunucunuza yönlendirmek için DNS ayarlarını yapmayı adım adım inceleyeceğiz. Ubuntu 14.04’ün uzun süreli destek (LTS) sürümü olması, belirli projeler veya eski sistemlerle uyumluluk gerektiren durumlar için hala geçerli bir seçenek olmasını sağlamaktadır. Bu rehber, web sitenizi güvenli ve verimli bir şekilde yayına almak için ihtiyacınız olan tüm temel adımları kapsamaktadır.
1. Sunucuya Hazırlık ve İlk Adımlar
Sunucunuzu kullanmaya başlamadan önce, temel sistem ayarlarını yapmalı ve güvenlik önlemlerini almalısınız.
1.1. SSH ile Sunucuya Bağlanma
Yeni sunucunuza erişim genellikle SSH (Secure Shell) protokolü üzerinden sağlanır. Bir terminal veya SSH istemcisi kullanarak sunucunuza bağlanabilirsiniz.
ssh kullanıcıadı@sunucu_ip_adresi
Burada kullanıcıadı genellikle root veya sunucu sağlayıcınızın size verdiği varsayılan kullanıcı adıdır. sunucu_ip_adresi ise sunucunuzun genel IP adresidir. İlk bağlantıda parolanızı girmeniz istenecektir.
1.2. Sistemi Güncelleme
Sisteminizi güncel tutmak, hem güvenlik hem de performans açısından önemlidir. Bağlandıktan sonra ilk yapmanız gereken şey budur.
sudo apt-get update
sudo apt-get upgrade -y
apt-get update komutu, paket listelerini güncellerken, apt-get upgrade komutu kurulu paketleri en son sürümlerine yükseltir. -y parametresi, tüm sorulara otomatik olarak “evet” yanıtı vermenizi sağlar.
1.3. Yeni Bir Kullanıcı Oluşturma ve Yetkilendirme
root kullanıcısı ile doğrudan çalışmak güvenlik riskleri taşır. Bu nedenle, sudo yetkilerine sahip yeni bir kullanıcı oluşturmak en iyi uygulamadır.
sudo adduser siteniz_kullanicisi
Bu komut, yeni bir kullanıcı oluşturmanızı ve parolasını belirlemenizi isteyecektir. Ardından, bu kullanıcıya sudo yetkisi vererek yönetici görevlerini yerine getirebilmesini sağlayın:
sudo usermod -aG sudo siteniz_kullanicisi
Şimdi root hesabından çıkış yapıp yeni kullanıcınızla tekrar bağlanabilirsiniz:
exit
ssh siteniz_kullanicisi@sunucu_ip_adresi
1.4. Güvenlik Duvarı (UFW) Kurulumu ve Ayarları
Güvenlik duvarı, sunucunuza gelen ve giden trafiği kontrol ederek yetkisiz erişimi engeller. Ubuntu’da UFW (Uncomplicated Firewall) kullanımı kolay ve etkilidir.
sudo apt-get install ufw -y
Kurulumdan sonra, gerekli portları açmalısınız. SSH (22), HTTP (80) ve HTTPS (443) temel olarak açılması gereken portlardır.
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full' # Bu, hem 80 hem de 443 portlarını kapsar
sudo ufw enable
sudo ufw enable komutu güvenlik duvarını etkinleştirir. Bu komutu çalıştırdıktan sonra bir uyarı alabilirsiniz, onaylamak için y yazıp Enter tuşuna basın. Güvenlik duvarının durumunu kontrol etmek için:
sudo ufw status
2. LAMP Yığını Kurulumu (Apache, MySQL, PHP)
LAMP, dinamik web siteleri ve uygulamaları barındırmak için güçlü ve yaygın olarak kullanılan bir yazılım paketidir.
2.1. Apache Web Sunucusu Kurulumu
Apache, dünyanın en popüler web sunucularından biridir.
sudo apt-get install apache2 -y
Kurulum tamamlandıktan sonra Apache otomatik olarak başlayacaktır. Çalışıp çalışmadığını kontrol etmek için:
sudo service apache2 status
Tarayıcınızdan sunucunuzun IP adresini ziyaret ettiğinizde, “It works!” yazan varsayılan Apache sayfasını görmelisiniz.
2.2. MySQL Veritabanı Sunucusu Kurulumu
MySQL, web uygulamaları için güçlü bir ilişkisel veritabanı yönetim sistemidir.
sudo apt-get install mysql-server mysql-client -y
Kurulum sırasında MySQL root kullanıcısı için bir parola belirlemeniz istenecektir. Bu parolayı unutmayın, çünkü veritabanı yönetimi için gereklidir.
Kurulum tamamlandıktan sonra, MySQL kurulumunuzu güvence altına almak için mysql_secure_installation komutunu çalıştırmanız şiddetle tavsiye edilir:
sudo mysql_secure_installation
Bu komut size bir dizi soru soracaktır:
* VALIDATE PASSWORD PLUGIN: Parola politikası belirlemenizi sağlar. Genellikle “Hayır” seçeneğini seçip güçlü bir parola belirlemek yeterlidir.
* Change the root password?: Daha önce belirlediğiniz parolayı değiştirmek isterseniz “Evet”.
* Remove anonymous users?: Anonim kullanıcıları kaldırmak güvenlik için önemlidir, “Evet”.
* Disallow root login remotely?: root kullanıcısının uzaktan bağlantısını engellemek güvenlik açısından kritik öneme sahiptir, “Evet”.
* Remove test database and access to it?: Test veritabanını kaldırmak da iyi bir uygulamadır, “Evet”.
* Reload privilege tables now?: Değişikliklerin hemen etkili olması için “Evet”.
2.3. PHP Kurulumu
PHP, dinamik web içeriği oluşturmak için kullanılan sunucu tarafı bir betik dilidir. Ubuntu 14.04, PHP 5.x sürümlerini kullanır.
sudo apt-get install php5 libapache2-mod-php5 php5-mysql php5-cli php5-gd -y
* php5: PHP motorunun kendisi.
* libapache2-mod-php5: PHP’nin Apache ile entegrasyonunu sağlar.
* php5-mysql: PHP’nin MySQL veritabanlarıyla iletişim kurmasını sağlayan modül.
* php5-cli: Komut satırından PHP betiklerini çalıştırmak için.
* php5-gd: Görüntü işleme fonksiyonları için (örneğin, CAPTCHA oluşturma, küçük resimler).
PHP modüllerini kurduktan sonra, Apache’nin PHP’yi tanıması için web sunucusunu yeniden başlatmanız gerekir:
sudo service apache2 restart
PHP’nin doğru şekilde çalıştığını test etmek için, web kök dizininde (varsayılan olarak /var/www/html/) bir info.php dosyası oluşturabilirsiniz:
sudo nano /var/www/html/info.php
Dosyanın içine aşağıdaki kodu ekleyin:
Kaydedip kapatın (Ctrl+O, Enter, Ctrl+X). Şimdi tarayıcınızdan http://sunucu_ip_adresi/info.php adresini ziyaret ettiğinizde, PHP kurulumunuzla ilgili detaylı bir bilgi sayfası görmelisiniz. Güvenlik nedeniyle, bu dosyayı testten sonra silmeyi unutmayın.
sudo rm /var/www/html/info.php
3. Sanal Host (Virtual Host) Yapılandırması
Sanal hostlar, tek bir sunucu üzerinde birden fazla web sitesini barındırmanıza olanak tanır. Her web sitesi için ayrı bir yapılandırma dosyası oluşturacağız.
3.1. Web Sitesi Dizini Oluşturma
Web sitenizin dosyalarını barındıracak bir dizin yapısı oluşturun. Genellikle /var/www/alanadiniz.com/public_html şeklinde bir yapı kullanılır.
sudo mkdir -p /var/www/alanadiniz.com/public_html
public_html dizini, sitenizin genel erişime açık dosyalarını içerecektir.
3.2. Dizin İzinlerini Ayarlama
Apache web sunucusunun (genellikle www-data kullanıcısı altında çalışır) web sitesi dosyalarına erişebilmesi için doğru izinleri ayarlamanız gerekir.
sudo chown -R www-data:www-data /var/www/alanadiniz.com
sudo chmod -R 755 /var/www/alanadiniz.com
Bu komutlar, tüm dizin ve dosya sahipliğini www-data kullanıcısına ve grubuna atar ve 755 izinlerini ayarlar (755 genellikle web dizinleri için güvenli bir varsayılan izindir: sahibine tam okuma/yazma/çalıştırma, diğerlerine sadece okuma/çalıştırma).
3.3. Sanal Host Yapılandırma Dosyası Oluşturma
Yeni bir sanal host yapılandırma dosyası oluşturmak için Apache’nin sites-available dizinini kullanacağız.
sudo nano /etc/apache2/sites-available/alanadiniz.com.conf
Dosyanın içine aşağıdaki içeriği ekleyin. alanadiniz.com ve www.alanadiniz.com yerine kendi alan adınızı yazmayı unutmayın.
ServerAdmin webmaster@localhost
ServerName alanadiniz.com
ServerAlias www.alanadiniz.com
DocumentRoot /var/www/alanadiniz.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
* ServerAdmin: Sunucu yöneticisinin e-posta adresi.
* ServerName: Sitenizin birincil alan adı.
* ServerAlias: Sitenizin alternatif alan adları (örn. www öneki ile).
* DocumentRoot: Web sitesi dosyalarının bulunduğu dizin.
* ErrorLog ve CustomLog: Hata ve erişim kayıtlarının tutulduğu dosyalar.
* : Belirli bir dizin için özel yapılandırmalar. AllowOverride All özellikle önemlidir, çünkü .htaccess dosyalarının kullanılmasını sağlar.
Kaydedip kapatın.
3.4. Sanal Hostu Etkinleştirme
Yeni oluşturduğunuz sanal hostu etkinleştirmek ve Apache’ye bildirmek için a2ensite komutunu kullanın:
sudo a2ensite alanadiniz.com.conf
Varsayılan Apache yapılandırmasını (000-default.conf) devre dışı bırakmak iyi bir uygulamadır, böylece sunucu IP adresine doğrudan erişimde sizin siteniz görünür.
sudo a2dissite 000-default.conf
Apache yapılandırmasında herhangi bir hata olup olmadığını kontrol etmek için:
sudo apache2ctl configtest
Eğer Syntax OK çıktısını alırsanız, Apache’yi yeniden başlatabilirsiniz:
sudo service apache2 restart
4. SFTP Erişimi Kurulumu
SFTP (SSH File Transfer Protocol), dosyaları sunucuya güvenli bir şekilde yüklemenin ve indirmelerin en iyi yoludur. SFTP, SSH’nin bir parçası olduğu için ayrı bir kurulum gerektirmez, ancak güvenlik için belirli bir dizinle sınırlı (chroot) bir SFTP kullanıcısı yapılandırmak iyi bir uygulamadır.
4.1. SFTP Kullanıcısı Oluşturma
Web siteniz için ayrı bir SFTP kullanıcısı oluşturun. Bu kullanıcı, sadece belirli bir dizine erişebilecek şekilde yapılandırılacaktır.
sudo adduser sftpuser
Parola belirledikten sonra, bu kullanıcıyı özel bir SFTP grubuna ekleyeceğiz.
sudo groupadd sftpusers
sudo usermod -aG sftpusers sftpuser
4.2. Chroot Jail ile SFTP Kullanıcısını Sınırlama
SFTP kullanıcılarının sunucunun tüm dosya sistemine erişmesini engellemek için chroot jail kullanacağız. Bu, kullanıcının sadece belirli bir dizin içinde çalışmasını sağlar.
SSH yapılandırma dosyasını düzenleyin:
sudo nano /etc/ssh/sshd_config
Dosyada aşağıdaki satırı bulun ve yorum satırı yapın (başına # ekleyin):
#Subsystem sftp /usr/lib/openssh/sftp-server
Hemen altına yeni bir satır ekleyin:
Subsystem sftp internal-sftp
Dosyanın en altına aşağıdaki bloğu ekleyin:
Match Group sftpusers
ChrootDirectory /var/www/alanadiniz.com
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PasswordAuthentication yes
* Match Group sftpusers: Bu kuralların sadece sftpusers grubundaki kullanıcılar için geçerli olmasını sağlar.
* ChrootDirectory /var/www/alanadiniz.com: Kullanıcıların bu dizinle sınırlanmasını sağlar. ÖNEMLİ: Bu dizinin ve üst dizinlerinin sahibi root olmalı ve sadece root yazma iznine sahip olmalıdır.
* ForceCommand internal-sftp: Kullanıcının sadece SFTP yapabilmesini sağlar, SSH kabuk erişimini engeller.
* AllowTcpForwarding no, X11Forwarding no: Güvenlik için bu özellikleri devre dışı bırakır.
* PasswordAuthentication yes: Parola ile giriş yapılabilmesini sağlar.
Kaydedip kapatın.
4.3. Chroot Dizin İzinlerini Ayarlama
Chroot dizin kuralları gereği, /var/www/alanadiniz.com dizininin sahibi root olmalı ve diğer kullanıcıların bu dizine yazma izni olmamalıdır. Ancak SFTP kullanıcısının sitenin dosyalarını yükleyebilmesi için public_html dizinine yazma izni olmalıdır.
sudo chown root:root /var/www/alanadiniz.com
sudo chmod 755 /var/www/alanadiniz.com
sudo chown sftpuser:sftpusers /var/www/alanadiniz.com/public_html
sudo chmod 775 /var/www/alanadiniz.com/public_html
Bu ayarlarla, sftpuser /var/www/alanadiniz.com dizinine chroot edilecek ve public_html dizinine dosya yükleyebilecektir.
Değişikliklerin etkili olması için SSH servisini yeniden başlatın:
sudo service ssh restart
Şimdi bir SFTP istemcisi (FileZilla, WinSCP vb.) kullanarak sftpuser adı ve parolasıyla sunucunuza bağlanmayı deneyin. Başarılı bir şekilde bağlandığınızda, sadece /public_html dizinini görmelisiniz.
5. DNS Yapılandırması
Alan adınızın (örneğin alanadiniz.com) sunucunuzun IP adresine işaret etmesi için DNS (Domain Name System) ayarlarını yapmanız gerekir. Bu işlem, alan adı sağlayıcınızın (domain registrar) veya DNS hizmeti sağlayıcınızın kontrol panelinden yapılır.
5.1. A Kaydı Oluşturma
Alan adı sağlayıcınızın kontrol paneline giriş yapın ve DNS yönetimi veya “Manage DNS” bölümünü bulun. Burada, sunucunuzun genel IP adresine işaret eden bir A kaydı oluşturmanız gerekecektir.
* Tip (Type): A
* Ad (Name/Host): @ (Bu, doğrudan alanadiniz.com için geçerlidir)
* Değer (Value/Points To): Sunucunuzun IP adresi (örn. 192.0.2.1)
* TTL (Time To Live): Genellikle varsayılan olarak bırakılır (örn. 3600 saniye veya 1 saat).
www.alanadiniz.com için de bir kayıt oluşturmanız gerekebilir. Bunu iki şekilde yapabilirsiniz:
1. A Kaydı:
* Tip (Type): A
* Ad (Name/Host): www
* Değer (Value/Points To): Sunucunuzun IP adresi
2. CNAME Kaydı (Tavsiye Edilen):
* Tip (Type): CNAME
* Ad (Name/Host): www
* Değer (Value/Points To): alanadiniz.com (veya @)
CNAME kaydı, www alt alan adının alanadiniz.com ile aynı IP adresini kullanmasını sağlar. Eğer sunucunuzun IP adresi değişirse, sadece A kaydını güncellemeniz yeterli olur.
5.2. DNS Yayılımı (Propagation)
DNS değişiklikleri, dünya genelindeki DNS sunucularına yayılması biraz zaman alabilir. Bu süreye DNS yayılımı (propagation) denir ve birkaç dakika ile 48 saat arasında değişebilir (TTL değerine bağlı olarak). Değişikliklerinizi kontrol etmek için dnschecker.org gibi siteleri kullanabilirsiniz.
6. Sitenizi Yükleme ve Son Kontroller
Artık sunucunuz hazır, SFTP erişiminiz var ve DNS ayarlarınız yapıldı. Sitenizi yayına almaya hazırsınız.
6.1. Web Sitesi Dosyalarını Yükleme
SFTP istemcinizi kullanarak sftpuser ile sunucunuza bağlanın ve web sitenizin tüm dosyalarını /public_html dizinine yükleyin. Eğer bir HTML sitesi ise, index.html dosyasını bu dizine koyun. Eğer bir PHP uygulaması (WordPress, Joomla vb.) ise, uygulamanın dosyalarını buraya kopyalayın.
6.2. Veritabanı Oluşturma ve İçe Aktarma (Gerekirse)
Eğer siteniz bir veritabanı kullanıyorsa, MySQL’de bir veritabanı ve kullanıcı oluşturmanız gerekir.
sudo mysql -u root -p
MySQL root parolanızı girin. Ardından aşağıdaki komutları çalıştırarak bir veritabanı ve kullanıcı oluşturun:
CREATE DATABASE sitenizin_veritabani;
CREATE USER 'siteniz_kullanici'@'localhost' IDENTIFIED BY 'guclu_parola';
GRANT ALL PRIVILEGES ON sitenizin_veritabani.* TO 'siteniz_kullanicisi'@'localhost';
FLUSH PRIVILEGES;
EXIT;
* sitenizin_veritabani: Web sitenizin kullanacağı veritabanı adı.
* siteniz_kullanicisi: Bu veritabanına erişecek kullanıcı adı.
* guclu_parola: Bu kullanıcı için güçlü bir parola.
Eğer mevcut bir veritabanı yedeğiniz varsa (örn. .sql dosyası), bunu yeni oluşturduğunuz veritabanına aktarabilirsiniz:
mysql -u siteniz_kullanicisi -p sitenizin_veritabani < /yol/to/veritabani_yedegi.sql
Parola istendiğinde siteniz_kullanicisi için belirlediğiniz parolayı girin.
6.3. Site Yapılandırmasını Güncelleme
Eğer siteniz bir PHP uygulamasıysa (WordPress gibi), uygulamanın yapılandırma dosyasını (örn. wp-config.php) düzenleyerek yeni veritabanı adı, kullanıcı adı ve parolayı girmeniz gerekebilir. Ayrıca, sitenin URL'sini (alan adınızı) doğru şekilde ayarladığınızdan emin olun.
6.4. Tarayıcıdan Siteyi Kontrol Etme
DNS yayılımı tamamlandıktan sonra, tarayıcınızdan http://alanadiniz.com adresini ziyaret ederek sitenizin doğru bir şekilde çalıştığını kontrol edin. Her şey yolundaysa, siteniz yayında demektir!
7. Ek Güvenlik ve Optimizasyon İpuçları
Sitenizi yayına aldıktan sonra, güvenliği ve performansı artırmak için ek adımlar atabilirsiniz:
* HTTPS (SSL/TLS) Kurulumu: Let's Encrypt gibi ücretsiz sertifikalarla sitenizi HTTPS üzerinden yayınlayarak güvenliği artırın. Bu, ziyaretçilerinizin tarayıcılarında "güvenli" ibaresini görmelerini sağlar.
* Otomatik Güncellemeler: Güvenlik yamalarının otomatik olarak uygulanması için otomatik güncellemeleri yapılandırın.
* Yedeklemeler: Düzenli olarak sitenizin dosyalarını ve veritabanını yedekleyin.
* Güçlü Parolalar: Tüm kullanıcı hesapları ve veritabanı için güçlü, karmaşık parolalar kullanın.
* Log Dosyalarını İzleme: Apache ve sistem loglarını düzenli olarak kontrol ederek olası hataları veya güvenlik sorunlarını erken tespit edin.
* PHP Bellek Sınırları: Büyük uygulamalar için /etc/php5/apache2/php.ini dosyasında memory_limit gibi PHP ayarlarını optimize edebilirsiniz.
Sonuç
Bu kapsamlı rehberde, yeni bir Ubuntu 14.04 sunucusu üzerinde LAMP yığınını kurmayı, güvenli SFTP erişimini yapılandırmayı ve alan adınızı sunucunuza yönlendirmek için DNS ayarlarını yapmayı adım adım öğrendiniz. Artık web sitenizi güvenli ve verimli bir şekilde yayına alabilecek bilgi ve araçlara sahipsiniz. Unutmayın ki sunucu yönetimi sürekli bir öğrenme ve bakım sürecidir. Güvenlik ve performans için düzenli güncellemeler ve izlemeler yapmaya devam edin. Başarılar dileriz!