2009年2月3日 星期二

更新php編譯

這一兩個月小弟換了一家新公司

所以對於php模組需求上會有些許的不同

而 mysql 跟 apache 部分與之前的編譯方式都相同

只有 apache 要改成以 worker 模式運作 <== 因為公司網站流量蠻大的 再來就是編譯 php 模組了 ./configure
--prefix=/usr/local/php
--with-apxs2=/usr/local/httpd/bin/apxs
--with-mysql
--with-jpeg-dir=/usr/lib
--with-zlib-dir=/usr/lib
--with-libxml-dir=/usr/lib
--with-openssl
--with-gd

--with-png-dir=/usr/lib
--with-ttf
--with-freetype-dir=/usr/lib
--with-xpm-dir=/usr/X11R6
--with-curl
--enable-sockets
--enable-magic-quotes
--enable-libgcc
--enable-mbstring
--enable-debug
--enable-fastcgi

以上比較要注意的是紅色部分

其中 gd 、 ttf 、 freetype xpm 當網站有設計圖形驗證功能時,就需要這4個模組了
curl 當 php 間要傳送資料時就可利用這個模組參數來使用

只要注意以上5個模組就可以開始編繹了

編譯完後執行

# cp php.ini-dist /usr/local/php/lib/php.ini

接下來我們還要在安裝新的程式
memcached 在 php 的應用上主要是管理 session 的

先安裝 libevent
# yum install libevent*

下載
memcached
下載網址 : http://www.danga.com/memcached/download.bml

下載完後解壓縮

# tar vxzf memcached-1.2.6.tar.gz

# cd memcached-1.2.6
# ./configure –prefix=/usr/local/memcached
# make
# make install

安裝完之後要啟動服務

# cd /usr/local/memcached/bin
# ./memcached -d -m 50 -p 11211 -u root

參數說明 -m 指定使用多少兆的緩存空間;-p 指定要監聽的端口; -u 指定以哪個用戶來營運

寫入 /etc/rc.d/rc.local 預設開機時啟動

最後安裝 memcache PHP 模塊

下載網址 : http://pecl.php.net/package/memcache

# tar vxzf memcache-3.0.3.tgz
# cd memcache-3.0.3
# /usr/local/php/bin/phpize
# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
# make
# make install

安裝完後會有類似這樣的提示︰

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/

編輯 php.ini
# vi /usr/local/php/lib/php.ini

extension_dir = "./"

修改為

extension_dir = "/usr/local/php/lib/php/extensions/"

在下面添加一行

extension=memcache.so

再修改 session 設定

將 session.save_handler = files 改成 session.save_handler = memcache

session.save_path = "/tmp" 改成 session.save_path = "tcp://192.168.1.1:11211?persistent=1

編輯完後儲存離開

再執行

# cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/memcache.so ../

即完成

要注意一點就是不同機器上的 memcache版本盡量一致,因為我遇到一台安裝為 2.2.3 另一台為3.0.3 結果會無法讀取對方的 session

安裝完成後 可到 http://code.sixapart.com/svn/memcached/trunk/server/scripts/memcached-tool 將內容複製儲存成 memcached-tool 並將權限改成 755

可測試遠端機器的 memcached 的狀態

指令為

memcache-tool 192.168.1.1:11211 stats
memcache-tool 192.168.1.1:11211 display

在這裡我放棄使用 Zend Optimizer
而使用的是
eAccelerator
它可以加速 php 的執行速度

下載網址 : http://eaccelerator.net/

# tar jxvf eaccelerator-0.9.5.3.tar.bz2
# cd eaccelerator-0.9.5.3
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make
# make install

接下來執行

# cp /usr/local/php/lib/php/extensions/debug-non-zts-20060613/eaccelerator.so /usr/local/php/lib/php/extensions/

修改 php.ini

# vi /usr/local/php/lib/php.ini
加入下面這一段
extension=eaccelerator.so
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"


在 /tmp 裡創建檔案

# mkdir /tmp/eaccelerator

# chmod 0777 /tmp/eaccelerator

最後重新啟動 apache 就可以完成了