12 Januari 2009

PHP 5.2.2. + Suhosin for CentOS

PAKOK

Setelah beberapa hari ini memakai

CentOS 5.2 sebagai operating system server dan ternyata system operasi ini cukup aman dan nyaman untuk server. Saya melanggar sumpah saya sendiri untuk tidak memakai Linux berbasis rpm setelah pengalaman buruk saya bebarapa tahun lalu memakai Red Hat dan Mandrake/Mandriva sehingga saya beralih ke debian dan turunannya. Di post ini akan saya terangkan bagaimana saya mengkompilasi (lagi) PHP 5.2.2. dari project fedora.

Dan karena CentOS merupakan distro dengan pilihan package untuk Enterprise Linux (EL), sehingga paket-paketnya pun lebih tua daripada distro lain. Misalnya dibandingkan dengan ubuntu.

Awalnya saya ingin menginstall GOSA terbaru, akan tetapi pada akhirnya malah dia meminta PHP versi 5.2. sedang versi PHP yang sekarang ada di CentOS adalah versi 5.1.6. Jadi aplikasi GOSA tersebut tidak bisa digunakan dan hanya warning kecil yang ada terlihat di browser.

Saya cari-cari rpm, adanya cuma buat fedora, karena takut broken atau tidak kompatibel dengan library-library yang saya inginkan dan juga karena php-nya belum dipatch dengan suhosin, maka saya memutuskan untuk menginstall PHP dari source RPM. Langkah-langkahnya ternyata ga susah-susah amat. Pertama-tama jangan lupa untuk menginstall seluruh package ini dengan yum

[root@demo.test ~] $ yum install wget nano make autoconf automake rpm-build postfix fileutils file libtool gcc cpp gcc-c++ perl-DBI readline-devel libc-client-devel libstdc++-devel bzip2-devel curl-devel db4-devel expat-devel gmp-devel aspell-devel httpd-devel libjpeg-devel libpng-devel pam-devel openssl-devel sqlite-devel zlib-devel pcre-devel krb5-devel cyrus-sasl-devel openldap-devel postgresql-devel unixODBC-devel libxml2-devel net-snmp-devel libxslt-devel libxml2-devel expat-devel ncurses-devel gd-devel freetype-devel

Selanjutnya, download src.rpm dari fedora (saya memilih versi 7 karena ini yang bukan bleeding edge) berikut ini

http://download.fedora.redhat.com/pub/fedora/linux/releases/7/Everything/source/SRPMS/php-5.2.2-3.src.rpm

http://download.fedora.redhat.com/pub/fedora/linux/releases/7/Everything/source/SRPMS/php-extras-5.2.1-1.fc7.src.rpm

Setelah itu download suhosin patch untuk php 5.2.2. Dan juga suhosin source terbaru.

Ok. setelah itu install source RPM tadi.

[root@demo.test ~] # rpm -Uvh php-5.2.2-3.src.rpm

[root@demo.test ~] # rpm -Uvh php-extras-5.2.1-1.fc7.src.rpm

[root@demo.test ~] # cd /usr/src/redhat/SOURCES

kemudian extract dan rename ke nama yang baru tadi patch suhosin ke directory ini

[root@demo.test ~] # gunzip suhosin-patch-5.2.2-0.9.6.2.patch.gz

[root@demo.test ~] # mv suhosin-patch-5.2.2-0.9.6.2.patch php-5.2.2-suhosin.patch

Edit file php.spec di /usr/src/redhat/SPECS

[root@demo.test ~] # cd /usr/src/redhat/SPECS

[root@demo.test ~] # nano php.spec

Kemudian tambahkan patch suhosin di file berikut ini pada bagian-bagian berikut

... ...
Source0: http://www.php.net/distributions/php-%{version}.tar.gz
Source1: php.conf
Source2: php.ini
Source3: macros.php


Patch0: php-5.2.2-suhosin.patch
Patch1: php-5.1.4-gnusrc.patch
Patch2: php-4.3.3-install.patch
...
...
%prep
%setup -q
%patch0 -p1 -b .suhosin
%patch1 -p1 -b .gnusrc
%patch2 -p1 -b .install
%patch3 -p1 -b .norpath
%patch5 -p1 -b .phpize64
%patch8 -p1 -b .includedir
...

kemudian edit juga .spec php-extra kemudian ganti baris berikut ini:

...
Group: Development/Languages
License: The PHP License
URL: http://www.php.net/
Source0: http://www.php.net/distributions/php-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires: php-devel >= %{version}
...

Ok. sudah siap… saatnya melakukan build yang memakan waktu err… lumayan lama :

[root@demo.test ~] # cd /usr/src/redhat/SPECS

[root@demo.test ~] # rpmbuild -bb php.spec

[root@demo.test ~] # rpmbuild -bb php-extras.spec

Sesudah itu silahkan periksa directory /usr/src/redhat/RPMS, akan ada banyak file .rpm di situ, silahkan install semua yang berbau php dengan

[root@demo.test ~] # cd /usr/src/redhat/RPMS/i386/

[root@demo.test ~] # rpm --force -Uvh php-*

Suhosin PHP Extensions.

Yap, PHP dengan suhosin patch sudah diinstall. saatnya menginstall suhosin php extensions, masih ingat source code suhosin extensions tadi? Silahkan dibuka-buka, kalau tempat saya si di root home alias tanda cacing ~. Saatnya membuild extensions yang satu ini. Kali ini tidak memakai rpmbuild. Tetapi memakai perintah untuk menginstall extensions PHP.

[root@demo.test ~] # cd ~

[root@demo.test ~] # tar -xvzf suhosin-0.9.27.tgz

[root@demo.test ~] # cd suhosin-0.9.27

[root@demo.test ~] # phpize

[root@demo.test ~] # ./configure

[root@demo.test ~] # make

[root@demo.test ~] # make test

[root@demo.test ~] # make install

Dan tugas PHP anda sudah terinstall versi 5.2.2 lengkap dengan suhosin-nya. Untuk ini saya perlihatkan hasil potongan phpinfo() di tempat saya:

 suhosin

Jika anda tidak ingin repot-repot menginstall PHP berikut saya kasih linknya … hehee… kenapa saya taruh di bawah.. biar pada baca dulu :P

Kesemua-mua rpm tadi saya build di box CentOS 5.2. Jadi kalo yang pake fedora atau RHEL, saya endak menjamin package ini kompatibel.

Setelah install paket-paket di atas, PHP langsung sudah jadi PHP 5.2.2. besearta ekstensinya, yang tersisa hanya menginstall suhosin extension dengan mengkompilasinya :D. Selamat menikmati.

tandatangan

Regards,

RMS Noor HPD

0 komentar:

Poskan Komentar