How to setup suPHP on CentOS 6


* Kredit pada cikgu shaifulnizam, rujukan nota dari beliau dan aku merge dengan cara aku sikit.

Server : Centos 6.8, Apache 2.2.15, PHP 5.4.45
64 Bit installation.

1. Install mod suPHP
Install REPO dahulu untuk ambil installer. Jika dah ada boleh skip :
# rpm -ivH http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

2. Install mod suPHP guna Yum
# yum install -y mod_suphp
....................................................................................................................................................
Sekiranya belum ada REPO, sila download dan install dahulu :
Kita amik dulu rpmnya, ni untuk 64Bit :
rpm -Uhv  mod_suphp-0.7.1-1.el6.rf.x86_64.rpm

Jika anda guna 32 bit, sila gunakan yg dibawah ini, lain pada itu sama je cara pasang
rpm –Uhv mod_suphp-0.7.1-1.el6.rf.i686.rpm
....................................................................................................................................................

3. Pastikan anda dah siap pasang Apache dan PHP sebelum memasang suPHP

4. Sekarang kita mula tambah user dalam server. Dalam contoh ni saya create user saya. Kita akan buat dir untuk home dan juga logs.

# useradd -m muzzo
# mkdir /home/muzzo/public_html
# mkdir /home/muzzo/logs
# touch /home/muzzo/logs/error_log
# touch /home/muzzo/logs/access_log

5. Sekarang edit vhost yang configure dalam httpd.onf (sekiranya setup secara berasingan maka create fail vhost baru untuk portal baru)
# nano /etc/httpd/conf/httpd.conf

6. Tambah kod berikut dan ubah mengikut keperluan portal masing-masing :

#MUZZO
<VirtualHost *:80>
     ServerAdmin muzzo@muzzo.com
     DocumentRoot /home/muzzo/public_html/portal
     ServerName portal.muzzo.com
     ErrorLog  /home/muzzo/logs/error_log
     CustomLog  /home/muzzo/logs/access_log combined
    ### suPHP ###
    suPHP_Engine on
    suPHP_UserGroup muzzo muzzo
    suPHP_AddHandler x-httpd-php
    AddHandler x-httpd-php .php .php3 .php4 .php5 .phtml
    ### End suPHP ###
</VirtualHost>

7. Seterusnya kena semak fail suphp.conf ni jika confignya dah betul :
# nano /etc/httpd/conf.d/suphp.conf

Cari baris ni, kalau ada #, sila buang
LoadModule suphp_module modules/mod_suphp.so

8. Kendian, buang atau rename fail asal php.conf sebab dah tak guna dah lepas ni. Ia akan gunakan fail suphp.conf.
# mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf.old

9. Sekarang kita akan edit pula fail suphp.conf utama :
# nano /etc/suphp.conf

#Pastikan kodnya sama seperti dibawah
[global]
logfile=/var/log/httpd/suphp_log
loglevel=info
webserver_user=apache
docroot=/var/www/html:${HOME}/public_html
env_path=/bin:/usr/bin
umask=0022
min_uid=500
min_gid=500
; Security options
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false
;Check whether script is within DOCUMENT_ROOT
check_vhost_docroot=true
;Send minor error messages to browser
errors_to_browser=false
[handlers]
;Handler for php-scripts
x-httpd-php="php:/usr/bin/php-cgi"
;Handler for CGI-scripts
x-suphp-cgi=execute:!self

10. Untuk elakkan error kita link je fail ni :
# ln -s /etc/suphp.conf /usr/local/etc/suphp.conf

11. Masa untuk beri kebenaran kepada folder portal :
# chmod 755 /home/muzzo

12. Tetapkan ownership setiap fail, direktori dan subdirektori kepada user muzzo :
# chown -R muzzo:muzzo /home/muzzo/public_html

TIPS : Untuk buat semua folder atau file chmodnya secara pukal :
# find /home/shaifful -type d -exec chmod 755 {} \;
# find /home/shaifful -type f -exec chmod 644 {} \;

13. Sekarang boleh restart balik Apache utk pastikan suphp boleh run :
# service httpd restart

14. Sekiranya tak jadi, cuba semak pada error log dalam folder portal masing-masing yang kita dah setup tadi. Selain tu, semak juga error dalam log suPHP : /var/log/httpd/suphp_log 

Semoga ianya membantu. Jika tak faham boleh tinggalkan komen anda.

~ Be a Creator Not a User ~

Ulasan