Bu bölüm Unix sistemlerde PHP'nin Apache 2.0'a kurulumu hakkında bilgiler ve ipuçları içerir.
Apache 2'nin bir hizmet ortamında evreli MPM'lerle kullanımını önermiyoruz. Bunun yerine prefork MPM'sini veya Apache 1 kullanmanızı öneririz. Bunun sebebini SSS altında Apache ve evreli MPM'ler başlığı altında bulabilirsiniz.
Apache 2.0 HTTP Sunucusu hakkında temel bir bilgi edinmek için mutlaka » Apache HTTP Sunucusu Sürüm 2.0 Belgelerine bakmanızı öneririz.
Bilginize: PHP ve Apache 2.0.x uyumluluk bilgileri
Aşağıdaki PHP sürümlerinin Apache 2.0.x'in en son sürümleri ile çalıştığı bilinmektedir:
- PHP 4.3.0 ve sonrası » http://www.php.net/downloads.php adresinden indirilebilir.
- En son kararlı geliştirme sürümü. Kaynak kod paketini » http://snaps.php.net/php5-latest.tar.gz olarak, Windows çalıştırılabilirlerini ise » http://snaps.php.net/win32/php5-win32-latest.zip olarak indirebilirsiniz.
- Kararlı sürüm adayı sürümü » http://qa.php.net/ adresinden indirebilirsiniz.
- PHP'yi » anonim SVN'den indirme seçeneği elbette daima mevcut.
PHP'nin bu sürümleri Apache 2.0.40 ve sonrası ile uyumludur.
Apache 2.0 SAPI desteği PHP 4.2.0 ile başlamıştır. PHP'nin 4.2.3 sürümü Apache 2.0.39'da çalışır. PHP'nin 4.2.3 sürümünü bundan başka bir Apache sürümü ile kullanmayın. Ancak, PHP'nin 4.3.0 ve sonraki sürümlerini Apache2'nin en son sürümleri ile gönül rahatlığıyla kullanabilirsiniz.
PHP'nin bahsi geçen bütün sürümleri hala Apache 1.3.x ile çalışmaktadır. Apache 2.x.x'in Apache 1.3.x ile uyumlu (tek evreli çok süreçli) yapılandırmaları ile de aynı durum sözkonusudur.
» Apache 2.0'ın en son sürümünü ve buna uygun PHP sürümünü yukarıda bahsedilen yerlerden indirebilirsiniz. Bu kısa kılavuz Apache 2.0 ve PHP hakkında sadece temel bilgi sağlar. Daha ayrıntılı bilgi edinmek için » Apache HTTP Sunucusu Belgelerine bakınız. Kurulum talimatlarının sürüm numaralarından ötürü geçerliliğini yitirmemesi için sürüm numaraları 'NN' şeklinde belirtilmiştir, siz bunların yerine kurduğunuz sürümün sürüm numarasını yazacaksınız.
Örnek 1 - PHP'nin Paylaşımlı Apache 2 Modülü olarak kurulumu
1. gzip -d httpd-2_0_NN.tar.gz 2. tar xvf httpd-2_0_NN.tar 3. gunzip php-NN.tar.gz 4. tar -xvf php-NN.tar 5. cd httpd-2_0_NN 6. ./configure --enable-so 7. make 8. make install Böylece standart prefork MPM'si ve yüklenebilir modül desteği ile Apache 2.0.NN /usr/local/apache2 altına kurulmuş oldu. Kurulumu denemek için Apache HTTP sunucusunu normal yollardan başlatabilirsiniz. Örnek: /usr/local/apache2/bin/apachectl start PHP yapılandırmasıyla çalıştırmak üzere şimdilik sunucuyu durduralım: /usr/local/apache2/bin/apachectl stop. 9. cd ../php-NN 10. Artık PHP'yi yapılandırabiliriz. Hangi eklentilerin etkin olacağını belirten çeşitli seçenekleri kullanarak PHP'yi özelleştirebilirsiniz. Olası seçeneklerin listesini görmek için ./configure --help komutunu kullanın. Bu örnekte Apache 2 ve MySQL ile basit bir yapılandırmaya gideceğiz. Sizde apxs farklı bir yere kurulmuş olabilir, hatta ismi apxs2 bile olabilir. ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql 11. make 12. make install Eğer kurulumdan sonra yapılandırmanızı değiştirmek isterseniz sadece son üç adımı yinelemeniz yeterli olacaktır. Yeni modülün etkin olabilmesi için Apache'yi yeniden başlatmanız gerekir. Apache'yi yeniden derlemeniz gerekmez. Aksi özellikle belirtilmedikçe 'make install' ile phpize gibi çeşitli PHP araçları, PEAR, PHP CLI ve bir takım başka şeylerin de kurulumu yapılır. 13. php.ini dosyanızı yapılandırın: cp php.ini-dist /usr/local/lib/php.ini PHP seçeneklerini ayarlamak için .ini dosyanızı düzenleyebilirsiniz. .ini dosyanızın başka bir yerde durmasını istiyorsanız, 10. şıkta --with-config-file-path=/başka/bir/yer seçeneği ile dosyanız için başka bir yer belirtebilirsiniz. php.ini-dist yerine php.ini-recommended (dağıtımın standart .ini dosyası yerine önerilen yapılandırmalar dosyasını) kullanmayı tercih ederseniz, değişiklik listesini okumayı ihmal etmeyin, çünkü bunlar PHP'nin davranışını etkileyecektir. 14. PHP modülünün yüklenmesi için httpd.conf dosyasını düzenlemelisiniz. LoadModule yönergesinin değeri PHP modülünün sistemdeki yerini göstermelidir. Yukarıdaki 'make install' bunu sizin yerinize yapmıştır ama emin olmak için siz yine de bir bakın. PHP 4 için: LoadModule php4_module modules/libphp4.so PHP 5 için: LoadModule php5_module modules/libphp5.so 15. Apache'ye belli dosya uzantılarını PHP uzantıları olarak ele almasını söyleyin. Örneğin, .php uzantılı dosyaları Apache'nin PHP dosyaları olarak ele almasını isteyebiliriz. Apache AddType yönergesini kullanmamak suretiyle, PHP tarafından çalıştırılmak üzere istismar.php.jpg gibi dosyaların oluşturulması ve yüklenmesi gibi tehlikeli durumlardan kaçınmak isteyebilirsiniz. Biz örnek olsun diye .phtml uzantısını ekledik. Başka uzantıları da buraya ekleyebilirsiniz. Bunları aralarında boşluk bırakarak aynı satıra yazabilirsiniz. <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> Veya .php, .php2, .php3, .php4, .php5, .php6 ve .phtml gibi dosyalar dışında hiçbir dosyanın PHP tarafından çalıştırılmamasını şöyle sağlayabilirsiniz: <FilesMatch "\.ph(p[2-6]?|tml)$"> SetHandler application/x-httpd-php </FilesMatch> PHP kaynak kodlarını renklendirilmiş olarak göstermek için .phps uzantısını da yapılandırmanıza ekleyebilirsiniz. Bu, şöyle yapılır: <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> 16. Artık Apache'yi başlatabilirsiniz. Bunun için Apache'yi her zaman ki gibi başlatmanız yetecektir: /usr/local/apache2/bin/apachectl start - VEYA - service httpd restart
Yukarıdaki adımları izleyerek PHP'nin bir SAPI modülü olarak çalıştığı bir Apache 2 HTTP sunucusuna sahip olursunuz. Apache ve PHP için şüphesiz birçok farklı yapılandırma seçeneği vardır. Yapılandırma seçeneklerinin listesi için her kaynak ağacında ./configure --help çalıştırabilirsiniz. Eğer Apache 2'nin çok evreli MPM'lerinden birini derlemek isterseniz worker veya perchild MPM modülünü etkin kılabililirsiniz. Bunu yapmak için 6. şıkta derleme seçeneklerinize --with-mpm=worker veya --with-mpm=perchild seçeneğini ekleyebilirsiniz. Bunu yapmadan önce, bunun olası sonuçları hakkında bilgi sahibi olmaya, azından ne gibi etkilerinin olacağını anlamaya çalışın. Bu konuda daha ayrıntılı bilgi edinmek için Apache HTTP sunucusunun belgelerinden » Çok Süreçlilik Modülleri (MPM'ler) belgesini okuyunuz.
Bilginize: İçerik dili uzlaşımı kullanmak isterseniz Apache MultiViews SSS'ine bakınız.
Bilginize: Apache'nin çok evreli bir sürümünü kurabilmek için sisteminizin evreleri desteklemesi gerekir. Aynı durum PHP'nin deneysel Zend Thread Safety (ZTS) motoru için de geçerlidir. Şüphesiz, evre desteği olmayan eklentiler de kullanılamayacaktır. Bu bakımdan Apache'yi standart prefork MPM'si ile derlemenizi öneriyoruz.