, ,

LAMP Server: A Comprehensive Guide for Linux System Administrators


LAMP stack, web siteleri ve web uygulamaları geliştirmek için bir araya gelen dört temel yazılım teknolojisinden oluşan bir çözümdür. LAMP adını, Linux işletim sistemi, Apache web sunucusu, MySQL veritabanı yönetim sistemi ve PHP programlama dilinin baş harflerinden alır. Bu teknolojilerin ortak noktası, hepsinin açık kaynaklı olmasıdır. Bu, yazılımların topluluk tarafından geliştirilip desteklendiği ve herkesin özgürce kullanabileceği anlamına gelir. LAMP stack, geliştiricilere web içeriklerini oluşturma, barındırma ve yönetme konusunda güçlü ve esnek bir altyapı sunar. Bugün sıkça ziyaret ettiğiniz pek çok web sitesinin temelinde bu popüler teknoloji çözümü yer alır.

LAMP Sunucusunun Gereksinimleri

LAMP sunucusu oluşturmak için aşağıdaki gereksinimlere ihtiyaç duyulur:

  1. Statik IP Adresi:
    LAMP sunucusunun kararlı bir şekilde çalışması için bir statik IP adresine sahip olması gerekir. Bu, sunucunun ağ üzerinden erişilebilirliğini sağlar.
  2. Linux İşletim Sistemi:
    LAMP stack, Linux tabanlı işletim sistemleri üzerinde çalışır. Bu sistem, fiziksel bir makinede, sanal bir ortamda ya da bulut tabanlı bir altyapıda kurulabilir.
  3. Kredi Kartı

LAMP Sunucusunun Kurulumu

LAMP sunucusunun kurulumu birkaç temel adımdan oluşur:

1. Linux İşletim Sistemini Kurma

LAMP sunucusunun temel taşı olan Linux işletim sistemi, bulut tabanlı bir platformda veya sanal bir makinede kurulabilir. Kullanacağınız dağıtım genellikle Ubuntu, CentOS veya Debian olabilir.

2. Domain Satın Almak veya Lokal Sunucu Kurmak

Eğer web sitenizi internet üzerinde erişilebilir yapmak istiyorsanız bir domain adı satın almanız gerekir. Alternatif olarak, bir lokal sunucu oluşturabilirsiniz, bu durumda IP adresiyle erişim sağlanır.

3. Apache HTTP Web Sunucusunu Kurmak

Web içeriklerini barındırmak ve kullanıcılara sunmak için Apache HTTP sunucusu yüklenir. Apache’nin yapılandırması, sunucu trafiğini yönetmek ve performansı optimize etmek için kritik öneme sahiptir.

4. Authoritative DNS Sunucusunu Konfigüre Etmek

Alan adı çözümleme işlemlerinin düzgün çalışabilmesi için authoritative bir DNS sunucusu yapılandırılmalıdır. Bu, domain ismini IP adresine bağlayarak kullanıcıların siteye erişimini sağlar.

5. OpenSSL ve Dijital Sertifikalar ile Apache Güvenliği

Sunucunun güvenliğini artırmak için OpenSSL kullanılarak dijital sertifikalar oluşturulur. Bu, HTTPS protokolüyle güvenli bir bağlantı sağlar.

6. PHP Kurulumu

Web uygulamalarının dinamik özelliklerini desteklemek için PHP yüklenir. PHP’nin doğru yapılandırılması, web sitenizin işlevselliği ve performansı açısından önemlidir.

7. MySQL Kurulumu

Veritabanı yönetimi için MySQL yüklenir. Kullanıcı dostu bir arayüz sağlamak ve veritabanlarını kolayca yönetmek için phpMyAdmin de kurulabilir.

8. WordPress Kurulumu ve Konfigürasyonu (Opsiyonel)

Eğer bir içerik yönetim sistemi (CMS) olarak WordPress kullanmayı planlıyorsanız, WordPress kurulumu yapılabilir. Bu süreçte veritabanı bağlantıları ve temel yapılandırmalar gerçekleştirilir.

1. Linux İşletim Sistemini Kurma

