CentOS 8 Üzerinde Linux, Apache, MariaDB, PHP (LAMP) Kurulumu

LAMP, bir sunucunun PHP’de yazılmış dinamik web sitelerini ve web uygulamalarını barındırmasını sağlamak için genellikle birlikte yüklenen bir açık kaynak yazılım grubudur. Bu terim, Apache web sunucusu ile Linux işletim sistemini temsil eden bir kısaltmadır. Arka uç verileri bir MariaDB veritabanında saklanır ve dinamik işlemler PHP tarafından işlenir .

Bir LAMP yığınındaki veritabanı katmanı tipik olarak MySQL veritabanı sunucusudur, ancak CentOS 8’in yayınlanmasından önce, MySQL varsayılan CentOS depolarında mevcut değildi. Bu nedenle, MySQL’in bir topluluk geliştirmesi olan MariaDB, CentOS sunucularda LAMP yığınları için varsayılan veritabanı sistemi olarak MySQL’e yaygın olarak kabul gören bir alternatif haline geldi. MariaDB, orijinal MySQL sunucusu için yedek olarak çalışır, bu da pratikte uygulamanızda herhangi bir yapılandırma veya kod değişikliği yapmak zorunda kalmadan MariaDB’ye geçebileceğiniz anlamına gelir.

Bu kılavuzda, veritabanı yönetim sistemi olarak MariaDB’yi kullanarak CentOS 8 sunucunuza LAMP yükleyeceksiniz.

Ön koşullar

  • sudo ayrıcalıklarına sahip ancak kök olmayan bir kullanıcı.
  • CentOS 8 kurulu bir sunucu.
  • Sunucunuza kurulu etkin bir güvenlik duvarı.

Adım 1 - Apache Web Sunucusunun Kurulumu

Web sitelerini ziyaretçilerimize göstermek için PHP sayfalarına hizmet verecek şekilde yapılandırılabilen popüler bir açık kaynak web sunucusu olan Apache’yi kullanacağız. Bu yazılımı yüklemek için CentOS 8’deki yeni varsayılan paket yöneticisi olan dnf paket yöneticisini kullanacağız .

httpd paketini şu komutla yükleyin:
Sizden iki defa onay istenecektir, Y yani Evet yanıtı ile Apache’yi yüklemek istediğinizi onaylamalısınız.

sudo dnf install httpd

Yükleme tamamlandıktan sonra, web sunucusunu etkinleştirmek ve başlatmak için aşağıdaki komutu çalıştırın:

sudo systemctl start httpd

firewalld güvenlik duvarın daha önce yaptıysanız, Apache bağlantılarına izin vermeniz gerekir. Aşağıdaki birinci komut güvenlik duvarını kuracak ve ikinci komut, varsayılan olarak HTTP 80 bağlantı noktasını güvenlik duvarında kalıcı olarak etkinleştirecektir;

Sizden onay istenecektir, Y yani Evet yanıtı ile firewalld yüklemek istediğinizi onaylamalısınız.

sudo dnf install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --state
sudo firewall-cmd --permanent --add-service=http

Değişikliğin uygulandığını doğrulamak için şu komutu çalıştırabilirsiniz:

sudo firewall-cmd --permanent --list-all

Şunun gibi bir çıktı görmelisiniz;

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client http ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Değişikliklerin geçerli olması için güvenlik duvarı yapılandırmasını yeniden yüklemeniz gerekir:

sudo firewall-cmd --reload

Yeni güvenlik duvarı kuralı eklenmiş olarak, sunucunuzun genel IP adresine veya etki alanı adına web tarayıcınızdan erişerek sunucunun çalışıp çalışmadığını test edebilirsiniz.

:warning: Sunucunuza erişmek için IP adresi yerine bir alan adı kullanacaksanız sunucunuza yönlendirmek için kendi DNS yönetim panelinizden sizinalanadiniz.com için bir “www” ve “boş ya da @” A DNS kaydı oluşturup sunucunuzun IP adresini hedef göstermelisiniz.

Sunucunuza işaret eden bir alan adınız yoksa ve sunucunuzun genel IP adresini bilmiyorsanız, aşağıdaki komutu çalıştırarak bulabilirsiniz:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Bu komut sizin sunucunuzun IP adresi yazdıracaktır. İlgili (genellikle birinci IP adresi) IP adresini Web tarayıcınızda deneyebilirsiniz.

Alternatif olarak, İnternet’teki diğer konumlardan da görüldüğü gibi hangi IP adresine erişilebilir olduğunu kontrol edebilirsiniz:

curl -4 icanhazip.com

Web tarayıcınıza komut sonrası çıktıdan aldığınız adresi yazın, bu sizi Apache’nin varsayılan açılış sayfasına götürür:

Bu sayfayı görüyorsanız, web sunucunuz doğru şekilde yüklenmiş demektir.

Adım 2 - MariaDB’i Yükleme

Artık çalışır durumda olan bir web sunucunuz olduğuna göre, sitenize ilişkin verileri depolamak ve yönetmek için bir veritabanı sistemi kurmanız gerekiyor.

Bu yazılımı yüklemek için şu komutu çalıştırın, onayınız istendiğinde Y yani Evet yanıtını vermelisiniz:

sudo dnf install mariadb-server

Kurulum tamamlandığında, MariaDB sunucusunu aşağıdaki komutla etkinleştirebilir ve başlatabilirsiniz:

sudo systemctl start mariadb

Yükleme tamamlandığında, MariaDB ile önceden yüklenmiş olarak gelen bir güvenlik komut dosyasını çalıştırmanızı önermekteyiz. Bu komut dosyası güvenli olmayan bazı varsayılan ayarları kaldıracak ve veritabanı sisteminize erişimi makul ölçüde kilitleyecektir. Şimdi etkileşimli komut dosyasını şunları yazarak başlatın:

sudo mysql_secure_installation

Bu komut dosyası sizi MariaDB kurulumunuzda bazı değişiklikler yapabileceğiniz bir dizi bilgi istemine götürür. İlk bilgi istemi, geçerli veritabanı kök parolasını girmenizi ister. Bu sistem köküyle karıştırılmamalıdır. Veritabanı kök kullanıcı veritabanı sistemi üzerinde tam ayrıcalıkları olan bir idari kullanıcıdır. MariaDB’i yeni yüklediğiniz ve henüz herhangi bir yapılandırma değişikliği yapmadığınız için bu şifre boş kalmalıdır, bu yüzden sadece ENTER tuşuna basın .

Sonraki istemde bir veritabanı kök parolası ayarlamak isteyip istemediğiniz sorulur. MariaDB, kök kullanıcı için genellikle bir parola kullanmaktan daha güvenli olan özel bir kimlik doğrulama yöntemi kullandığından, şimdi bunu ayarlamanıza gerek yoktur. N yazın ve ENTER tuşuna basın.

Sonraki soruların varsayılanlarını kabul etmek için Y ve Enter tuşlarına basabilirsiniz. Bu takip eden istemler, anonim kullanıcıları ve test veritabanını kaldıracak, uzaktan kök oturum açmayı devre dışı bırakacak ve MariaDB’nin yaptığınız değişikliklere hemen uyması için bu yeni kuralları yazılıma yükleyecektir.

İşlem bittiğinde, alttaki komutu yazarak MariaDB konsoluna giriş yapın:

sudo mysql

Bu komut ile, MariaDB sunucusuna yönetimsel veritabanı kullanıcı kökü olarak bağlanırsınız.
Aşağıdaki gibi bir çıktı görmelisiniz:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.3.17-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

Kök kullanıcı olarak bağlanmak için bir parola girmeniz gerekmediğine dikkat edin . Bu unix_socket yerine, yönetimsel MariaDB kullanıcısı için varsayılan kimlik doğrulama yöntemi olan şifreniz yerine kullanılır. Bu ilk başta bir güvenlik sorunu gibi görünse de, veritabanı sunucusunu aslında daha güvenli bir hale getirir, çünkü kök MariaDB kullanıcısı olarak oturum açmasına izin verilen kullanıcılar zaten sudo ayrıcalıklarına sahip sistem kullanıcılarıdır. Kısacası aynı ayrıcalıklardır :slight_smile: Pratik olarak ise, PHP uygulamanızdan bağlanmak için yönetici veritabanı kök kullanıcısını kullanamayacağınız anlamına gelir.

Daha fazla güvenlik için, özellikle sunucunuzda birden çok veritabanı barındırmayı planlıyorsanız, her veritabanı için daha az geniş ayrıcalıklara sahip özel kullanıcı hesaplarına sahip olmak en iyisidir. Böyle bir durumda yeni bir veritabanı olan ornek_veritabani ve yeni bir kullanıcı olan ornek_kullanici oluşturmamız gerekir. Yeni bir veritabanı oluşturmak için MariaDB konsolunuzdan aşağıdaki komutu çalıştırın:

CREATE DATABASE ornek_veritabani;

Artık yeni bir kullanıcı oluşturabilir ve yeni oluşturduğunuz özel veritabanında tam ayrıcalık tanıyabilirsiniz. Aşağıdaki komut bu oluşturulan kullanıcının parolasını şu şekilde ayarlar şifreniz , ancak bu değeri kendi seçtiğiniz güvenli bir parola ile değiştirmeniz gerekir.

GRANT ALL ON ornek_veritabani.* TO 'ornek_kullanici'@'localhost' IDENTIFIED BY 'şifreniz' WITH GRANT OPTION;

Bu, ornek_kullanici kullanıcısına ornek_veritabani veritabanı üzerinde tam ayrıcalıklar verirken, bu kullanıcının sunucunuzda başka veritabanları oluşturmasını veya değiştirmesini engeller.

Geçerli oturumda kaydedildiklerinden ve kullanılabilir olduklarından emin olmak için ayrıcalıkları temizleyin:

FLUSH PRIVILEGES;

Bu komutu takiben, MariaDB kabuğundan şu komutla çıkın:

exit

MariaDB konsolunda tekrar bu özel kullanıcının kimlik bilgilerini kullanarak oturum açın ve yeni kullanıcının uygun izinlere sahip olup olmadığını test edin;

mysql -u ornek_kullanici -p

-p komutu ornek_kullanici kullanıcısını oluştururken kullanılan şifreyi isteyecektir. MariaDB konsolunda oturum açtıktan sonra, ornek_veritabani veritabanına erişiminiz olduğunu doğrulayın:

SHOW DATABASES;

Bu size aşağıdaki çıktıyı verecektir:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| ornek_veritabani   |
+--------------------+
2 rows in set (0.001 sec)

MariaDB kabuğundan yine çıkmak için şunu komutu yazın:

exit

Bu noktada, veritabanı sisteminiz kuruldu ve LAMP grubunun son bileşeni olan PHP’yi kurmaya devam edebilirsiniz.

Adım 3 - PHP Kurulumu

İçeriğinizi sunmak için Apache, verilerinizi saklamak ve yönetmek için MariaDB yükledik. php PHP, kurulumumuzun son kullanıcıya dinamik içerik görüntülemek için kodları işleyecek bileşenidir. Bu pakete ek olarak, php-mysqlnd yani PHP’nin MySQL tabanlı veritabanlarıyla iletişim kurmasını sağlayan bir PHP modülüne ihtiyacınız olacak. Ayrıca çekirdek PHP paketleri otomatik bir şekilde bağımlılıklar olarak kurulacaktır.

php ve php-mysqlnd paketlerini dnf paket yöneticisini kullanarak kurmak için şunu çalıştırın:

Onayınız istendiğinde Y yani Evet yanıtını vermelisiniz.

sudo dnf install php php-mysqlnd

Yükleme tamamlandıktan sonra, PHP modülünü etkinleştirmek için Apache web sunucusunu yeniden başlatmanız gerekir:

sudo systemctl restart httpd

