Bu doküman Apache 2.2 sürümüne göre düzenlenmiştir.

Bu makalede Apache üzerinde çok tercih edilen ve PHP ortamının çalışmasını sağlayan FastCGI’ı Apache üzerine nasıl doğru bir şekilde kuracağımızı anlatmaya çalışacağız.

Apache’de FastCGI mod_fcgid olarak geçer. Hem güvenlik hemde PHP’nin host edilmesi anlamında iyi bir çalıştırma ortamı sağlamasından dolayı tercih edilmektedir. Ayrıntılı bilgiyi aşağıdaki adreste bulabilirsiniz.

EPEL’in Yüklenmesi

FastCGI paketi Centos üzerinden default paket yöneticisi ile gelmediğinden  önce EPEL paket yöneticisini ekeleyeceğiz ve daha sonra mod_fcgid’ı kuracağız. Extra Packages for Enterprise Linux yani EPEL‘i şağıdaki komut ile son version paketi indirip rpm yardımı ile kurmamız gerekir.

wget http://dl.fedoraproject.org/pub/epel/6Server/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

Centos üzerinde Wget yoksa direkt “yum install wget” ile kurduktan sonra yukarıdaki komutu çalıştırabilirsiniz.

FastCGI’in Yüklenmesi

Bu işlemlerden sonra aşağıdaki komut ile mod_fcgid’ı kurabilir duruma geliyoruz.

yum install mod_fcgid

Herşey düzgün işlemiş ise /etc/httpd/conf.d dizini altında fcgid.conf dosyasını görmeniz gerekir.

php.fastcgi İçeriği

Her VirtualHost için özel ayarları bu dosyadan belirliyoruz bu dosyayı cgi-bin klasörünün içine Executable hakkı ile kaydetmeliyiz. Ayrıca php.ini lokasyonunu buradan belirleyebiliyoruz, bu sayede vhost’da çalışan web sitesine özel php.ini ayarları ile özel bir PHP çalıştırma ortamını sağlamış oluyoruz.

vi /var/vhosts/domain.com/cgi-bin/php.fastcgi

Komutunu verdikten sonra açılan ekranda “Insert” yaptıktan sonra aşağıdaki içeriği kopyalayın.

#!/bin/bash
PHPRC="/usr/maestropanel/configs/domain.com/php.ini"
PHP_CGI=/usr/bin/php-cgi
PHP_FCGI_CHILDREN=4
PHP_FCGI_MAX_REQUESTS=1000
export PHPRC
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec $PHP_CGI

PHP’nin çalışma dizinini kısıtlamak istiyorsanız php.ini içindeki open_basedir değerini örneğimizdeki  “/var/vhosts/domain.com/” klasörünü verebilirsiniz böylece PHP uygulaması sadece bu dizn içinde hareket edebilecektir.

Son olarak php.fastcgi dosyamıza Execute hakkı vermemiz gerekiyor.

chmod +x /var/vhosts/domain.com/cgi-bin/php.fastcgi

Vhost Direktifleri

Apache’de FastCgi destekli ve özerk olarak çalışan bir PHP ortamı açmak için VirtualHost direktiflerini aşağıdaki gibi düzenleyebilirsiniz.

<VirtualHost *:80>
 ServerName domain.com
 ServerAlias www.domain.com
 ServerAdmin admin@domain.com
 DocumentRoot /var/vhosts/domain.com/http
 ScriptAlias /cgi-bin "/var/vhosts/domain.com/cgi-bin/"

 <Directory "/var/vhosts/domain.com/http">
 Options -Indexes FollowSymLinks +ExecCGI
 AllowOverride AuthConfig FileInfo
 AddHandler php5-fastcgi .php
 Action php5-fastcgi /cgi-bin/php.fastcgi
 AllowOverride All
 Order allow,deny
 Allow from All
 </Directory>

 <Directory "/var/vhosts/domain.com/cgi-bin">
 AllowOverride None 
 Options None
 Order allow,deny
 Allow from all
 </Directory>
</VirtualHost>
	

Bonus

Shared Web Hosting ortamında FastCGI’in daha peformanslı ve stabil çalışması için aşağıdaki ayarlamaları belirtebilirsiniz.

Bu ayarları /etc/httpd/conf.d/fcgid.conf dosyası içine girmelisiniz.

FcgidMinProcessesPerClass 0
FcgidMaxProcessesPerClass 8
FcgidMaxProcesses 150
FcgidIdleTimeout 60
FcgidProcessLifeTime 120
FcgidIdleScanInterval 30

Yazar