Bu makalemizde Ubuntu Server 20.04 üzerine LAMP kurulum işlemlerini gerçekleştireceğiz. Öncelikle LAMP Server nedir, nasıl çalışır ve neden gereklidir? Bunları cevaplamaya çalışalım. LAMP açılımına bakarsak Linux+Apache+MySQL+PHP için kısaltmadır. Ayrıca MySQL’e alternatif olarak MariaDB de kullanılabilir. Bu tümleşik yapı web uygulamalarında popüler bir yığın olarak kullanılmaktadır. Bu yığında Linux işletim sistemi, MySQL veritabanı, Apache web sunucusu ve içeriği fonksiyonel hale getirmek ve yönetmek için PHP kullanılır.
LAMP Server nasıl çalışır?
Apache web sunucusu bir kullanıcının tarayıcısından web sayfaları için istek alarak başlar. İstek bir PHP dosyası içinse, Apache isteği dosyayı yükleyen ve dosyada bulunan kodu çalıştıran PHP’ye iletir. PHP ayrıca kodda referans verilen herhangi bir veriyi almak için MySQL ile iletişim kurar. PHP daha sonra tarayıcıların web sayfalarını görüntülemek için ihtiyaç duyduğu HTML’yi oluşturmak için dosyadaki kodu ve veritabanındaki verileri kullanır. Dosya kodunu çalıştırdıktan sonra PHP, ortaya çıkan verileri tarayıcıya göndermek için Apache web sunucusuna geri gönderir. Ayrıca bu yeni verileri MySQL’de de saklayabilir. Ve elbette, tüm bu işlemler, yığının tabanında çalışan Linux işletim sistemi tarafından etkinleştirilir.
PhpMyAdmin: Php ile yazılmış açık kaynak kodlu web tabanlı bir veritabanı yazılımıdır. Başlıca kullanım amacı MySQL veritabanı yönetimidir.
Apache: Açık kaynak kodlu bir web suncusudur.
MySQL: Açık kaynak kodlu bir ilişkisel veritabanı yönetim sistemidir.
PHP: Açık kaynak kodlu Web tabanlı bir yazılım dilidir.
Ön gereksinimler;
- Ubuntu Server 20.04 LTS
- Sanal Makine Minimum Kaynak Gereksinimleri (1vCpu, 2GB Ram, 25GB HDD,)
- Putty
- Sudo yetkilerine sahip bir kullanıcı veya root kullanıcısı
- SSH erişimi
Bu genel bilgilerden sonra kurulum adımlarına geçelim. Kullanıcılar kurulum sırasında büyük ve küçük harflere dikkat etmediği için hata alabiliyor. Linux, Windows’tan farklı olarak büyük ve küçük harf duyarlılığı vardır. Aklımızda bulunsun 🙂
Yetkili kök kullanıcısına (root) geçiş yapalım.
# sudo su
Kullanıcı şifremizi girelim.
*Apache2 Web Server Kurulumu*
Tüm depolarda en son paket sürümlerini alalım. Bu sayede paket deposundaki versiyon farkları araştırılar ve liste güncellenir.
#apt-get update
Sistemimizdeki depoların listesini güncelledikten sonra en son sürüme yükseltelim. Burada dikkat edilmesi gereken nokta kurulu olan paketlerin üzerindeki güncelleme yapıldıktan sonra lib dosyaları 1.1 sürümünden 1.2 sürümüne güncellenir.
#apt-get -y upgrade
Apache2 kurulumunu gerçekleştirelim.
#apt install -y apache2
Apache2 servisimizi durduralım.
#systemctl stop apache2.service
Apache2 servisimizi başlatalım.
#systemctl start apache2.service
Apache2 servisimizi etkinleştirelim.
#systemctl enable apache2.service
Apache2 servisimizin durumunu kontrol edelim.
#systemctl status apache2
Aktif ve herhangi bir sorun olmadığını görebiliyoruz.Servisimiz çalışır durumda, klavyemizden “Ctrl+C tuşuna basıp Enter “ ile ekrandan çıkış yapalım.
Kurulumu kontrol etmek için bilgisayarımızda tarayıcı açalım ve adres çubuğuna “http://ipadresim” girelim.
*Opsiyonel*
Eğer bu işlemleri yaptığınız halde yukarıdaki varsayılan sayfa gelmediyse güvenlik duvarını aktifleştirmiş olabilirsiniz. Bu durumda Apache’nin web isteklerine gerekli olan portlar “80 ve 443” izin vermelisiniz.Güvenlik duvarını “UFW” kuralım.
UFW nedir?
UFW yani Uncomplicated güvenlik duvarı yapılandırmasını kolaylaştırmak için geliştirilen ipv4 veya ipv6 Firewall güvenlik yönetim aracıdır.
#apt-get install ufw
Varsayılan olarak yüklü geldiği için herhangi bir yükleme işlemi yapmadı.Güvenlik duvarında http ve HTTPS trafiğine izin verelim.
#ufw allow http
#ufw allow https
Farklı bir komutlada gerekli tüm izinleri verebilirsiniz.
#ufw allow ‘Apache Full’
Güvenlik duvarının durumunu kontrol edelim.
#ufw status
Status kısmında eğer inactive yani pasif olarak görüyorsanız. UFW aktif edip durumunu tekrar kontrol edelim.
#ufw enable “ –Y- seçeneği ve sonrasında –Enter- ile ufw aktif hale getiriyoruz.
Versiyon kontrolü yapmak için
#ufw version
*MySQL Veritabanı Kurulumu*
MySQL kurulumu için aşağıdaki komutu çalıştıralım. Kurulum adımlarında –y komutu ile kurulumlara onay vermiş oluyorum. Aksi halde her kurulumda kurulumu tamamlamak için onay vermemiz gerekecektir.
#apt install -y mysql-server
MySQL kurulumlarında uzak kök oturum açma vb. işlemleri için bazı kısımları değiştirerek daha güvenli hale getirebiliriz.Güvenlik için gerekli komutu çalıştıralım.
#mysql_secure_installation
İlk aşamada güvenliği arttırmak için şifre bileşenleri kurmak isteyip istemediğimizi bize soruyor. “Y” ile onay veriyoruz.
Bu kısımda şifre politikası olarak 2 seçenek bizi karşılıyor. 1. Seçenek medium yani orta 2. seçenek ise strong yani kuvvetli ben güvenlik adına en az sekiz karakter uzunluğunda olmasını ve büyük,küçük harf, sayısal ve özel karakterlerinin bir kısmını içermesi gerekmektedir.
Şifremizi giriyoruz ve yapılandırma işlemlerine devam ediyoruz.
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : (Parola doğrulama eklentisi kullandığımız için bir geri bildirim alıyoruz.Komut dosyası, yeni girdiğimiz şifreyle devam etmek isteyip istemediğimizi veya yeni bir şifre girmek istediğimizi soruyor. Şifreyi tekrar değiştirmeyeceğim için “Y” ile devam ediyoruz.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : İsimsiz kullanıcılar kaldırılsın mı? “Y”
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Root kullanıcısına, uzaktan erişim verilsin mi? “Y”
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Test veritabanı ve erişim izin kaldırılsın mı? “Y”
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Ayrıcalıklı tablolar yeniden yüklensin mi? “Y”
MySQL servisimizi durduralım.
#systemctl stop mysql.service
MySQL servisimizi başlatalım.
#systemctl start mysql.service
MySQL servisimizi etkinleştirelim.
#systemctl enable mysql.service
MySQL servisimizin durumunu kontrol edelim.
#systemctl status mysql
Aktif ve herhangi bir sorun olmadığını görebiliyoruz.Servisimiz çalışır durumda, klavyemizden “Ctrl+C tuşuna basıp Enter “ ile ekrandan çıkış yapalım.
MySQL servisine giriş yapalım.
#mysql -u root
İlk olarak hangi kullanıcılar olduğunu sorgulayalım.
SELECT Host, User FROM mysql.user;
Ardından veritabanını görüntüleyelim.
show databases;
Yeni bir kullanıcı oluşturalım. Aşağıdaki satırda gerekli yeri kendimize göre doldurarak kodu çalıştırıyoruz.
CREATE USER ‘yeni_kullanici’@’localhost’ IDENTIFIED BY ‘sifre’;
Kullanıcı adımı mehmet.oz şifremi Password.! olarak belirledim.
Oluşturduğumuz kullanıcı varsayılan olarak herhangi bir yetkisi yoktur. Yetkisiz olduğu için veritabanına erişimi olmamaktadır. Gerekli tam erişimleri verelim.
GRANT ALL PRIVILEGES ON * . * TO ‘mehmet.oz’@’localhost’;
Son olarak yetkileri onaylamak için aşağıdaki satırı çalıştırıyoruz.
FLUSH PRIVILEGES;
Çıkmak için quit komutunu çalıştırmamız yeterli.
Çıkış yapalım.
quit;
MySQL versiyonunu kontrol edelim.
*Opsiyonel*
Bazı izinler aşağıdaki gibidir ;
ALL PRIVILEGES : Kullanıcıya MySQL üzerindeki veri tabanına tüm yetkileri verecektir.
CREATE : Yeni bir veri tabanı ve tablo oluşturma yetkisi verir.
DROP : Veri tabanı veya tabloları silme yetkisi verir.
DELETE : Tablodaki satırları silme yetkisi verir.
UPDATE : Tabloda satırları güncelleme yetkisi verir.
SELECT : Veri tabanları üzerinde okuma işlemine izin verir.
INSERT : Tabloya satır ekleme yetkisi verir.
GRANT OPTION : Diğer kullanıcılara yetki verme ya da kaldırma için kullanılır.
Herhangi bir kullanıcıya istediğimiz bir yetkiyi vermek için aşağıdaki kod satırını çalıştırıyoruz.
GRANT [yetki_türü] ON [veritabanı_adı].[tablo_adı] TO ‘[kullanıcı_adı]’@’localhost’;
Her yaptığımız değişiklikte Flush Privileges komutunu çalıştırıyoruz.
Kullanıcı yetkilerini görmek isterseniz aşağıdaki komutu çalıştırmanız yeterli.
SHOW GRANTS FOR ‘mehmet.oz’ @ ‘localhost’ ;
*PHP Kurulumu*
Php ve modüllerinin kurulumunu gerçekleştirelim.
#apt install php libapache2-mod-php php7.4-mysql php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-opcache php7.4-soap php7.4-zip php7.4-intl -y
PHP versiyon bilgisini kontrol edebilim.
#php –v
PHP kurulumumuzu kontrol edelim.
Kontrol işlemleri için bir tane test.php dosyası oluşturalım. Nano editörü ile hem düzenleme hemde dosya oluşturabiliriz.
#nano /var/www/html/test.php
Editör ile açtıktan sonra aşağıdaki komutları kopyalayıp yapıştırıyorum.
<?php
phpinfo();
?>
Dosyayı kaydedin ve çıkış yapın. “CTRL+X. ardından “Y” tuşuna basıp “Enter” ile onaylayınız.”
Kurulumu kontrol etmek için bilgisayarımızda tarayıcı açalım ve adres çubuğuna “http://ipadresim/test.php” girelim.
PHP’nin doğru bir şekilde çalıştığını onayladıktan sonra, güvenlik açığı oluşmaması için “test.php’yi” silmek önemlidir.
#rm /var/www/html/test.php
*PhpMyAdmin Kurulumu*
Phpmyadmin kurulumunu gerçekleştirelim.
#apt install -y phpmyadmin
Phpmyadmin çalışırken otomatik olarak hangi web sunucusundan kullanacığını seçmemiz gerekiyor. Apache2 kullandığımız için “Enter” ile devam ediyorum.
Bu kısımda veritabanı yönetiminde yeterli bilgiye sahip değilseniz, otomatik olarak “Yes” seçeneği ile konfigürasyon işlemlerini gerçekleştirebilirsiniz. Detaylı bilgiyi /usr/share/doc/phpmyadmin kısmından inceleyebilirsiniz.
Bu kısımda belirlediğiniz şifre varsayılan olarak gelen phpmyadmin kullanıcısının şifresi yani web sayfasınında phpmyadmin’e giriş yaparken bu şifreyi kullanacağız.
Son olarak VirtualHost’u etkinleştirmek için , dosyamızdan Apache’nin etkin olduğu sitelere sembolik bir bağlantı oluşturuyoruz.
#ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
Apache’nin yazma modülünü etkinleştirelim.
#a2enconf phpmyadmin.conf
Apache servisimizi restart edelim.
#systemctl reload apache2.service
Kurulumu kontrol etmek için bilgisayarımızda tarayıcı açalım ve adres çubuğuna “http://ipadresim/phpmyadmin” girelim.
MySQL yapılandırma kısmında kendimize yetkili bir kullanıcı oluşturmuştuk. Bu bilgiler ile giriş yapabiliriz.
Phpmyadmin kurulum sırasında ise bir şifre belirlemiştik. Varsayılan olarak kurulum sırasında phpmyadmin adında bir kullanıcı oluşmaktadır. Ancak bu kullanıcı ile erişim sağladığınızda tam yetkili bir erişim olmayacaktır.
Yetkili kullanıcı ile giriş yaptığımızda tüm kullanıcıları görsel olarak izinlerini düzenleyebilir , yeni kullanıcı ekleyebilir veya silebiliriz.
Bu makalemizde Ubuntu 20.04 LTS LAMP Server + Phpmyadmin kurulumunu gerçekleştirdik. Sorun yaşadığınız yerleri yorumlarda belirtebilirsiniz. Başka bir makalede görüşmek üzere. Sağlıcakla kalın.