Catatan ini berasumsi, Apache dan php suda terinstall dan jalan dengan benar, pastikan php-cli dan mod_fcgid sudah terinstall, jika belum install dulu:
[root@server01 ~]# yum mod_fcgid php-cli
disable mod_php dengan cara beri tanda comment pada semua baris di file berikut:
/etc/httpd/conf.d/php.conf
edit file /etc/php.ini
###pastikan ada baris berikut ###[...] cgi.fix_pathinfo = 1
Menyiapkan direktory untuk masing-masing vhost:
[root@server01 ~]# mkdir -p /home/prayoga/www/idprayoga.com/{htdocs,cgi-bin} [root@server01 ~]# mkdir -p /home/perdana/www/idperdana.com/{htdocs,cgi-bin} [root@server01 ~]# chown -R prayoga:prayoga /home/prayoga/www/idprayoga.com [root@server01 ~]# chown -R perdana:perdana /home/perdana/www/idperdana.com [root@server01 ~]# chmod -R 755 /home/prayoga/www/idprayoga.com [root@server01 ~]# chmod -R 755 /home/perdana/www/idperdana.com
Karena kita akan menjalankan PHP menggunakan suExec, harus di cek terlebih dahulu letak document root suExec dengan perintah suexec -V
-D AP_DOC_ROOT="/var/www" -D AP_GID_MIN=100 -D AP_HTTPD_USER="apache" -D AP_LOG_EXEC="/var/log/httpd/suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=500 -D AP_USERDIR_SUFFIX="public_html"
Di atas terlihat document root terletak pada /var/www (AP_DOC_ROOT="/var/www"). Dengan demikian kita tidak bisa memanggil binary PHP (/usr/bin/php-cgi) secara langsung karena berada di luar document root suexec. Dan suexec juga tidak mengijinkan symlink. Sehingga, untuk menangani hal tersebut adalah dengan menciptakan skrip wrapper yang akan memanggil binary PHP(/usr/bin/php-cgi) pada setiap situs web di direktory /var/www. Sebagai catatan, kepemilikan skrip wraper harus sesuai dengan user dan group yang mengakses.
[root@server01 ~]# mkdir -p /var/www/php-fcgi-script/prayoga [root@server01 ~]# mkdir -p /var/www/php-fcgi-script/perdana
[root@server01 ~]# nano /var/www/php-fcgi-script/prayoga/php-fcgi-starter
isi file tersebut sebagai berikut :
===================================== #!/bin/sh PHPRC=/etc/ export PHPRC export PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_CHILDREN=8 exec /usr/bin/php-cgi ======================================
keterangan :
baris PHPRC adalah direktory tempat file php.ini berada
baris PHP_FCGI_MAX_REQUESTS adalah jumlah maksimum permintaan sebelum proses fcgid dihentikan dan yang baru diluncurkan
baris PHP_FCGI_CHILDREN mendefinisikan jumlah child PHP yang akan diluncurkan
buat juga file php-fcgi-starter pada /var/www/php-fcgi-script/perdana
ubah permission dan kepemilikan file php-fcgi-starter
[root@server01 ~]# chmod 755 /var/www/php-fcgi-script/prayoga/php-fcgi-starter [root@server01 ~]# chmod 755 /var/www/php-fcgi-script/perdana/php-fcgi-starter [root@server01 ~]# chown -R prayoga:prayoga /var/www/php-fcgi-script/prayoga/ [root@server01 ~]# chown -R perdana:perdana /var/www/php-fcgi-script/perdana/
Buat virtual host pada httpd.conf
NameVirtualHost 10.100.100.99:80 <VirtualHost 10.100.100.99:80> ServerAdmin webmaster@idprayoga.com DocumentRoot "/home/prayoga/www/idprayoga.com/htdocs" ServerName idprayoga.com ServerAlias idprayoga.com CustomLog "|/usr/sbin/cronolog /var/apachelogs/prayoga/%Y/%m/%d/idprayoga.com.access_log" combined ErrorLog "|/usr/sbin/cronolog /var/apachelogs/prayoga/%Y/%m/%d/idprayoga.com.error_log" ScriptAlias /cgi-bin/ "/home/prayoga/www/idprayoga.com/cgi-bin/" <Directory "/home/prayoga/www/idprayoga.com/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> <IfModule mod_fcgid.c> SuexecUserGroup prayoga prayoga PHP_Fix_Pathinfo_Enable 1 <Directory /home/prayoga/www/idprayoga.com/htdocs> Options +ExecCGI AllowOverride All AddHandler fcgid-script .php FCGIWrapper /var/www/php-fcgi-scripts/prayoga/php-fcgi-starter .php Order allow,deny Allow from all </Directory> </IfModule> </VirtualHost>
buat juga untuk idperdana.com seperti di atas dan sesuaikan path serta user groupnya
Restart apache.
Untuk testing, anda bisa membuat file ceking.php di masing-masing direktory htdocs.
isi file tersebut :
<?php system("id"); ?>
kemudian akses dari browser, maka harus menunjukkan masing-masing user dan group yang menjalankan.
saya masih belajar, jika masih ada kekurangan mohon diberi masukan. Terimakasih ;)
0 comments:
Post a Comment