Linux işletim sistemini bulut üzerinde kurmayı tercih ediyorum çünkü bulut ortamı, harici bir sistem olarak daha güvenli bir yapı sunuyor. Ayrıca, bulutta statik IP adresi sağlamak da daha kolay bir süreç. Ancak, aynı işlemleri bir sanal makine üzerinde de gerçekleştirebilirsiniz.

Bu makalede, Linux işletim sistemimizi DigitalOcean üzerinde kuracağız.

DigitalOcean, geliştiriciler için basit ve ölçeklenebilir bulut çözümleri sunan bir platformdur. https://m.do.co/c/d9d0232165f9 üzerinden bir hesap oluşturabilirsiniz. Kayıt olduğunuzda, 60 gün boyunca kullanabileceğiniz 200$ değerinde ücretsiz kredi kazanabilirsiniz. Ancak, hesabınızın aktif hale gelebilmesi için kredi kartı bilgilerinizi girmeniz gerekecektir (kartınızdan herhangi bir ücret alınmayacaktır).

Hesabınızı oluşturup giriş yaptıktan sonra, Create menüsüne giderek Droplets seçeneğini tıklamanız gerekiyor. Bu adımla sunucunuzu oluşturmaya başlayabilirsiniz.

Droplets menüsüne girdikten sonra, bir veri merkezi seçmeniz gerekiyor. Size en yakın veri merkezini seçmeniz, bağlantı hızını ve sunucu performansını optimize etmek açısından önemlidir. Türkiye’de bulunduğumuz için Frankfurt veri merkezini seçmeniz tavsiye edilir. Bu, hem düşük gecikme süresi sağlar hem de bağlantınızın daha stabil olmasına yardımcı olur.

Bu menüden kullanacağınız Linux dağıtımını seçmeniz gerekiyor. Ben Red Hat tabanlı sistemlere aşina olduğum için CentOS seçiyorum. Ancak, ihtiyacınıza veya tercihinize göre Ubuntu, Debian gibi diğer dağıtımları da seçebilirsiniz. Seçim yaparken sunucunuzun gereksinimlerine ve kullanım amacınıza uygun bir dağıtım tercih etmeye özen gösterin.

Bu menüde, ihtiyacınıza uygun CPU ve bellek (RAM) seçeneklerini belirleyebilirsiniz. Genellikle temel projeler veya düşük yoğunluklu işlemler için 2GB RAM yeterli olacaktır.

Bu menüde, sunucunuza erişim sağlamak için bir Root parolası belirlemeniz gerekiyor. Ardından Create Droplet seçeneğini tıklamanız gerekiyor.

2. Domain Satın Almak veya Lokal Sunucu Kurmak

  • Domain Satın Almak:
    Web sitenizin bir adı ve internet üzerindeki adresi olması için bir domain adı satın almanız gerekir. Domain, insanların web sitenize kolayca erişebilmesi için IP adresi yerine kullanılan bir isimdir (örneğin, www.ornek.com). Domain alırken güvenilir bir kayıt firması seçmek önemlidir. Ayrıca, domain için yıllık ödeme yapılması gerektiğini unutmamalısınız. Domain satın almak için popüler ve güvenilir bazı siteler şunlardır:
  1. GoDaddy — Dünyanın en büyük domain kayıt firmalarından biridir. Web sitesi: www.godaddy.com
  2. Namecheap — Uygun fiyatlar ve kullanıcı dostu arayüz ile bilinir. Web sitesi: www.namecheap.com
  3. Bluehost — Hosting ve domain kayıt hizmetleri sunar, özellikle WordPress ile entegrasyon sağlar. Web sitesi: www.bluehost.com
  4. Google Domains — Google’ın domain kayıt servisi, Google hesabınızla entegre çalışır. Web sitesi: domains.google
  5. Hostinger — Uygun fiyatlarla domain ve hosting hizmeti sunar. Web sitesi: www.hostinger.com
  6. Name.com — Domain, hosting ve SSL hizmetleri sunar. Web sitesi: www.name.com

Domain satın aldıktan sonra, Custom Hostname (özel ana bilgisayar adı) belirlemeniz gerekiyor. Örneğin, GoDaddy’de bu işlemi yaparken, ana bilgisayar adı ve IP adresi (DigitalOcean’daki sunucunuzdan aldığınız IP adresi) girmeniz gerekir. Ardından, oluşturduğunuz custom hostname’i ad sunucuları (nameservers) menüsünden seçmeniz gerekecektir. Bu işlem, domaininizi doğru bir şekilde yönlendirmek için önemlidir.

  • Lokal Sunucu Kurmak:
    Eğer sadece iç ağınızda erişilebilen bir sunucu oluşturmak istiyorsanız, lokal sunucu kurmayı tercih edebilirsiniz. Bu durumda, internet üzerinde bir domain gerekmemektedir, ancak yalnızca yerel ağdaki cihazlar sunucuya erişebilir. Lokal sunucu, web uygulamalarını geliştirirken veya test ederken faydalıdır, ancak geniş kitlelere ulaşmayı planlıyorsanız domain almak daha uygun olacaktır.

3. Apache HTTP Web Sunucusunu Kurmak

dnf install httpd -y

komutunu çalıştırarak Apache web sunucusunu makinemize indirip kuruyoruz.

Apache web sunucusunu başlatmak için şu komutları kullanıyoruz:

systemctl start httpd
systemctl enable --now httpd

Ayrıca, Apache web sunucusunun firewall üzerinden erişilebilir olabilmesi için şu komutları çalıştırarak HTTP ve HTTPS servislerini firewall’a dahil etmeyi unutmayın:

firewall-cmd --add-service=http --permanent 
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

4. Authoritative DNS Sunucusunu Konfigüre Etmek

BIND (Berkeley Internet Name Domain) servisini kullanarak DNS sistemimizi kuruyoruz. İlk olarak, gerekli paketi kurmak için aşağıdaki komutu çalıştırıyoruz:

dnf install bind

Bind sunucusunu başlatmak ve sistem yeniden başlatıldığında otomatik olarak çalışmasını sağlamak için şu komutları kullanıyoruz:

systemctl start named
systemctl enable --now named

Herhangi bir alan adı, o alan için yetkili (authoritative) olan bir DNS sunucusunda barındırılmalıdır. Bu sunucu, alan adıyla ilgili bilgilerin nihai kaynağıdır. İnternet kullanıcıları bir alan adının IP adresini sorguladığında, yerel DNS sunucuları bu bilgiyi yetkili DNS sunucularından alır.

Kendi domain’imize göre BIND servisini konfigüre etmek için, /etc/named.conf dosyasına zone bilgimizi eklememiz gerekiyor. Bunun için aşağıdaki gibi bir düzenleme yapabilirsiniz:

vim /etc/named.conf
zone "ornekdomin.com" IN {
type master;
file "/var/named/db.ornekdomin.com";
};

Bu düzenlemeyi yaptıktan sonra konfigürasyonu doğrulamak ve servisi yeniden başlatmak için şu komutları kullanabilirsiniz:

named-checkconf
systemctl restart named

Domain’imizin alacağı DNS kayıtları için zone dosyamızı oluşturmalıyız. Bunun için aşağıdaki yolu takip ederek bir dosya yaratmamız gerekiyor:

vim /var/named/db.ornekdomin.com

Oluşturulan dosyada aşağıdaki gibi bir yapı tanımlanmalıdır:

$TTL 86400
@ IN SOA ns1.ornekdomin.com. root.localhost. (
2022011101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
@ IN NS ns1.ornekdomin.com.
ns1 IN A 137.30.240.478 #DigitalOcean'daki sunucunuzdan aldığınız IP adresi
mail IN MX 10 mail.ornekdomin.com.
ornekdomin.com. IN A 137.30.240.478 #DigitalOcean'daki sunucunuzdan aldığınız IP adresi
www IN A 137.30.240.478 #DigitalOcean'daki sunucunuzdan aldığınız IP adresi
mail IN A 137.30.240.478 #DigitalOcean'daki sunucunuzdan aldığınız IP adresi

Bu düzenleme, domain’iniz için gerekli iletişim bilgilerini tanımlar. IP adreslerini ve domain adlarını kendi yapılandırmanıza göre değiştirmeyi unutmayın.

Konfigürasyon sonrası DNS kayıtlarınızı doğrulamak için şu komutları çalıştırabilirsiniz:

named-checkzone ornekdomin.com /var/named/db.ornekdomin.com

Son olarak BIND servisini yeniden başlatmanız gerekebilir:

systemctl restart named

5. OpenSSL ve Dijital Sertifikalar ile Apache Güvenliği

Certbot kullanarak kendi SSL/TLS sertifikaları oluşturup Apache gibi web sunucularını kolayca HTTPS desteğiyle güvenli hale getirir.

Öncelikle, Certbot ve Apache için ilgili modülün (plugin) sisteminize kurulması gerekir:

dnf install certbot python3-certbot-apache

Sertifika almak için aşağıdaki komut çalıştırılır:

certbot certonly --webroot -w /var/www/html -d ornekdomin.com
  • -w /var/www/html: Web sunucusunun doküman kök dizinini belirtir.
  • -d ornekdomin.com: Sertifika almak istediğiniz tam alan adı (FQDN).

Certbot, sertifika alımı sırasında birkaç adımda doğrulama yapar:

Hata ayıklama günlüğünü /var/log/letsencrypt/letsencrypt.log dosyasına kaydetme
E-posta adresini girin (acil yenileme ve güvenlik bildirimleri için kullanılır)
# sadece ilk kullanım için, e-posta adresinizi kaydedin ve kullanım koşullarını kabul edin
# geçerli e-posta adresi belirtin
(İptal etmek için 'c' girin): root@mail.ornekdomin.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Lütfen şu adresteki Hizmet Koşullarını okuyun
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Şunları yapmalısınız
ACME sunucusuna kaydolmak için kabul edin. Siz de katılıyor musunuz?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# kullanım koşullarını kabul ediyorum
(Y)es/(N)o: Y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
İlk sertifikanız başarılı bir şekilde düzenlendikten sonra
e-posta adresinizi Electronic Frontier Foundation ile paylaşın.
Let's Encrypt projesinin ortağı ve kar amacı gütmeyen bir kuruluş olan
Certbot'u geliştiriyor mu? Web'i şifreleme çalışmalarımız hakkında size e-posta göndermek istiyoruz,
EFF haberleri, kampanyaları ve dijital özgürlüğü destekleme yolları.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Hesap kaydedildi.
dns.srv.world için sertifika talep etme

Sertifika başarıyla alındı.
Sertifika şu adrese kaydedilir: /etc/letsencrypt/live/dns.srv.world/fullchain.pem
Anahtar şu adrese kaydedilir: /etc/letsencrypt/live/dns.srv.world/privkey.pem
Bu sertifikanın süresi 2024-12-03 tarihinde dolmaktadır.
Sertifika yenilendiğinde bu dosyalar güncellenecektir.
Certbot, bu sertifikayı arka planda otomatik olarak yenilemek için zamanlanmış bir görev ayarladı.

Let’s Encrypt sertifikaları 90 gün boyunca geçerlidir. Certbot, otomatik yenileme için bir cron job oluşturur. Yenilemeyi manuel olarak test etmek için şu komutu çalıştırabilirsiniz:

crontab -e
* * * */3 * certbot renew --dry-run

6. PHP Kurulumu

PHP kurulumu yapmak için aşağıdaki komutları takip edebilirsiniz:

dnf install epel-release -y
dnf install php php-cli php-common php-fpm php-mysqlnd php-json php-opcache php-mbstring php-xml -y

PHP’nin Apache veya Nginx ile çalışmasını sağlamak için yapılandırma yapmanız gerekebilir.

PHP modülü yüklüyse, Apache otomatik olarak PHP ile çalışır. Apache’yi yeniden başlatın:

systemctl restart httpd

7. MySQL Kurulumu

MySQL, web uygulamaları için veri depolamak ve yönetmek için kullanılan hızlı, ölçeklenebilir ve kullanımı kolay bir veritabanı sunucusudur.

dnf install mysql-server

MySQL, varsayılan olarak çok güvenli değildir. Bunu düzeltmek için, MySQL ile birlikte gelen bir güvenlik komut dosyasını çalıştırabilirsiniz:

mysql_secure_installation

Bu komut dosyası aşağıdaki işlemleri gerçekleştirir:

  • Bazı güvensiz varsayılan ayarları kaldırır.
  • Veritabanı sunucusuna erişimi sınırlar.
  • Bazı MySQL hesaplarını kaldırır ve yönetici (root) şifresini ayarlar.

Güvenlik Komut Dosyası Adımları

  • Validated Password Plugin: Şifrelerin gücünü test eder. Şu üç seviyeden birini seçebilirsiniz:
  • Zayıf
  • Orta
  • Güçlü
  • Güçlü seviyeyi seçmeniz önerilir.
  • Root Kullanıcı Şifresi: Bu yalnızca MySQL için kullanılan bir root hesabıdır (Linux sistemindeki root hesabıyla karıştırılmamalıdır). Root hesabına güçlü bir şifre ayarlayın.
  • Anonim Kullanıcıları Kaldırma: Anonim kullanıcı hesaplarını kaldırarak veritabanı güvenliğini artırabilirsiniz.
  • Root Erişimini Yerel Makineyle Sınırlandırma: Root kullanıcısının yalnızca yerel makineden bağlanmasına izin verilir.
  • Test Veritabanını Kaldırma: Varsayılan test veritabanını kaldırın.
  • Yetki Tablolarını Yeniden Yükleme: Yetki tablolarını güncellemek için “Evet” seçin.

MySQL Bağlantısını Test Etme

  • MySQL sunucusuna bağlanmak için şu komutu kullanabilirsiniz:
mysql -u root
  • Eğer komutu sistemin root kullanıcısı olarak çalıştırıyorsanız şifre istenmeyecektir. Bu, MySQL’in yeni sürümlerindeki bir özelliktir.

Dış Uygulamalar İçin Kullanıcı Oluşturma

  • Eğer MySQL’e WordPress gibi harici bir uygulamayla bağlanmak istiyorsanız, bu uygulamaya özel bir MySQL kullanıcısı oluşturmanız gerekir:
CREATE DATABASE wordpress;
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'Pass123.';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost';
FLUSH PRIVILEGES;
exit

8. WordPress Kurulumu ve Konfigürasyonu (Opsiyonel)

WordPress, dünya genelinde en popüler içerik yönetim sistemlerinden (CMS) biridir. Web sitelerinin kolayca oluşturulması ve yönetilmesi için güçlü bir altyapı sunar. WordPress’i LAMP (Linux, Apache, MySQL, PHP) stack üzerine kurarak işlevsel bir web sitesi oluşturabilirsiniz.

WordPress İndirme ve Kurulum

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz

WordPress dosyalarını Apache’nin kök dizinine taşıyın:

mv wordpress/* /var/www/ornekdomin.com/

Apache’nin çalıştığı kullanıcı ve gruba dosya izinlerini düzenleyin:

chown -R apache:apache /var/www/ornekdomin.com/
chmod -R 755 /var/www/ornekdomin.com/

Apache’yi, WordPress için VirtualHost dosyası oluşturarak yapılandırın:

vim /etc/httpd/conf.d/ornekdomin.com.conf
<VirtualHost *:80>
ServerName ornekdomin.com
DocumentRoot /var/www/ornekdomin.com
<Directory /var/www/ornekdomin.com>
AllowOverride All
</Directory>
</VirtualHost>

Apache’yi yeniden başlatın:

systemctl reload httpd

WordPress Web Arayüzünden Kurulum

  1. Tarayıcınızda http://www.ornekdomin.com adresine gidin.
  2. Dil Seçimi: Kurulum sihirbazında dili seçin ve “Devam” butonuna tıklayın.
  3. Veritabanı Bilgilerini Girin:
  • Veritabanı Adı: wordpress
  • Kullanıcı Adı: wordpressuser
  • Şifre: Pass123.

Kurulumu Başlat: Veritabanı bağlantısı doğrulandıktan sonra, web sitesi başlığı, yönetici kullanıcı adı ve şifre gibi temel bilgileri doldurun.

Kullanıcı adı ve şifrenizle giriş yaptıktan sonra, temalar yükleyebilir, eklentiler kurabilir ve içerik yönetimine başlayabilirsiniz.

LAMP Stack Tamamlandı

  • Linux işletim sistemimiz kuruldu.
  • Apache web sunucusu çalışıyor.
  • MySQL veritabanı sunucusu kuruldu ve yapılandırıldı.
  • PHP, Apache ile entegre edildi ve veritabanıyla iletişim kurabiliyor.

Bu yapılandırma ile artık web uygulamalarınızı barındırmaya ve geliştirmeye hazırsınız!


Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts