Giriş
“LAMP” kümesi, bir sunucunun PHP ile yazılmış dinamik web sitelerini ve web uygulamalarını barındırmasını sağlamak için tipik olarak birlikte kurulan açık kaynaklı yazılım grubudur. Bu terim, Apache web sunucusu ile Linux işletim sistemini temsil eden bir kısaltmadır. Site verileri bir MySQL veritabanında saklanır ve dinamik içerik PHP tarafından işlenir.
Bu kılavuzda, bir Ubuntu 20.04 sunucusuna bir LAMP kümesi kuracağız.
Ön Gereksinimler
Bu eğiticiyi(LAMP kurulumu) tamamlamak için, root olmayan bir sudo etkin kullanıcı hesabına ve temel bir güvenlik duvarına sahip bir Ubuntu 20.04 sunucunuz olması gerekir. Ubuntu 20.04 sunucu kurulduktan sonra ilk yapılması gerekenler yazımıza bakarak normal bir kullanıcı hesabını nasıl yapılandıracağınızı öğrenebilirsiniz.
1. Adım – Apache’yi Kurma ve Güvenlik Duvarını Güncelleme
Apache web sunucusu, dünyadaki en popüler web sunucuları arasındadır. İyi belgelenmiştir, aktif bir kullanıcı topluluğuna sahiptir ve web tarihinin büyük bir bölümünde yaygın olarak kullanılmaktadır, bu da onu bir web sitesi barındırmak için mükemmel bir varsayılan seçim haline getirmektedir. LAMP kurulumu için Linux’tan sonraki gereksinimimiz Apache.
Apache’yi Ubuntu’nun paket yöneticisini kullanarak yükleyin, apt:
sudo apt update sudo apt install apache2
Bu oturumda sudo’yu ilk kez kullanıyorsanız, sistem paketlerini apt ile yönetmek için doğru ayrıcalıklara sahip olduğunuzu doğrulamak için kullanıcı parolanızı girmeniz istenir. Ayrıca Y’ye ve ardından ENTER’a basarak Apache’nin kurulumunu onaylamanız istenecektir.
Kurulum tamamlandıktan sonra, HTTP trafiğine izin vermek için güvenlik duvarı ayarlarınızı yapmanız gerekecektir. UFW, bunu başarmak için yararlanabileceğiniz farklı uygulama profillerine sahiptir. Mevcut tüm UFW uygulama profillerini listelemek için şunları çalıştırabilirsiniz:
sudo ufw app list
Çıktıyı şöyle göreceksiniz:
OutputAvailable applications: Apache Apache Full Apache Secure OpenSSH
İşte bu profillerin her birinin anlamı:
- Apache: Bu profil yalnızca 80 numaralı bağlantı noktasını açar (normal, şifrelenmemiş web trafiği).
- Apache Full: Bu profil, hem 80 numaralı bağlantı noktasını (normal, şifrelenmemiş web trafiği) hem de 443 numaralı bağlantı noktasını (TLS/SSL şifreli trafik) açar.
- Apache Secure: Bu profil yalnızca 443 numaralı bağlantı noktasını açar (TLS/SSL şifreli trafik).
Bu yeni bir Apache yüklemesi olduğundan ve sunucunuzda HTTPS trafiğine izin verecek şekilde yapılandırılmış bir TLS/SSL sertifikanız olmadığından, şimdilik yalnızca 80 numaralı bağlantı noktasındaki bağlantılara izin vermek en iyisidir.
Yalnızca 80 numaralı bağlantı noktasında trafiğe izin vermek için Apache profilini kullanın:
sudo ufw allow in "Apache"
Değişikliği şu şekilde doğrulayabilirsiniz:
sudo ufw status
OutputStatus: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)
80 numaralı bağlantı noktasındaki trafiğe artık güvenlik duvarı üzerinden izin verilmektedir.
Web tarayıcınızda sunucunuzun genel IP adresini ziyaret ederek her şeyin planlandığı gibi gittiğini doğrulamak için hemen bir nokta kontrolü yapabilirsiniz (bu bilgiye sahip değilseniz, genel IP adresinizin ne olduğunu öğrenmek için bir sonraki başlığın altındaki nota bakın). çoktan):
http://sunucu_ip_adresiniz
Bilgi ve test amacıyla orada bulunan varsayılan Ubuntu 20.04 Apache web sayfasını göreceksiniz. Bunun gibi bir şeye benzemeli:
Bu sayfayı görürseniz, web sunucunuz artık doğru bir şekilde kurulmuş ve güvenlik duvarınız üzerinden erişilebilir durumdadır.
Sunucunuzun Genel IP Adresi Nasıl Bulunur?
Sunucunuzun genel IP adresini bilmiyorsanız, onu bulmanın birkaç yolu vardır. Genellikle bu, sunucunuza SSH üzerinden bağlanmak için kullandığınız adrestir.
Bunu komut satırından yapmanın birkaç farklı yolu vardır. İlk olarak, şunu yazarak IP adresinizi almak için iproute2 araçlarını kullanabilirsiniz:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Bu size iki veya üç satır geri verecektir. Hepsi doğru adreslerdir, ancak bilgisayarınız bunlardan yalnızca birini kullanabilir, bu nedenle her birini denemekten çekinmeyin.
Alternatif bir yöntem, sunucunuzu IP adresinin ne olduğunu size söylemek için dış tarafla iletişim kurmak için curl yardımcı programını kullanmaktır. Bu, belirli bir sunucuya IP adresinizin ne olduğunu sorarak yapılır:
curl ifconfig.me
IP adresinizi almak için kullandığınız yöntem ne olursa olsun, varsayılan Apache sayfasını görüntülemek için web tarayıcınızın adres çubuğuna yazın.
2. Adım – MySQL Kurulumu
Artık çalışır durumda bir web sunucunuz olduğuna göre, siteniz için verileri depolayabilmek ve yönetebilmek için veritabanı sistemini kurmanız gerekir. MySQL, PHP ortamlarında kullanılan popüler bir veritabanı yönetim sistemidir.
LAMP kurulumu için Apache’den sonraki gereksinimimiz Mysql.
Yine, bu yazılımı edinmek ve yüklemek için apt’yi kullanın:
sudo apt install mysql-server
İstendiğinde, Y ve ardından ENTER yazarak yüklemeyi onaylayın.
Yükleme tamamlandığında, MySQL ile önceden yüklenmiş olarak gelen bir güvenlik komut dosyası çalıştırmanız önerilir. Bu komut dosyası, bazı güvenli olmayan varsayılan ayarları kaldıracak ve veritabanı sisteminize erişimi kilitleyecektir. Etkileşimli komut dosyasını çalıştırarak başlatın:
sudo mysql_secure_installation
Bu, ŞİFRE EKLENTİSİNİ DOĞRULAMAK’ı yapılandırmak isteyip istemediğinizi soracaktır.
Not: Bu özelliği etkinleştirmek size bağlı bir karardır. Etkinleştirilirse, belirtilen kriterlere uymayan şifreler MySQL tarafından bir hata ile reddedilecektir. Doğrulamayı devre dışı bırakmak güvenlidir, ancak veritabanı kimlik bilgileri için her zaman güçlü, benzersiz parolalar kullanmalısınız.
Evet için Y’yi veya etkinleştirmeden devam etmek için herhangi bir şeyi yanıtlayın.
VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin? Press y|Y for Yes, any other key for No:
Cevabınız “evet” ise, bir şifre doğrulama seviyesi seçmeniz istenecektir. En güçlü düzey için 2 girerseniz, sayı, büyük ve küçük harf ve özel karakter içermeyen veya yaygın sözlük sözcüklerine dayalı herhangi bir şifre belirlemeye çalışırken hata alacağınızı unutmayın.
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
ŞİFRE EKLENTİSİNİ DOĞRULA EKLENTİYİ kurmayı seçip seçmediğinizden bağımsız olarak, sunucunuz daha sonra MySQL root kullanıcısı için bir şifre seçmenizi ve onaylamanızı isteyecektir. Bu, sistem root kullanıcısı ile karıştırılmamalıdır. Veritabanı root kullanıcısı, veritabanı sistemi üzerinde tam ayrıcalıklara sahip bir yönetici kullanıcıdır. MySQL root kullanıcısı için varsayılan kimlik doğrulama yöntemi bir şifre kullanımını dağıtsa da, bir şifre ayarlanmış olsa bile, ek bir güvenlik önlemi olarak burada güçlü bir şifre tanımlamanız gerekir. Bunun hakkında birazdan konuşacağız.
Parola doğrulamayı etkinleştirdiyseniz, az önce girdiğiniz root parola için parola gücü gösterilecek ve sunucunuz bu parolayla devam etmek isteyip istemediğinizi soracaktır. Mevcut şifrenizden memnunsanız, komut isteminde “evet” için Y girin:
Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
Soruların geri kalanı için Y’ye basın ve her istemde ENTER tuşuna basın. Bu, bazı anonim kullanıcıları ve test veritabanını kaldıracak, uzak root oturum açmalarını devre dışı bırakacak ve MySQL’in yaptığınız değişikliklere hemen uyması için bu yeni kuralları yükleyecektir.
Bitirdiğinizde, şunu yazarak MySQL konsolunda oturum açıp açamadığınızı test edin:
sudo mysql
Bu, MySQL sunucusuna, bu komutu çalıştırırken sudo kullanımından çıkarılan yönetici veritabanı kullanıcı root olarak bağlanacaktır. Çıktıyı şöyle görmelisiniz:
OutputWelcome 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 çıkmak için şunu yazın:
exit
mysql_secure_installation komut dosyasını çalıştırırken bir şifre tanımlamış olsanız bile, root kullanıcı olarak bağlanmak için bir şifre sağlamanız gerekmediğini fark etmişsinizdir. Bunun nedeni, yönetici MySQL kullanıcısı için varsayılan kimlik doğrulama yönteminin parola yerine unix_socket olmasıdır. Bu ilk başta bir güvenlik endişesi gibi görünse de, veritabanı sunucusunu daha güvenli hale getirir çünkü root MySQL kullanıcısı olarak oturum açmasına izin verilen tek kullanıcılar, konsoldan veya bu sistemle çalışan bir uygulama aracılığıyla bağlanan sudo ayrıcalıklarına sahip sistem kullanıcılarıdır. Pratik açıdan bu, PHP uygulamanızdan bağlanmak için yönetici veritabanı root kullanıcısını kullanamayacağınız anlamına gelir. root MySQL hesabı için bir şifre belirlemek, varsayılan kimlik doğrulama yönteminin unix_socket’tan şifreye değiştirilmesi durumunda bir koruma işlevi görür.
Daha fazla güvenlik için, özellikle sunucunuzda birden fazla veritabanı barındırmayı planlıyorsanız, her veritabanı için daha az kapsamlı ayrıcalıklara sahip özel kullanıcı hesaplarına sahip olmak en iyisidir.
Not: Bu yazının yazıldığı sırada, yerel MySQL PHP kitaplığı mysqlnd, MySQL 8 için varsayılan kimlik doğrulama yöntemi olan caching_sha2_authentication’ı desteklemiyor. Bu nedenle, MySQL 8’de PHP uygulamaları için veritabanı kullanıcıları oluştururken, bu kullanıcıların bunun yerine mysql_native_password kullanacak şekilde yapılandırıldığından emin olmanız gerekir. Bunun nasıl yapıldığını 6. Adımda göstereceğiz.
MySQL sunucunuz şimdi kuruldu ve güvenli hale getirildi. Ardından, LAMP yığınındaki son bileşen olan PHP’yi yükleyeceğiz.
3. Adım – PHP Kurulumu
İçeriğinizi sunmak için Apache’yi ve verilerinizi depolamak ve yönetmek için MySQL’i kurdunuz. PHP, son kullanıcıya dinamik içeriği görüntülemek için kodu işleyecek kurulumumuzun bileşenidir. PHP paketine ek olarak, PHP’nin MySQL tabanlı veritabanlarıyla iletişim kurmasını sağlayan bir PHP modülü olan php-mysql’ye ihtiyacınız olacaktır. Apache’nin PHP dosyalarını işlemesini sağlamak için libapache2-mod-php’ye de ihtiyacınız olacak. Çekirdek PHP paketleri, bağımlılıklar olarak otomatik olarak kurulacaktır.
LAMP kurulumu için Mysql’den sonraki gereksinimimiz PHP.
Bu paketleri yüklemek için şunu çalıştırın:
sudo apt install php libapache2-mod-php php-mysql
Kurulum tamamlandıktan sonra PHP sürümünüzü onaylamak için aşağıdaki komutu çalıştırabilirsiniz:
php -v
OutputPHP 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 noktada, LAMP yığınınız tamamen çalışır durumdadır, ancak kurulumunuzu bir PHP komut dosyasıyla test etmeden önce, web sitenizin dosya ve klasörlerini tutmak için uygun bir Apache Virtual Host kurmanız en iyisidir. Bunu bir sonraki adımda yapacağız.
4. Adım – Web siteniz için “Virtual Host” oluşturma
Apache web sunucusunu kullanırken, yapılandırma ayrıntılarını kapsüllemek ve tek bir sunucudan birden fazla alanı barındırmak için sanal ana bilgisayarlar (Nginx’teki sunucu bloklarına benzer) oluşturabilirsiniz. Bu kılavuzda, alan_adiniz adlı bir alan ayarlayacağız, ancak bunu kendi alan adınızla değiştirmelisiniz.
LAMP üzerinde birden fazla alan adı barındırmak için “Virtual Host” olmazsa olmazlardan.
Not: Eğer alan adınızı Narweb.net üzerinden aldıysanız bu durumda alan adınızı LAMP kurmuş olduğunuz sunucuya yönlendirerek kullanabilirsiniz.
Ubuntu 20.04’teki Apache, /var/www/html dizininden belgeler sunmak üzere yapılandırılmış, varsayılan olarak etkinleştirilmiş bir sunucu bloğuna sahiptir. Bu, tek bir site için iyi olsa da, birden fazla siteye ev sahipliği yapıyorsanız hantal hale gelebilir. /var/www/html’yi değiştirmek yerine, alan_adiniz siteniz için /var/www içinde bir dizin yapısı oluşturacağız ve /var/www/html’yi bir istemci isteği gelmezse sunulacak varsayılan dizin olarak yerinde bırakacağız.
alan_adiniz için dizini aşağıdaki gibi oluşturun:
sudo mkdir /var/www/alan_adiniz
Ardından, mevcut sistem kullanıcınıza referans verecek olan $USER ortamı değişkeniyle dizinin sahipliğini atayın:
sudo chown -R $USER:$USER /var/www/alan_adiniz
Ardından, tercih ettiğiniz komut satırı düzenleyicisini kullanarak Apache’nin sitelerde kullanılabilir dizininde yeni bir yapılandırma dosyası açın. Burada nano kullanacağız:
sudo nano /etc/apache2/sites-available/alan_adiniz.conf
Bu yeni bir boş dosya oluşturacaktır. Aşağıdaki temel yapılandırmasını yapıştırın:/etc/apache2/sites-available/alan_adiniz.conf
<VirtualHost *:80> ServerName alan_adiniz ServerAlias www.alan_adiniz ServerAdmin webmaster@localhost DocumentRoot /var/www/alan_adiniz ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
İşiniz bittiğinde dosyayı kaydedin ve kapatın. Nano kullanıyorsanız bunu CTRL+X, ardından Y ve ENTER tuşlarına basarak yapabilirsiniz.
Bu VirtualHost yapılandırmasıyla, Apache’ye web root dizini olarak /var/www/alan_adiniz kullanarak etki alanınıza hizmet vermesini söylüyoruz. Apache’yi bir alan adı olmadan test etmek istiyorsanız, her seçeneğin satırının başına bir # karakteri ekleyerek ServerAdmin ve ServerAlias seçeneklerini kaldırabilir veya yorum satırı yapabilirsiniz.
Artık yeni sanal ana makineyi etkinleştirmek için a2ensite’yi kullanabilirsiniz:
sudo a2ensite alan_adiniz
Apache ile birlikte gelen varsayılan web sitesini devre dışı bırakmak isteyebilirsiniz. Bu, özel bir etki alanı adı kullanmıyorsanız gereklidir, çünkü bu durumda Apache’nin varsayılan yapılandırması sanal ana makinenizin üzerine yazacaktır. Apache’nin varsayılan web sitesini devre dışı bırakmak için şunu yazın:
sudo a2dissite 000-default
Yapılandırma dosyanızın sözdizimi hataları içermediğinden emin olmak için şunu çalıştırın:
sudo apache2ctl configtest
Son olarak, bu değişikliklerin yürürlüğe girmesi için Apache’yi yeniden yükleyin:
sudo systemctl reload apache2
Yeni web siteniz artık etkin, ancak web kökü /var/www/alan_adiniz hala boş. Sanal ana makinenin beklendiği gibi çalışıp çalışmadığını test edebilmemiz için bu konumda bir index.html dosyası oluşturun:
nano /var/www/alan_adiniz/index.html
Bu dosyaya aşağıdaki içeriği ekleyin:/var/www/alan_adiniz/index.html
<html> <head> <title>alan_adinizwebsite</title> </head> <body> <h1>Hello World!</h1> <p>This is the landing page of <strong>alan_adiniz</strong>.</p> </body> </html>
Şimdi tarayıcınıza gidin ve sunucunuzun alan adına veya IP adresine bir kez daha erişin:
http://server_domain_or_IP
Bu sayfayı görürseniz, Apache sanal ana makinenizin beklendiği gibi çalıştığı anlamına gelir.
Yerine bir index.php dosyası oluşturana kadar bu dosyayı uygulamanız için geçici bir açılış sayfası olarak bırakabilirsiniz. Bunu yaptıktan sonra, varsayılan olarak bir dizin.php dosyasına göre öncelikli olacağından, index.html dosyasını belge kökünüzden kaldırmayı veya yeniden adlandırmayı unutmayın.
Apache’de DirectoryIndex Hakkında Bir Not
Apache’deki varsayılan DirectoryIndex ayarlarıyla, index.html adlı bir dosya her zaman bir index.php dosyasına göre öncelikli olacaktır. Bu, ziyaretçilere bilgilendirici bir mesaj içeren geçici bir index.html dosyası oluşturarak PHP uygulamalarında bakım sayfaları oluşturmak için kullanışlıdır. Bu sayfa, index.php sayfasına göre öncelikli olacağından, uygulamanın açılış sayfası olacaktır. Bakım bittiğinde, index.html yeniden adlandırılır veya belge kökünden kaldırılarak normal uygulama sayfası geri getirilir.
Bu davranışı değiştirmek istemeniz durumunda, /etc/apache2/mods-enabled/dir.conf dosyasını düzenlemeniz ve index.php dosyasının DirectoryIndex yönergesinde listelendiği sırayı değiştirmeniz gerekecektir:
sudo nano /etc/apache2/mods-enabled/dir.conf
Bu dosya için aşağıdaki içeriği kopyalayın /etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule>
Dosyayı kaydedip kapattıktan sonra, değişikliklerin geçerli olması için Apache’yi yeniden yüklemeniz gerekir:
sudo systemctl reload apache2
Bir sonraki adımda, PHP’nin sunucunuza doğru şekilde kurulduğunu ve yapılandırıldığını test etmek için bir PHP betiği oluşturacağız.
5. Adım – Web Sunucunuzda PHP İşlemeyi Test Etme
Artık web sitenizin dosya ve klasörlerini barındırmak için özel bir konumunuz olduğuna göre, Apache’nin PHP dosyalarına yönelik istekleri işleyebildiğini ve işleyebildiğini doğrulamak için bir PHP test komut dosyası oluşturacağız.
Özel web kök klasörünüzde info.php adlı yeni bir dosya oluşturun:
nano /var/www/alan_adiniz/info.php
Bu boş bir dosya açacaktır. Geçerli PHP kodu olan aşağıdaki metni dosyanın içine ekleyin: /var/www/alan_adiniz/info.php
<?php phpinfo();
Bitirdiğinizde, dosyayı kaydedin ve kapatın.
Bu betiği test etmek için web tarayıcınıza gidin ve sunucunuzun alan adına veya IP adresine, ardından bu durumda info.php olan komut dosyası adına erişin:
http://alan_adiniz_ya_da_IP/info.php
PHP’nin genel info sayfasını görebiliyor olmanız gerekiyor.
Bu sayfa sunucunuz hakkında PHP perspektifinden bilgi sağlar. Hata ayıklamak ve ayarlarınızın doğru bir şekilde uygulandığından emin olmak için kullanışlıdır.
Bu sayfayı tarayıcınızda görebiliyorsanız, PHP kurulumunuz beklendiği gibi çalışıyor.
Bu sayfa üzerinden PHP sunucunuzla ilgili bilgileri kontrol ettikten sonra, oluşturduğunuz dosyayı PHP ortamınız ve Ubuntu sunucunuz hakkında hassas bilgiler içerdiğinden kaldırmak en iyisidir. Bunu yapmak için rm kullanabilirsiniz:
sudo rm /var/www/alan_adiniz/info.php
Bilgilere daha sonra tekrar erişmeniz gerekirse, bu sayfayı her zaman yeniden oluşturabilirsiniz.
6. Adım – PHP’den Veritabanı Bağlantısını Test Etme (Opsiyonel)
PHP’nin MySQL’e bağlanıp bağlanamadığını test etmek ve veritabanı sorgularını yürütmek istiyorsanız, sahte veriler içeren bir test tablosu oluşturabilir ve içeriğini bir PHP betiğinden sorgulayabilirsiniz. Bunu yapmadan önce, bir test veritabanı ve ona erişmek için uygun şekilde yapılandırılmış yeni bir MySQL kullanıcısı oluşturmamız gerekiyor.
Bu yazının yazıldığı sırada, yerel MySQL PHP kitaplığı mysqlnd, MySQL 8 için varsayılan kimlik doğrulama yöntemi olan caching_sha2_authentication’ı desteklememektedir. PHP’den MySQL veritabanı.
ornek_veritabani adlı bir veritabanı ve ornek_kullanici adlı bir kullanıcı oluşturacağız, ancak bu adları farklı değerlerle değiştirebilirsiniz.
İlk olarak, root hesabı kullanarak MySQL konsoluna bağlanın:
sudo mysql
Yeni bir veritabanı oluşturmak için MySQL konsolunuzdan aşağıdaki komutu çalıştırın:
CREATE DATABASE ornek_veritabani;
Artık yeni bir kullanıcı oluşturabilir ve az önce oluşturduğunuz özel veritabanında onlara tam ayrıcalıklar verebilirsiniz.
Aşağıdaki komut, varsayılan kimlik doğrulama yöntemi olarak mysql_native_password’ü kullanan ornek_kullanici adlı yeni bir kullanıcı oluşturur. Bu kullanıcının şifresini şifre olarak tanımlıyoruz, ancak bu değeri kendi seçtiğiniz güvenli bir şifreyle değiştirmelisiniz.
CREATE USER 'ornek_kullanici'@'%' IDENTIFIED WITH mysql_native_password BY 'SIFRE';
Şimdi bu kullanıcıya ornek_veritabani veritabanı için izin vermemiz gerekiyor:
GRANT ALL ON ornek_veritabani.* TO 'ornek_kullanici'@'%';
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.
Şimdi MySQL kabuğundan şu şekilde çıkın:
exit
Yeni kullanıcının uygun izinlere sahip olup olmadığını, bu sefer özel kullanıcı kimlik bilgilerini kullanarak MySQL konsolunda tekrar oturum açarak test edebilirsiniz:
mysql -u ornek_kullanici -p
Bu komutta, ornek_kullanici kullanıcısı oluşturulurken kullanılan şifreyi soracak olan -p işaretine dikkat edin. MySQL konsoluna giriş yaptıktan sonra, ornek_veritabani veritabanına erişiminiz olduğunu onaylayın:
SHOW DATABASES;
Bu size aşağıdaki çıktıyı verecektir:
Output+--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)
Ardından, yapılacaklar_listesi adlı bir test tablosu oluşturacağız. MySQL konsolundan aşağıdaki ifadeyi çalıştırın:
CREATE TABLE ornek_veritabani.yapılacaklar_listesi( item_id INT AUTO_INCREMENT, content VARCHAR(255), PRIMARY KEY(item_id) );
Test tablosuna birkaç satır içerik ekleyin. Farklı değerler kullanarak sonraki komutu birkaç kez tekrarlamak isteyebilirsiniz:
INSERT INTO ornek_veritabani.yapılacaklar_listesi(content) VALUES ("Yapılacak iş 1");
Verilerin tablonuza başarıyla kaydedildiğini doğrulamak için şunu çalıştırın:
SELECT * FROM ornek_veritabani.yapılacaklar_listesi;
Aşağıdaki çıktıyı göreceksiniz:
Output +---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | Yapılacak iş 1 | | 2 | Yapılacak iş 2 | | 3 | Yapılacak iş 3 | | 4 | Yapılacak iş 4 | +---------+--------------------------+ 4 rows in set (0.000 sec)
Test tablonuzda geçerli verilere sahip olduğunuzu onayladıktan sonra MySQL konsolundan çıkabilirsiniz:
exit
Artık MySQL’e bağlanacak ve içeriğinizi sorgulayacak PHP betiğini oluşturabilirsiniz. Tercih ettiğiniz düzenleyiciyi kullanarak özel web kök dizininizde yeni bir PHP dosyası oluşturun. Bunun için nano kullanacağız:
nano /var/www/alan_adiniz/yapilacaklar_listesi.php
Aşağıdaki PHP komut dosyası MySQL veritabanına bağlanır ve yapılacaklar listesi tablosunun içeriğini sorgulayarak sonuçları bir liste halinde gösterir. Veritabanı bağlantısıyla ilgili bir sorun varsa, bir istisna atar. Bu içeriği yapilacaklar_listesi.php komut dosyanıza kopyalayın:/var/www/alan_adiniz/yapilacaklar_listesi.php
<?php $user = "ornek_kullanici"; $password = "SIFRE"; $database = "ornek_veritabani"; $table = "yapilacaklar_listesi"; try { $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password); echo "<h2>YAPILACAKLAR</h2><ol>"; foreach($db->query("SELECT content FROM $table") as $row) { echo "<li>" . $row['content'] . "</li>"; } echo "</ol>"; } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); }
Düzenlemeyi tamamladığınızda dosyayı kaydedin ve kapatın.
Artık bu sayfaya, web siteniz için yapılandırılmış alan adını veya genel IP adresini ve ardından /yapilacaklar_listesi.php adresini ziyaret ederek web tarayıcınızdan erişebilirsiniz:
http://alan_adiniz_ya_da_IP/yapilacaklar_listesi.php
Test tablonuza eklediğiniz içeriği gösteren şuna benzer bir sayfa görmelisiniz:
YAPILACAKLAR:
Yapılacak iş 1
Yapılacak iş 2
Yapılacak iş 3
Yapılacak iş 4
Bu, PHP ortamınızın MySQL sunucunuza bağlanmaya ve etkileşime hazır olduğu anlamına gelir.
Bitirirken
Bu kılavuzda, web sunucusu olarak Apache ve veritabanı sistemi olarak MySQL kullanarak, ziyaretçilerinize PHP web siteleri ve uygulamaları sunmak için esnek bir temel oluşturduk. Bu temel internette LAMP stack olarak geçmekte ve birçok websitesinin temel altyapısını oluşturmaktadır. Günümüzde LAMP için hazır kurulum scriptleri de bulunmakla birlikte, LAMP kurulumunu direkt kendiniz yapmanız hem sistemin nasıl işlediğini anlamak hem de sonrasında sorun oluşması durumunda yönetimini bilmek açısından sizin için çok daha verimli olacaktır.
Bir sonraki adım olarak LAMP için, HTTPS aracılığıyla hizmet vererek web sunucunuza olan bağlantıların güvenli olduğundan emin olmalısınız. Bunu başarmak için ücretsiz bir TLS/SSL sertifikasıyla sitenizin güvenliğini sağlamak için Let’s Encrypt’i kullanabilirsiniz. Yakında Let’s Encrypt ile ilgili bir yazı da yayınlıyor olacağız.