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