Masalah: Saya diminta utk upgrade php dan mysql dalam Centos 4.1 dari versi 4.x ke 5.x. Terdapat beberapa aplikasi yg sedia ada pada persekitaran semasa dan ia perlu 0 downtime(hehe actually 2 jam pun ok lagi)
Penyelesaian: Oleh kerana saya tidak dapat mempastikan samada aplikasi semasa akan berjalan dgn lancar dlm php 5, saya bercadang utk melarikan 2 web server(2 enjin php) serentak(hanya sementara). Server sedia ada akan menggunakan enjin PHP4.x sementera server 2 akan menggunakan PHP 5.x.
Langkah 1 - download Xammp
Langkah 2-install xammp
hingga tahap ini xammp(php/webServer dan Mysql) telah berjaya diinstall. Tetapi ia bergaduh dgn webServer sedia ada(php4) kerana masing-masing suka makwe yg sama(port 80). Oleh kerana php4 hanya wujud sementara sehinggalah semua aplikasi berjaya dipindahkan pada php5, saya buat keputusan utk serahkan port 80 pada php5(webServer yg baru) dan php4 utk gunakan port 82.
Langkah 3-tukar port utk server lama
shell> vi /etc/httpd/conf/httpd.conf
cari string Listen dan tukar supaya dengar port 82
#Listen * Listen 82
save dan restart server
shell> /etc/init.d/httpd restart
hal yg serupa berlaku pada mysql. Secara default, mysql akan menggunakan port 3306. Penyelesaian, Mysql 5.x akan gunakan default port 3306, sementara mysql 4 pula akan diubah utk dengar port 3308.
Langkah 4-tukar port utk Mysql 4.0
shell> vi /etc/my.cnf
dlm section [mysqld] tukar port kepada 3308
[mysqld] port = 3308
restart mysql
shell> /etc/init.d/httpd restart
utk start xamp
shell>/opt/lamp/lamp startapache shell>/opt/lamp/lamp startmysql
selesai. utk capai 2 laman di atas
php4- http://localhost:82
php5- http://localhost:80 or http://localhost (port 80 default, so tak taip pun tak pe)
namun ada satu perkara yg saya perlu ceritakan disini. utk hubungi mysql server, dlm php:
mysql_connect(’localhost’,$user, $passwd)
jika bukan pada default port, kita perlu terangkan port yg sepatutnya:
mysql_connect(’localhost:3308‘,$user, $passwd)
tapi malangnya kod di atas tak berjaya.
saya menghabiskan masa hampir 2 hari sebelum menemui cara yg betul. Gantikan localhost dgn 127.0.0.1
mysql_connect(’127.0.0.1:3308′,$user, $passwd)
Ini disebabkan function mysql_connect akan gunakan socket jika mendapat string localhost, maka port 3308 tidak akan digunapakai oleh php, sebaliknya akan guna default port.
lepas 2 hari baru perasan benda ni. utk anda di luar sana, jgn ulangi kesilapan yg sama. Ok, selamat berjaya..
written by cperdana
Recent Comments