Unix sistemler ve Apache 1.3.x

Bu bölümde, PHP'nin Unix platformlarında Apache kurulumlarına özgü bilgilere ve ipuçlarına yer verilmiştir. Apache 2 ile ilgili bilgiler ve ipuçları ayrı bir sayfada verilmiştir.

Aşağıda, 10. şıkta kullanacağınız configure betiğinin temel yapılandırma seçeneklerini eklerde bulabilirsiniz. Eklentilere özgü yapılandırma seçenekleri ise eklentilerin kılavuzdaki belgelerinde bulunabilir. Örneklerde yazılımların sürüm numaraları, belgeyi sürüm numarasına bağlı kılmamak için 'xxx' ile gösterilmiştir. Siz bu çarpıların yerine kurduğunuz paketlerin sürüm numaralarını yazacaksınız.

Örnek 1 - PHP'nin Paylaşımlı Apache Modülü olarak kurulumu

1.  gunzip apache_xxx.tar.gz
2.  tar -xvf apache_xxx.tar
3.  gunzip php-xxx.tar.gz
4.  tar -xvf php-xxx.tar
5.  cd apache_xxx
6.  ./configure --prefix=/usr --enable-module=so
7.  make
8.  make install
9.  cd ../php-xxx

10. Artık PHP'yi yapılandırabilirsiniz. Burada PHP'yi eklentileri
    etkinleştiren çeşitli seçeneklerle özelleştirebilirsiniz. Olası
    seçeneklerin listesini almak için ./configure --help komutunu
    çalıştırabilirsiniz. Bu örnekte Apache 1 için MySQL destekli
    basit bir yapılandırmaya yer verilmiştir. Ayrıca, apxs komutunun
    bulunduğu yer de buradakinden farklı olabilir.

      ./configure --with-mysql --with-apxs=/usr/bin/apxs

11. make
12. make install

    Kurulumdan sonra yapılandırmanızı değiştirmek isterseniz son üç adımı
    yinelemek yeterlidir. Yeni modülün etkili olması için tek ihtiyacınız
    Apache'yi yeniden başlatmaktır. Apache'nin yeniden derlenmesine gerek
    yoktur.

    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-development /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-production (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.

      LoadModule php5_module libexec/libphp5.so

15. httpd.conf'un AddModule bölümünde ClearModuleList yönergesinin altına
    şunu ekleyin:

      AddModule mod_php5.c

16. 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. Başka uzantıları da buraya
    ekleyebilirsiniz. Bunları aralarında boşluk bırakarak aynı satıra
    yazabilirsiniz. Biz örnek olsun diye .phtml uzantısını ekledik.

      AddType application/x-httpd-php .php .phtml

    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:

      AddType application/x-httpd-php-source .phps

17. Artık Apache'yi başlatabilirsiniz. Bunun için Apache'yi her zaman ki gibi
    başlatmanız yetecektir. (Sunucunun bir HUP veya USR1 sinyali kullanılarak
    yeniden yüklenmemesi için sunucunuzu yeniden başlatmadan önce
    durdurmalısınız.)

PHP'yi bir duruk nesne olarak da kurabilirsiniz:

Örnek 2 - PHP'nin Duruk Apache Modülü olarak kurulumu

1.  gunzip -c apache_1.3.x.tar.gz | tar xf -
2.  cd apache_1.3.x
3.  ./configure
4.  cd ..

5.  gunzip -c php-5.x.y.tar.gz | tar xf -
6.  cd php-5.x.y
7.  ./configure --with-mysql --with-apache=../apache_1.3.x
8.  make
9.  make install

10. cd ../apache_1.3.x

11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a
    (Bu satırda bir hata yok! libphp5.a'nın henüz mevcut olmadığının
    farkındayız. PHP derlenince mevcut olacak.)

12. make
    (Artık httpd çalıştırılabilirini Apache bin dizinine kopyalayabilirsiniz.
    Apache'yi ilk defa kuruyorsanız bu komuttan sonra "make install" komutunu
    da verin.)

13. cd ../php-5.x.y
14. cp php.ini-development /usr/local/lib/php.ini

15. PHP seçeneklerini ayarlamak için artık /usr/local/lib/php.ini dosyasını
    düzenleyebilirsiniz. httpd.conf veya srm.conf dosyasını açıp şunu ekleyin:

    AddType application/x-httpd-php .php

Kullandığınız Unix türevine ve Apache kurulumuna bağlı olarak, sunucuyu durdurmanın ve yeniden başlatmanın çeşitli yolları vardır. Aşağıda farklı Unix/Apache kurulumları için sunucuyu yeniden başlatırkan kullanılabilecek komutlara yer verilmiştir. /bir/yer/ yerine bu uygulamaların dosya sistemindeki yerlerini yazınız.

Örnek 3 - Apache'yi yeniden başlatmak için örnek komutlar

1. Çeşitli Linux ve SysV türevleri için:
/etc/rc.d/init.d/httpd restart

2. apachectl betiği ile:
/bir/yer/apachectl stop
/bir/yer/apachectl start

3. httpdctl ve httpsdctl (OpenSSL kullanarak), apachectl gibidir:
/bir/yer/httpsdctl stop
/bir/yer/httpsdctl start

4. mod_ssl veya başka bir SSL sunucu kullanıyorsanız, elle durdurup
başlatmanız gerekebilir:
/bir/yer/apachectl stop
/bir/yer/apachectl startssl

apachectl and http(s)dctl çalıştırılabilirlerinin yerleri sık sık değişir. Sisteminizde locate, whereis, which gibi araçlar kuruluysa bunların yerlerini bu araçları kullanarak öğrenebilirsiniz.

PHP'yi Apache için derlerken kullanılabilecek farklı yapılandırma örnekleri:

./configure --with-apxs --with-pgsql

Bu yapılandırmayla, Apache'nin httpd.conf dosyasında LoadModule yönergesi ile Apache'ye yüklenebilecek şekilde bir libphp5.so paylaşımlı kütüphanesi oluşturulacak, PostgreSQL desteği bu kütüphaneye gömülü olacaktır.

./configure --with-apxs --with-pgsql=shared

Bu yapılandırmayla, Apache için bir libphp5.so paylaşımlı kütüphanesi oluşturulacak fakat önceki örnekten farklı olarak PostgreSQL desteği için pgsql.so adında ayrı bir paylaşımlı kütüphane oluşturulacaktır. PHP'ye PostgreSQL desteğini, eklentiyi php.ini içinde bir extension yönergesinde belirterek veya doğrudan bir betik içinde dl() işlevini kullanarak verebilirsiniz.

./configure --with-apache=/bir/yer/apache_kaynak_paketi --with-pgsql

Bu yapılandırmayla, bir libmodphp5.a kütüphanesi, mod_php5.c diye bir dosya ve bunlara eşlik eden bazı dosyalar oluşturulacak ve bunlar Apache kaynak ağacının altında src/modules/php5 dizinine kopyalanacaktır. Bundan sonra Apache --activate-module=src/modules/php5/libphp5.a seçeneği kullanılarak derlendiğinde Apache libphp5.a kütüphanesini oluşturacak ve onu httpd çalıştırılabiliri ile duruk olarak ilintileyecektir. PostgreSQL desteği de doğrudan httpd çalıştırılabiliri içinde olacaktır. Böylece sonuçta tek bir httpd çalıştırılabiliri Apache ve PHP'nin tamamını içerecektir.

./configure --with-apache=/bir/yer/apache_kaynak_paketi --with-pgsql=shared

Yukarıdakinden farklı olarak PostgreSQL desteği, doğrudan sonuncu httpd çalıştırılabiliri içinde değil, ayrı bir pgsql.so paylaşımlı kütüphanesiyle php.ini dosyası üzerinden veya doğrudan dl() işlevi kullanılarak PHP'ye yüklemek suretiyle elde edilecektir.

PHP'yi derlemek için seçtiğiniz her yolun getirileri olacağı gibi götürüleri de olacaktır. Paylaşımlı nesne olarak derlemek, Apache'yi ayrı olarak derleyip, PHP ile ilgili hiçbir şey için Apache'yi tekrar derleme ihtiyacı duymamak demektir. PHP'yi Apache içinde (duruk yöntem) derlerseniz PHP daha çabuk yüklenecek ve daha hızlı çalışacaktır. Bu konularda daha ayrıntılı bilgi edinmek için Apache'nin » DSO desteği sayfasına bakınız.

Bilginize:

Apache'nin öntanımlı httpd.conf dosyası şöyle bir bölümle gelmektedir:

User nobody
Group "#-1"
Burada Group satırı, Group nogroup veya Group daemon gibi bir satırla değiştirilmedikçe, PHP dosyaları açamayacaktır.

Bilginize:

--with-apxs=/bir/yer/apxs seçeneğini kullanırken apxs'in kaynak paketindeki yerini değil, sisteminizde kurulu olduğu yeri belirtmeye dikkat edin.