Halo sobat sekolahlinux, kali ini saya akan coba memberikan tutorial tentang Implementasi suexec & php-fcgi dengan apache 2.4 pada centos 7, yang mana nantinya script php akan di handle oleh cgi/fcgi dan akan dijalan oleh uid & gid ftp, bukan uid dan gid webserver (apache/nginx), yang mana nantinya bisa memudahkan kita dalam trace usermana atau virtualhost mana yang menyebabkan trafik tinggi.
pertama install aplikasi dan tools yang kita butuhkan
yum install php php-mysql php-common php-cli mod_fcgid httpd httpd-devel
selanjutnya edit file /etc/httpd/conf.d/php.conf lalu beri comment rule dibawah ini
SetHandler application/x-httpd-php
sehingga menjadi seperti dibawah ini
# SetHandler application/x-httpd-php
selanjutnya coba cek dulu dimana userdir dan letak file cgi harusnya dibuat dengan menjalankan command “suexec -V” seperti dibawah ini
[root@akbar ~]# suexec -V -D AP_DOC_ROOT="/var/www" -D AP_GID_MIN=100 -D AP_HTTPD_USER="apache" -D AP_LOG_SYSLOG -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=500 -D AP_USERDIR_SUFFIX="public_html"
Buat user yang akan kita gunakan untuk suexec
useradd -d /var/www/akbar akbar
set direktori /var/www/akbar menjadi seperti dibawah ini
chmod 711 /var/www/akbar
masuk ke direktori user yang telah kita buat
cd /var/www/akbar
lalu buat folder public_html, fcgi-bin, cgi-bin
mkdir public_html fcgi-bin cgi-bin
copy file php.ini kedalam folder /var/www/akbar
cp /etc/php.ini /var/www/akbar
temukan dan rubah baris dibawah ini di dalam file php.ini yg baru saja kita copy
date.timezone = Asia/Jakarta
jika sudah set permission dan owner untuk php.ini yang baru saja kita copy
chmod +x /var/www/akbar/php.ini chown akbar:akbar /var/www/akbar/php.ini
buat file akbar.fcgi pada direktori dibawah ini
vim /var/www/akbar/fcgi-bin/akbar.fcgi
lalu isikan file akbar.fcgi dengan rule dibawah ini
#!/bin/bash PHPRC=/var/www/akbar.lokal/ export PHPRC umask 022 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=99999 export PHP_FCGI_MAX_REQUESTS SCRIPT_FILENAME=$PATH_TRANSLATED export SCRIPT_FILENAME exec /bin/php-cgi
jika sudah save dan kemudian set permission file akbar.fcgi tersebut dengan command dibawah
chmod +x /var/www/akbar/fcgi-bin/akbar.fcgi chown akbar:akbar /var/www/akbar/fcgi-bin/akbar.fcgi
jika sudah buat file index.php didalam direktori dibawah ini
vim /var/www/akbar/public_html/index.php
lalu isikan file index.php dengan rule dibawah, script dibawah nantinya berfungsi untuk mengecek apakah rule yg kita terapkan sudah benar atau blum.
<?php system("id"); ?> <?php phpinfo(); ?>
Untuk memastikan set lagi owner untuk direktori dan subdirektori akbar
chown akbar:akbar –R /var/www/akbar
Jika sudah buat file konfigurasi virtualhost didalam direktori di bawah ini
vim /etc/httpd/conf.d/server.conf
Lalu isikan file server.conf dengan rule dibawah ini, pada baris SuexecUserGroup isinya dengan uid dan gid dari user yang kita buat, dalam case ini uid & gid user akbar adalah 1000 & 1000
<VirtualHost 192.168.100.10:80> SuexecUserGroup "#1000" "#1000" ServerName akbar.lokal ServerAlias www.akbar.lokal DocumentRoot /var/www/akbar.lokal/public_html ErrorLog /var/www/akbar.lokal/error_log CustomLog /var/www/akbar.lokal/access_log combined DirectoryIndex index.html index.htm index.php index.php4 index.php5 ScriptAlias /cgi-bin/ "/var/www/akbar.lokal/cgi-bin/" ScriptAlias /fcgi-bin/ "/var/www/akbar.lokal/fcgi-bin/" <Directory "/var/www/akbar.lokal/fcgi-bin"> #<Location /fcgi-bin/> SetHandler fcgid-script Options +ExecCGI #</Location> </Directory> <Directory "/var/www/akbar.lokal/public_html"> Options -Indexes +IncludesNOEXEC +FollowSymLinks +ExecCGI # AddHandler php-fcgi .php AddType application/x-httpd-php .php AddHandler fcgid-script .php # Action php-fcgi /fcgi-bin/php5.fcgi # Action fcgid-script /fcgi-bin/php5.fcgi FCGIWrapper /var/www/akbar.lokal/fcgi-bin/php5.fcgi .php allow from all AllowOverride All Require all granted </Directory> </VirtualHost>
jika sudah restart service apache/httpd kalian
service httpd restart
dan jika sudah coba buka akbar.lokal dari browser kira2 nanti hasilnya akan seperti dibawah ini, script php akan di handle oleh cgi/fcgi dan akan dijalankan oleh user dan group akbar bukan user dan group apache/nginx
sekian tutorial ini, semoga bermanfaat ya, selamat membaca dan mencoba, jika ada yang membingungkan silahkan comment saja, nanti saya akan balas