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

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

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

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply