LAMP, bir sunucunun dinamik web sitelerini ve PHP ile yazılmış web uygulamalarını barındırmasını sağlamak için özel olarak birlikte kurulan bir grup açık kaynaklı yazılımı temsil ediyor. Kelime ise yazılımların baş harfleri ile oluşturulmuş bir kısaltmadır.

Bu kılavuzda, Ubuntu 20.04 tabanlı sunucuya LAMP yığını kuracağız. Anlatılanların sorunsuz çalışabilmesi için, sunucuya root haklarına sahip normal bir kullanıcı ile bağlanmış olmanız gerekiyor. Başka bir ek hazırlığa gerek yoktur.

Apache Kurulumu ve Firewall Ayarları

Apache kurulumu için Ubuntu’nun paket yöneticisi olan apt’yi kullanıyoruz.

sudo apt update
sudo apt install apache2

Bu iki komut ile depoları güncelledik ve son sürüm apache’yi kurduk. Sırada firewall ile HTTP trafiğini ayarlamak var. UFW bu işlem için kullanabileceğiniz bir çok farklı uygulama profillerine sahiptir. Mevcut tüm UFW uygulama profillerini listelemek için alttaki komutu çağırın.

sudo ufw app list
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH
  • Apache: Bu profil sadece 80 numaralı portu açar (normal, şifresiz web trafiği).
  • Apache Full: Bu profil port 80 ve port 443 (TLS/SSL şifreli trafik) açar.
  • Apache Secure: This profil sadece port 443 (TLS/SSL şifreli trafik) açar.

Yeni bir Apache kurulumu olduğundan ve sunucunuzda HTTPS trafiğine izin verecek şekilde yapılandırılmış bir TLS / SSL sertifikanız olmadığından, yalnızca 80 portundaki bağlantılara izin vermek en sağlıklısı olacaktır.

sudo ufw allow "Apache"

Port durumunu doğrulayalım:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                                
Apache                     ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)                    
Apache (v6)                ALLOW       Anywhere (v6)     

80 portu üzerindeki trafik firewall tarafından açılmış oldu.

Tarayıcıdan sunucu ip adresinizi çağırdığınızda varsayılan Ubuntu 20.04 Apache sayfasını göreceksiniz.

MySQL Kurulumu

Artık çalışır durumda bir web sunucunuz olduğuna göre, sitenize ilişkin verileri depolayabilmek ve yönetebilmek için, bir veritabanı sistemini kurmanız gerekiyor. MySQL, PHP ortamlarında kullanılan popüler ve tercih edilen veritabanı yönetim sistemidir.

sudo apt install mysql-server

Kurulum bittiğinde, MySQL ile önceden yüklenmiş olarak gelen bir güvenlik komut dosyası çalıştırmanızı öneriyorum. Bu komut dosyası, bazı güvenli olmayan varsayılan ayarları kaldıracak ve veritabanı sisteminize izinsiz erişimi kilitleyecektir. Etkileşimli komut dosyasını çalıştırarak başlatın:

sudo mysql_secure_installation

Sistem size ilk olarak VALIDATE PASSWORD PLUGIN etkileştirme yapmak isteyip istemediğinizi soracak.

Not: Bu özelliği etkinleştirmek tamamen size kalmış bir karar. Etkinleştirilirse, belirtilen kriterlere uymayan şifreler MySQL tarafından reddedilecektir. Doğrulamayı devre dışı bırakabilirsiniz ancak veritabanı kimlik bilgileri için her zaman güçlü, benzersiz parolalar kullanmalısınız.

Bitirdiğinizde, aşağıdakileri yazarak MySQL konsolunda oturum açıp açamayacağınızı test edin:

sudo mysql

Bu komut ile MySQL sunucusuna sudo kullandığınız için root olarak bağlandınız.

Şu şekilde çıktı görmelisiniz:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 8.0.19-0ubuntu5 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

MySQL konsolundan çıkış için:

exit

PHP Kurulumu

Apache ve Mysql tamam. Sırada PHP var. Bu kısımda php’ye ek olarak php-mysqlve libapache2-mod-php paketlerini de kuracağız. Temel PHP paketinin ihtiyacı olacak diğer paketler otomatik olarak kurulacaktır.

Kurulum için komut:

sudo apt install php libapache2-mod-php php-mysql

Kurulum tamamlandıktan sonra php sürümünü doğrulamak için:

php -v
PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

Bu noktadan sonra, LAMP yığınınız tamamen çalışır durumdadır ancak sunucuda birden fazla web sitesi host etmeniz gerekebileceği için, gelecek adımda apache virtual host kurulumu yapacağız.

Virtual Host Ayarları

Apache, virtual host özelliği (nginx blokları gibi) birden fazla alan adını tek bir sunucuda host etmenize olanak tanır. Hatta bunun için tek bir sabit IP yeterlidir. Bu bölümde example.com alan adını kullanacağız. Kılavuzu kullanırken kendi alan adınızla değiştirmeyi unutmayın!

