Bu rehber, FreeBSD 12.0 işletim sistemi üzerinde bir FAMP (FreeBSD, Apache, MySQL, PHP) yığını kurmak ve yapılandırmak isteyen kullanıcılar için tasarlanmıştır. FAMP, dinamik web siteleri ve uygulamaları barındırmak için güçlü ve esnek bir platform sağlar. Apache web sunucusu, MySQL veritabanı ve PHP betik dili kombinasyonu, dünya genelinde milyonlarca web sitesinin temelini oluşturmaktadır. Bu kılavuzda, her bir bileşenin adım adım nasıl kurulacağını ve birbirleriyle entegre edileceğini ayrıntılı olarak ele alacağız.
Ön Gereksinimler ve Sistem Güncelleme
FAMP yığınını kurmaya başlamadan önce, FreeBSD 12.0 kurulu ve çalışan bir sisteminizin olması gerekmektedir. İnternet bağlantısı da paketleri indirmek için zorunludur. Kurulum sürecini sorunsuz tamamlamak için aşağıdaki adımları uygulayarak sisteminizi güncelleyelim ve gerekli temel araçları kontrol edelim.
Paket Yöneticisi Kontrolü ve Sistem Güncellemesi
FreeBSD’de yazılım kurulumu için genellikle pkg (paket yöneticisi) kullanılır. Eğer pkg sisteminizde kurulu değilse, ilk kez bir paket kurmaya çalıştığınızda sistem size otomatik olarak kurmayı teklif edecektir. Bunu kabul edebilirsiniz. Daha sonra, paket listelerini güncelleyip mevcut paketleri yükselterek sisteminizi en yeni sürüme getirelim:
sudo pkg update
sudo pkg upgrade -y
Bu komutlar, sisteminizdeki tüm kurulu paketleri güncelleyecektir. -y bayrağı, tüm sorulara otomatik olarak “evet” yanıtı vermenizi sağlar. Bu işlem biraz zaman alabilir.
Apache Web Sunucusu Kurulumu ve Yapılandırması
Apache HTTP Sunucusu, dünyanın en popüler web sunucularından biridir. Web sitenizin içeriğini ziyaretçilere sunmaktan sorumludur. FreeBSD 12.0 üzerinde Apache 2.4 sürümünü kuracağız.
Apache Kurulumu
Apache’yi kurmak için aşağıdaki komutu kullanın:
sudo pkg install apache24 -y
Kurulum tamamlandıktan sonra, Apache servisinin sistem başlangıcında otomatik olarak başlamasını sağlamalı ve servisi başlatmalıyız. Bunun için sysrc komutunu kullanırız:
sudo sysrc apache24_enable="YES"
sudo service apache24 start
Bu adımların ardından Apache web sunucusu çalışır durumda olmalıdır. Web tarayıcınızı açıp sunucunuzun IP adresini veya alan adını yazarak test edebilirsiniz (örn: http://sunucu_ip_adresiniz). Eğer “It works!” yazan bir sayfa görüyorsanız, Apache başarıyla kurulmuş demektir.
Temel Apache Yapılandırması
Apache’nin ana yapılandırma dosyası /usr/local/etc/apache24/httpd.conf konumundadır. Bu dosyada bazı temel değişiklikler yapmamız gerekecek.
Bir metin düzenleyici ile dosyayı açın (örn: ee veya nano):
sudo ee /usr/local/etc/apache24/httpd.conf
Aşağıdaki satırları bulup düzenleyin veya ekleyin:
- ServerName: Genellikle yorum satırı (
#ile başlayan) olarak gelir. Kendi sunucunuzun IP adresini veya alan adını buraya yazın. - DirectoryIndex: PHP dosyalarının varsayılan olarak yüklenmesini sağlamak için
index.php‘yi ekleyin. - AllowOverride:
.htaccessdosyalarının kullanılmasına izin vermek içinAllowOverride NoneyerineAllowOverride Allyapın. Bu, genellikle web uygulamaları için gereklidir.
#ServerName www.example.com:80
ServerName sunucu_ip_adresiniz_veya_alan_adiniz:80
#
DirectoryIndex: sets the default directory index for a directory
DirectoryIndex index.php index.html
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Değişiklikleri kaydettikten sonra Apache servisini yeniden başlatın:
sudo service apache24 restart
Pratik Bilgi: Varsayılan web kök dizini /usr/local/www/apache24/data‘dır. Tüm web sitenizin dosyalarını bu dizine veya sanal host yapılandırması ile belirleyeceğiniz başka bir dizine yükleyeceksiniz.
MySQL Veritabanı Sunucusu Kurulumu ve Yapılandırması
MySQL, açık kaynaklı ve yaygın olarak kullanılan bir ilişkisel veritabanı yönetim sistemidir. Web uygulamalarınızın verilerini depolamak için kullanılacaktır.
MySQL Kurulumu
MySQL’in belirli bir sürümünü kurmak isteyebilirsiniz (örn: mysql80-server veya mysql57-server). Bu rehberde mysql80-server sürümünü kullanacağız. Mevcut sürümleri pkg search mysql-server komutu ile kontrol edebilirsiniz.
sudo pkg install mysql80-server -y
Kurulum tamamlandıktan sonra, MySQL servisinin sistem başlangıcında otomatik olarak başlamasını sağlamalı ve servisi başlatmalıyız:
sudo sysrc mysql_enable="YES"
sudo service mysql-server start
MySQL Güvenli Kurulumu
Yeni kurulan bir MySQL sunucusunun güvenlik yapılandırmasını yapmak çok önemlidir. mysql_secure_installation betiği, root şifresi belirleme, anonim kullanıcıları kaldırma, uzaktan root girişini devre dışı bırakma ve test veritabanını silme gibi adımlarda size yardımcı olacaktır.
sudo mysql_secure_installation
Bu betik size çeşitli sorular soracaktır:
VALIDATE PASSWORD COMPONENTkurmak isteyip istemediğinizi soracak. Bu, güçlü şifreler zorunlu kılar. İsterseniz “y” (yes) diyerek kurabilirsiniz, istemezseniz “n” (no) diyebilirsiniz. Eğer kurarsanız, bir şifre gücü seviyesi seçmeniz istenecektir.Set root password? [Y/n](Root şifresi belirle?) ->Yseçip güçlü bir şifre belirleyin.Remove anonymous users? [Y/n](Anonim kullanıcıları kaldır?) ->YDisallow root login remotely? [Y/n](Root’un uzaktan giriş yapmasını engelle?) ->Y(Genellikle güvenlik için önerilir, root kullanıcısının sadece localhost’tan bağlanmasına izin verir.)Remove test database and access to it? [Y/n](Test veritabanını ve erişimini kaldır?) ->YReload privilege tables now? [Y/n](Yetki tablolarını şimdi yeniden yükle?) ->Y
Bu adımları tamamladıktan sonra MySQL sunucunuz daha güvenli bir şekilde yapılandırılmış olacaktır.
Pratik Bilgi: MySQL’e root kullanıcısı olarak bağlanmak için mysql -u root -p komutunu kullanabilirsiniz. Ardından belirlediğiniz şifreyi girmeniz istenecektir. Veritabanı oluşturma, kullanıcı yönetimi gibi işlemler için SQL komutlarını burada çalıştırabilirsiniz.
PHP Kurulumu ve Apache ile Entegrasyonu
PHP (Hypertext Preprocessor), dinamik web içeriği oluşturmak için yaygın olarak kullanılan bir betik dilidir. Apache ile entegre edilerek web uygulamalarınızın çalışmasını sağlar.
PHP ve Gerekli Modüllerin Kurulumu
Bu rehberde PHP 8.0 sürümünü kuracağız. Mevcut sürümleri pkg search php komutu ile kontrol edebilirsiniz. PHP’nin yanı sıra, MySQL ile iletişim kurmak için php80-mysqli veya php80-pdo_mysql gibi modüllere de ihtiyacımız olacak. Ayrıca, web uygulamaları için yaygın olarak kullanılan diğer modülleri de ekleyelim:
sudo pkg install php80 php80-mysqli php80-pdo_mysql php80-mbstring php80-curl php80-json php80-zip -y
Bu komut, PHP 8.0’ı ve belirtilen modülleri kuracaktır.
PHP Yapılandırması
PHP’nin yapılandırma dosyası php.ini‘dir. Varsayılan olarak, üretim ve geliştirme ortamları için örnek dosyalar bulunur. Genellikle üretim ortamı için olanı kopyalarız:
sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
Bu dosyayı ihtiyaçlarınıza göre düzenleyebilirsiniz. Örneğin, upload_max_filesize veya memory_limit gibi değerleri değiştirebilirsiniz:
sudo ee /usr/local/etc/php.ini
Apache ile PHP Entegrasyonu
PHP’nin Apache ile çalışabilmesi için Apache’ye PHP modülünü yüklemesini ve .php uzantılı dosyaları PHP işlemcisiyle işlemesini söylemeliyiz. Bu ayarları Apache’nin ana yapılandırma dosyası olan /usr/local/etc/apache24/httpd.conf içinde yapacağız.
Dosyayı tekrar açın:
sudo ee /usr/local/etc/apache24/httpd.conf
Aşağıdaki satırları dosyanın sonuna ekleyin veya mevcut satırları düzenleyin:
# PHP 8.0 modülünü yükle
LoadModule php_module libexec/apache24/libphp.so
.php uzantılı dosyaları PHP ile işle
SetHandler application/x-httpd-php
SetHandler application/x-httpd-php-source
Daha önce DirectoryIndex satırını düzenlemiştik (DirectoryIndex index.php index.html). Bu, Apache’nin dizinlere erişildiğinde index.php dosyasını öncelikli olarak aramasını sağlar.
Değişiklikleri kaydettikten sonra Apache servisini yeniden başlatın:
sudo service apache24 restart
PHP Kurulumunu Test Etme
PHP’nin Apache ile doğru bir şekilde çalıştığını doğrulamak için, web kök dizininde (varsayılan olarak /usr/local/www/apache24/data) basit bir info.php dosyası oluşturalım:
sudo ee /usr/local/www/apache24/data/info.php
Dosyanın içine aşağıdaki içeriği ekleyin:
Dosyayı kaydedin ve web tarayıcınızda http://sunucu_ip_adresiniz_veya_alan_adiniz/info.php adresine gidin. Eğer PHP yapılandırma bilgilerini içeren bir sayfa görüyorsanız, FAMP yığınınız başarıyla kurulmuş ve çalışır durumda demektir. Güvenlik nedeniyle, bu info.php dosyasını testten sonra silmeyi veya erişimi kısıtlamayı unutmayın.
Sonuç ve Sıkça Sorulan Sorular (SSS)
Bu rehberde, FreeBSD 12.0 üzerinde Apache web sunucusu, MySQL veritabanı ve PHP betik dilinden oluşan bir FAMP yığınını başarıyla kurdunuz ve yapılandırdınız. Artık dinamik web siteleri ve uygulamaları geliştirmek ve barındırmak için sağlam bir temele sahipsiniz. Kurulum sonrası güvenlik önlemleri, düzenli güncellemeler ve yedeklemeler web sitenizin ve verilerinizin güvenliği için kritik öneme sahiptir.
Sıkça Sorulan Sorular (SSS)
S: pkg komutu bulunamazsa ne yapmalıyım?
C: Eğer pkg komutu bulunamazsa, genellikle ilk kez bir paket kurmaya çalıştığınızda sistem size otomatik olarak pkg‘yi kurmayı teklif edecektir. Bunu kabul edebilirsiniz. Manuel olarak kurmak isterseniz env PAGER=cat pkg bootstrap komutunu kullanabilirsiniz.
S: Hangi PHP/MySQL sürümünü seçmeliyim?
C: Genellikle en son kararlı sürümü tercih etmek iyi bir yaklaşımdır, çünkü daha fazla özellik, performans iyileştirmesi ve güvenlik düzeltmeleri içerir. Ancak, belirli bir web uygulamanız varsa, onun gereksinimleriyle uyumlu olan sürümü seçmeniz gerekebilir. pkg search php ve pkg search mysql-server komutları ile mevcut sürümleri görebilirsiniz.
S: Apache 403 (Forbidden) hatası verirse ne yapmalıyım?
C: Bu hata genellikle dizin izinleri veya Apache yapılandırmasındaki AllowOverride ve Require all granted ayarlarından kaynaklanır. Web kök dizininin (/usr/local/www/apache24/data) ve içindeki dosyaların Apache kullanıcısı tarafından okunabilir olduğundan emin olun. Ayrıca, httpd.conf dosyasındaki AllowOverride All ve Require all granted ayarlarını kontrol edin.
S: mysql_secure_installation çalışmazsa ne yapmalıyım?
C: mysql_secure_installation komutunu çalıştırmadan önce MySQL servisinin çalıştığından emin olun (sudo service mysql-server status). Eğer hala sorun yaşıyorsanız, MySQL loglarını kontrol edebilir veya MySQL root kullanıcısına geçici olarak şifresiz erişim izni verip ardından manuel olarak şifre belirleyebilirsiniz (bu işlem dikkatli yapılmalıdır).
S: FAMP bileşenlerini otomatik başlatmak için ne yapmalıyım?
C: Bu rehberde zaten sudo sysrc apache24_enable="YES" ve sudo sysrc mysql_enable="YES" komutlarını kullanarak Apache ve MySQL servislerinin sistem başlangıcında otomatik olarak başlamasını sağladık. PHP bir Apache modülü olduğundan, Apache başladığında PHP de otomatik olarak yüklenecektir.
S: Güvenlik için ek neler yapabilirim?
C:
- Bir güvenlik duvarı (örn.
pfveyaipfw) kurarak sadece gerekli portlara (80, 443) erişime izin verin. - SSH bağlantıları için parola yerine SSH anahtarları kullanın.
- PHP’nin
php.inidosyasındaexpose_php = Offayarını yaparak PHP sürüm bilgisinin web sunucusu başlıklarında görünmesini engelleyin. - MySQL veritabanı kullanıcıları için en az ayrıcalık prensibini uygulayın.
- Düzenli olarak sistem ve paket güncellemelerini yapın.
- Web uygulamalarınızın (WordPress, Joomla vb.) güncel olduğundan emin olun.
- SSL/TLS sertifikası (Let’s Encrypt gibi) kullanarak HTTPS’i etkinleştirin.