Takip et

Yeni Bir Ubuntu 14.04 Sunucusunda LAMP, SFTP ve DNS ile Sitenizi Nasıl Başlatırsınız?

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 al

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!

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.