Web sunucunuz artık tam olarak kuruldu. Bir sonraki adımda, her şeyin beklendiği gibi çalıştığından emin olmak için bir PHP test komut dosyası oluşturacağız.

Adım 4 - PHP’yi Apache ile Test Etme

CentOS 8’deki varsayılan Apache yüklemesi, /var/www/html konumunda bir belge kökü oluşturur. PHP’nin web sunucunuzda düzgün çalışması için Apache’nin varsayılan ayarlarında herhangi bir değişiklik yapmanız gerekmez.

Yapacağımız tek ayar, Apache belge kök klasörünüzdeki varsayılan izin ayarlarını değiştirmektir. Bu şekilde, her bir komutun ön ekine gerek duymadan, o dizindeki dosyaları normal sistem kullanıcısı ile oluşturabilir ve değiştirebilirsiniz.

Aşağıdaki komut, varsayılan Apache belge kökünün sahipliğini comolokko adlı bir kullanıcı ve gruba değiştirecektir :slight_smile: , bu ismi seçme nedenimi anlayacaksınız. Bu komuttaki vurgulanan kullanıcı adını ve grubu sisteminizin kullanıcı adını ve grubunu yansıtacak şekilde değiştirdiğinizden emin olun.

sudo chown -R comolokko.comolokko /var/www/html/

Şimdi web sunucusunun beklendiği gibi çalıştığından emin olmak için bir test PHP sayfası oluşturacağız.

vi CentOS 8 ile birlikte gelen varsayılan metin düzenleyicisidir. vi son derece güçlü bir metin editörüdür, ancak deneyimsiz kullanıcılar için biraz fazla detaylı olabilir. nano gibi CentOS 8 sunucunuzda dosya düzenlemeyi kolaylaştırmak için daha kullanıcı dostu bir düzenleyici yüklemek isteyebilirsiniz:

Onayınız istendiğinde Y yani Evet yanıtını vermelisiniz.

sudo dnf install nano

İstendiğinde y yanıtı ile yüklemeyi onaylamalısınız.

LAMP yığınınız artık tamamen ayarlanmış oldu. Apache’nin .php dosyaları PHP işlemcinize doğru bir şekilde teslim edebileceğini doğrulamak için test edeceğiz.

Bunu, belge kökünde bir test PHP dosyası oluşturarak yapabilirsiniz.

nano /var/www/html/bilgi.php

Aşağıdaki satırları yeni dosyaya yazın veya yapıştırın.
Bu kod, sunucunuz hakkında detaylı bilgi döndüren geçerli bir PHP kodudur.

<?php
phpinfo();

İşlem bittiğinde, uygulamak ve onaylamak için CTRL+X sonra y ve ENTER tuşlarına basarak dosyayı kaydedip, kapatın.

Artık Nginx yapılandırma dosyasında ayarladığınız alan adını veya genel IP adresini ziyaret ederek web tarayıcınızda http://sizinalanadiniz.com/bilgi.php sayfasına erişebilirsiniz.

Sunucunuz hakkında ayrıntılı bilgi içeren bir web sayfası görmelisiniz.

Buna benzer bir sayfa göreceksiniz:

Bu sayfada PHP sunucunuzla ilgili bilgileri kontrol ettikten sonra, CentOS sunucunuz hakkında hassas bilgiler içerdiğinden, oluşturduğunuz dosyayı kaldırmalısınız.

İstendiğinde y yanıtı ile silme işlemini onaylamalısınız.

rm -r /var/www/html/test.php

Daha sonra ihtiyaç duyarsanız bu dosyayı her zaman yeniden oluşturabileceksiniz.

Adım 5 - PHP’den Veritabanı Bağlantısının Test Edilmesi (İsteğe bağlı)

PHP’nin MariaDB’ye bağlanıp bağlanamayacağını test etmek ve veritabanı sorgularını yürütmek için test etmek istiyorsanız, bir PHP komut dosyasından kukla verilerle bir test tablosu oluşturabilir ve içeriği için sorgulayabilirsiniz.