Apache varsayılan olarak tek bir sunucu bloğu kurulu olarak gelir ve dosyaların web ana dizini /var/www/html olarak belirlenmiştir. Tek bir web sitesi kullanacaksanız başka işlem yapmanız gerekmez ancak ileride başka web sitelerini ekleyebileceğiniz ihtimalini düşünerek /var/www dizini altında, her alan adı için özel dizinler oluşturmak daha sağlıklıdır.

Şimdi example.com için dizini oluşturalım:

sudo mkdir /var/www/example.com

Sırada $USER için sahiplik haklarını ayarlamak var. Böylece dizin altında işlemleri kolayca yapabilirsiniz. Ekleyeceğiniz başka alan adları için farklı kullanıcılar oluşturabilir veya hepsini tek bir kullanıcıda yönetebilirsiniz. Karar size kalmış.

sudo chown -R $USER:$USER /var/www/example.com

Sırada Apache’nin sites-available dizini altında gerekli konfigürasyon dosyasını oluşturmak var. Dilediğiniz editörü kullanabilirsiniz. Ben kullanım kolaylığı açısından nano tercih ediyorum:

sudo nano /etc/apache2/sites-available/example.com.conf

Açtığımız example.com.conf dosyasının içerisine aşağıdaki bilgileri girin:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/example.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

F3 ile kaydedin ve F2 ile editörden çıkış yapın.

a2ensite ile yeni virtual hostu aktif ediyoruz:

sudo a2ensite example.com

Eğer sunucu için domain ataması yapmadıysanız, apache kurulumu ile gelen varsayılan siteyi pasif etmemiz gerekiyor zira bunu yapmazsak varsayılan site virtual host ile tanımladığımız sitenin önüne geçecek ve web sitemiz doğru görüntülenmeyecektir.

Bunu yapmak için:

sudo a2dissite 000-default

Yaptığımız ayarları kontrol edelim:

sudo apache2ctl configtest

Son olarak Apache ayarlarını yeniden yükleyin:

sudo systemctl reload apache2

Artık yeni sitemiz aktif durumdadır ve /var/www/example.com dizini web kök dizinidir. Bu dizinde bir index.html dosyası yaratıp sitemizi test edeceğiz:

nano /var/www/example.com/index.html

/var/www/example.com/index.html dosyasının içine alttakileri girin:

<html>
  <head>
    <title>example.com</title>
  </head>
  <body>
    <h1>Merhaba!</h1>
    <p>example.com başarıyla kuruldu!</p>
  </body>
</html>

Artık tarayıcıdan sunucu ip adresini çağırabiliriz:

Açtığınız index.html dosyasını “web sitesi hazırlanıyor” ibaresiyle sunucuda tutabilirsiniz ancak bu dosyanın içeriği her zaman index.php dosyasından önce gösterileceği için zamanı geldiğinde silmeyi unutmayın.

Apache’nin bu kuralını değiştirmek isterseniz, /etc/apache2/mods-enabled/dir.conf dosyasını açın ve index.php sayfasını DirectoryIndex direktifinde ilk sıraya yükseltin:

sudo nano /etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
        DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Değişiklikleri aktif etmek için:

sudo systemctl reload apache2

PHP Kontrolü

PHP kurulumunu test etmek için info.php dosyasını alan adınızın web kökünde açın:

nano /var/www/example.com/info.php

Oluşturduğunuz info.php dosyasına alttaki içeriği girin:

<?
phpinfo();
?>

Dosyayı tarayıcıdan çağırın. PHP bilgilerinin olduğu bir sayfa göreceksiniz.

Bu sayfa, sunucunuz hakkında PHP bilgilerini detaylı biçimde sağlar. Hata ayıklama ve ayarlarınızın doğru şekilde uygulandığından emin olmak için çok kullanışlıdır.

Bu sayfayı tarayıcınızda görebiliyorsanız, PHP kurulumunuz beklendiği gibi çalışıyor demektir.

Bu sayfadan PHP kurulumu ile ilgili bilgileri kontrol ettikten sonra, PHP ortamınız ve sunucunuz hakkında hassas bilgiler içerdiğinden, dosyayı sistemden kaldırmak en iyisidir. Bunu yapmak için “rm” kullanabilirsiniz:

sudo rm /var/www/example.com/info.php

Bu kılavuzda, web sunucusu olarak Apache’yi ve veritabanı sistemi olarak MySQL’i kullanarak ziyaretçilerinize PHP web siteleri ve uygulamaları sunmak için esnek bir temel oluşturduk. Bir sonraki adımda, web sunucunuza bir ssl servisi kurarak güvenli hizmet verdiğinden emin olmalısınız.