Implementasi suexec & php-fcgi dengan apache 2.4 pada centos 7

0
1470

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

fcgi

 

sekian tutorial ini, semoga bermanfaat ya, selamat membaca dan mencoba, jika ada yang membingungkan silahkan comment saja, nanti saya akan balas