Bunun için ilk olarak, oluşturduğunuz veritabanı kullanıcısıyla MariaDB konsoluna bağlanın:

mysql -u ornek_kullanici -p

yapilacaklar_listesi adlı bir tablo oluşturun. MariaDB konsolundan aşağıdaki ifadeyi çalıştırın:

CREATE TABLE ornek_veritabani.yapilacaklar_listesi (
    item_id INT AUTO_INCREMENT,
    content VARCHAR(255),
    PRIMARY KEY(item_id)
);

Şimdi, “yapilacaklar_listesi” tablosuna birkaç satır içerik ekleyin.
Farklı değerleri kullanarak bir sonraki komutu birkaç kez tekrarlamak isteyebilirsiniz:

INSERT INTO ornek_veritabani.yapilacaklar_listesi (content) VALUES ("ilk yapilacak sey");

Verilerin tablonuza başarıyla kaydedildiğini onaylamak için ise şu komutu çalıştırın:

SELECT * FROM ornek_veritabani.yapilacaklar_listesi;

Aşağıdaki çıktıyı göreceksiniz:

+---------+-------------------+
| item_id | content           |
+---------+-------------------+
|       1 | ilk yapilacak sey |
+---------+-------------------+
1 row in set (0.001 sec)

Test tablonuzda geçerli verilerinizin bulunduğunu onayladıktan sonra MariaDB konsolundan çıkabilirsiniz:

exit

Artık MariaDB’ye bağlanacak ve içeriğinizi sorgulayacak PHP betiğini oluşturabilirsiniz.
Tercih ettiğiniz terminal editörünü kullanarak web kök dizininizde yeni bir PHP dosyası oluşturun.

nano /var/www/html/yapilacaklar_listesi.php

PHP betiğinize aşağıdaki içeriği ekleyin:

<?php
$user = "ornek_kullanici";
$password = "şifreniz";
$database = "ornek_veritabani";
$table = "yapilacaklar_listesi";

try {
  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
  echo "<h2>Yapilacaklar listesi</h2><ol>";
  foreach($db->query("SELECT content FROM $table") as $row) {
    echo "<li>" . $row['content'] . "</li>";
  }
  echo "</ol>";
} catch (PDOException $e) {
    print "Hata!: " . $e->getMessage() . "<br/>";
    die();
}

Düzenlemeyi bitirdiğinizde dosyayı kaydedin ve kapatın.

Artık Nginx yapılandırma dosyasında ayarladığınız alan adını http://sizinalanadiniz.com/yapilacaklar_listesi.php veya genel IP adresini ziyaret ederek web tarayıcınızda bu sayfaya erişebilirsiniz. Test tablonuza eklediğiniz içeriği gösteren bir sayfa görmelisiniz.

Oluşturduğunuz dosyayı daha sonra alttaki komut ile silebilirsiniz.

İstendiğinde y yanıtı ile silme işlemini onaylamalısınız.

rm -r /var/www/html/yapilacaklar_listesi.php

Sonuç

Bu kılavuzda Apache’yi web sunucusu olarak kullanarak ziyaretçilerinize PHP web siteleri ve uygulamaları sunmak için esnek bir temel oluşturdunuz. Apache’yi PHP isteklerini işleyecek şekilde ayarladınız. Web sitenizin verilerini depolamak için bir MariaDB veritabanı ayarladınız.

Herhangi bir sorunla karşı karşıyaysanız, bu makaleyi yanıtlamaktan çekinmeyin :point_down:

Merhabalar hocam kurulumu başarıyla tamamladık sorun yok ancak phpmyadmin kurulumu da yapmak istiyoruz. Birde centos 8 için web panel kurulumu anlatımınız var mı ?

Selamlar,

Sitedeki phpMyAdmin kurulumlarını incelediniz mi?

CentOS Web Panel henüz CentOS 8’i resmi olarak desteklememektedir.

CentOS 7 için şu komutlarla kurulumu yapabilirsiniz:

cd /usr/local/src
wget http://centos-webpanel.com/cwp-el7-latest
sh cwp-el7-latest