eAccelerator – PHP 網頁加速及編碼

eAccelerator – PHP 網頁加速及編碼軟體

http://eaccelerator.net/HomeUk

eAccelerator 是一套開放原始碼的網頁加速軟體,它能加快 PHP 網頁的執行速度。其原理是把原始 PHP 程式碼編譯過 (compiled) 的二進位碼快取起來,下次執行同一個程式時,就不需要再編譯一次,可以節省很多時間

同時,eAccelerator 還有保護 PHP 原始碼的效果,透過 eAccelerator 提供的 encoder 程式,程式開發者不需要再把 PHP 程式碼公開出去就可以提供服務,對於商業軟體的開發有很大的幫助

以下簡介在 FreeBSD 上面安裝與使用 eAccelerator 的過程

首先,請先確定您的機器上面已經安裝了 Apache Web ServerPHP 模組,Web Server 部分,eAccelerator 支援 Apache 1.3 與 2.0,PHP 則是支援 mod_php4 與 mod_php5,eAccelerator 並不支援 PHP 以 CGI 模式執行。

1. 安裝 eAccelerator

# cd /usr/ports/www/eaccelerator/
# make install

2. 啟用 eAccelerator extension

# vi /usr/local/etc/php/extensions.ini

在檔案的最後面加上:

extension=eaccelerator.so

請注意: extension=eaccelerator.so 一定要加上 extension=session.so 之後,否則會發生錯誤

3. 設定 php.ini

# cd /usr/local/etc/
# vi php.ini

如果你還沒有設定過 php.ini 的話,建議從 php.ini-recommended 拷貝一份來改:

# cp -i php.ini-recommended php.ini
# chmod 644 php.ini

在 php.ini 設定檔的最後面加上這些設定:

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"

每個設定參數的功能請參考 http://eaccelerator.net/IniSettingsUk 的說明

4. 建立快取暫存目錄

# mkdir /tmp/eaccelerator
# chmod 0777 /tmp/eaccelerator

5. 重新啟動 Apache,大功告成

# /usr/local/rc.d/apache2.sh stop
# /usr/local/rc.d/apache2.sh start

安裝完畢之後,您所有的程式都不須修改,自動就可以享受速度加倍的好處了,eAccelerator 會把快取的檔案放在 /tmp/eaccelerator/ 下面

eAccelerator 也有提供線上監控的介面,就像 phpinfo() 一樣,只要呼叫 eaccelerator() 即可,寫一個網頁如下即可:

<?
      eaccelerator();
?>

當然,最好還是把這個網頁經由一些安全機制保護起來。除了你自己對網頁加上權限控管外,你也可以使用 eAccelerator 提供的保護機制,設定方法如下:

執行 /usr/local/share/examples/eaccelerator/eaccelerator_password.php 這支程式:

# php /usr/local/share/examples/eaccelerator/eaccelerator_password.php
Changing password for eAccelerator Web Interface (eaccelerator.php)

Enter admin name: dada
New admin password: 12345
Retype new admin password: 12345

Add the following lines into your php.ini and restart HTTPD

eaccelerator.admin.name="dada"
eaccelerator.admin.password="$1$oEX8dazK$7F5FMsJQejEh2Vdazjkqd."

輸入想要設定的帳號密碼(藍色部分)後,這支程式會產生編碼過後的資訊(綠色部分),然後把綠色部分的兩行貼到 php.ini 中,重新啟動 Apache 就可以了。eAccelerator 提供的保護機制是使用 HTTP 認證方式..

這個介面長得就像這樣子:

http://photo.giga.net.tw/photo/2029/original/20050623131051-0001.jpg

裡面提供簡單的管理功能,同時會告訴你那個網頁已經被快取了

eAccelerator 提供的網頁編碼功能

eAccelerator 提供一支小程式,可對網頁做編碼,詳細使用方法可執行

# /usr/local/bin/encoder

執行後會看到簡單的使用說明:

Usage:  encoder [options] source_file_name
        encoder [options] source_file_name...
        encoder [options] source_directory_name...

Options:
        -s suffix
                encode files only with following suffix (default is "php")
        -a
                encode all files (no by default)
        -l
                follow symbolic links (no by default)
        -r
                encode directories recursively (no by default)
        -c
                copy files those shouldn't be encoded (no by default)
        -f
                overwrite existing files (no by default)
        -w
                exclude check for eaccelerator_load() and subsequent warning
        -o target
                If you encode only one script then 'target' specifyes an output
                file name. If you encode directory or several files at once
                then 'target' specifyes an output directory name.

Examples:
        encoder some_file.php
        encoder some_file.php -o some_encoded_file.php
        encoder *.php -o some_dir
        encoder ~/public_html/x -rcf -sphp -sinc -o ~/public_html/y

稍微玩一下應該就知道怎麼用了…

使用 encoder 去對 PHP 程式編碼,會產生另外一個檔案,你也可以對整個目錄作轉換,例如:

# encoder myhome -rcf -sphp -sinc -o myhome_encoded

這個命令會把 myhome/ 目錄下所有的 php / inc 結尾的檔案作編碼,並存放到 myhome_encoded 下面,同時,由於指定了 -c 這個選項,其他格式、不需編碼的檔案,如 jpg/gif/html/js 等,也會原封不動複製一份到 myhome_encoded 下面,這樣方便你直接以這個目錄來提供服務。

選項 -r 代表 recursively 的功能,可以幫你同時處理所有子目錄,不過有個討厭的地方就是,encoder 幫你建立的子目錄,目錄權限竟然是 0777,感覺很不好,所以我習慣上會自己去改 encoder 這支程式

# chmod u+w /usr/local/bin/encoder
# vi /usr/local/bin/encoder

然後,搜尋 0777 ,改成 0755 就可以了

--- /usr/local/bin/encoder.orig Wed Jun 22 09:30:49 2005
+++ /usr/local/bin/encoder      Wed Jun 22 09:40:07 2005
@@ -99,7 +99,7 @@

 function eaccelerator_mkdir($dir, $f, $web) {
   if (!empty($dir)) {
-    if (!@mkdir($dir,0777)) {
+    if (!@mkdir($dir,0755)) {
       if (!$f) {
         $error = "Can't create destination directory \"$dir\"";
         if (file_exists($dir)) {

在 FreeBSD 下安裝 MySQL 4.1 …

在 FreeBSD 下面用 ports 安裝 MySQL 4.1

如果你只要用 UTF-8 的話就算了,但是如果還是有使用 BIG5 的話..
安裝 make 的時候,記得要加上 WITH_CHARSET=big5

以下當作筆記,紀錄 MySQL database server / FreeBSD 的安裝流程:

安裝資料庫:

cd  /usr/ports/databases/mysql41-server/
make  WITH_CHARSET=big5  install

接下來加入這一行在 /etc/rc.conf 裡面:

mysql_enable=”YES”

如果想指定不同的資料庫存放位置的話,可以在 /etc/rc.conf 內加上:

mysql_dbdir=”/home/mysql”

記得這個目錄要先建立,owner 及 group 都要是 mysql,然後就可以啟動 MySQL 了:

/usr/local/etc/rc.d/mysql-server.sh start

再來要設定 root 密碼(假設密碼是 dada):

/usr/local/bin/mysqladmin -u root password ‘dada’

然後我們先進入 MySQL 的交談式介面,在命令列下執行:

/usr/local/bin/mysql -u root -p


問密碼的時候就輸入您在前一步驟設定的密碼

接下來首要任務當然是讓 phpMyAdmin 能連線囉,假設我們要為 phpMyAdmin 建立的一個連線帳號名稱為 giga 密碼為 virtual,在大於符號後面輸入:

GRANT ALL PRIVILEGES ON *.* TO ‘giga‘@’localhost

IDENTIFIED BY ‘virtual‘ WITH GRANT OPTION;


這邊是假設你的 Web Server 跟 MySQL 在同一台機器上,如果不是的話,請把 localhost 改成 Web Server 的 hostname 或 IP

完成後輸入 exit 可離開交談介面

然後到你的 Web Server 上面,安裝 phpMyAdmin

cd /usr/ports/databases/phpmyadmin
make install

設定 phpMyAdmin:

vi /usr/local/www/phpMyAdmin/config.inc.php

設定以下數值:

$cfg[‘Servers’][$i][‘auth_type’] = ‘http

如果你的 Web Server 跟 MySQL 不在同一台機器上,請把下面這一行的 localhost 改掉:

$cfg[‘Servers’][$i][‘host’] = ‘localhost

接下來改 httpd.conf (以 apache2 為例):

vi /usr/local/etc/apache2/httpd.conf

加入以下幾行

Alias      /mysql/       "/usr/local/www/phpMyAdmin"

<Directory    "/usr/local/www/phpMyAdmin">
Options  MultiViews FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Allow from 192.168.0.1
Allow from 192.168.0.2
</Directory>

以上是設定只允許兩個 IP 連線,請依據你的需求更改,最後重新啟動 Web Server:

/usr/local/etc/rc.d/apache2.sh   stop
/usr/ocal/etc/rc.d/apache2.sh   start

然後就可以用瀏覽器連到:

http://your.web.server/mysql/

輸入之前建立給 phpMyAdmin 用的帳號密碼就應該可以進去了..

成功進去後就可以開始做你想做的事了!

上面步驟以上所建立給 phpMyAdmin 用的帳號,會擁有全部的權限,建議可以做一些調整,拿掉不需要的部分,這樣的調整可以在 phpMyAdmin 的權限頁面中直接完成

另外,如果你有兩台 MySQL Server,想要設定 MySQL 的 Replication 功能,
請參考之前寫的另外一篇文章「Replication of MySQL database

另外,如果要用 PHP 連接 MySQL 4.1,使用 BIG5 編碼的資料庫,記得在連線後執行:

$charset = mysql_query( "SET  NAMES  'big5'", $dblink);

或者直接在 my.cnf 中加入底下這行(如果你確定所有的 DB 都是使用 BIG5 編碼的話):

init_connect='SET  NAMES  big5'

Google Web Accelerator

Google 推出了新的玩意兒 “Web Accelerator

看起來應該是一個用戶端 (client) / 客製化過的 cache/proxy manager,利用 Google 現有的網路資源提供服務,用來加速網頁的瀏覽….

概念與 GIGAWebamp 蠻像的,只是 Web Accelerator 比較像 Proxy,Webamp 則比較像 Reverse Proxy

有點好奇,Google 畢竟是 Content Provider,是否真能負荷這麼大量的網路流量?是否每類型網頁都會有加速效果? 以上問題就讓我們拭目以待吧..

Google 把他的觸角伸得越來越廣了……

溫泉公主號

今天請假,提早一天回家陪媽媽過母親節

一早起床就趕到松山火車站搭火車,車票是前幾天用 網路預定 並先行 網路付款 的…
這是一列觀光列車 (溫泉公主號),車次是 79 車次,台北開車,終點站知本,沿途停靠松山、羅東、花蓮、玉里、關山、台東、知本,詳細的火車時刻表在 這邊 。如果您想參加正式的 溫泉公主號 旅遊行程,請自行到 ezTravel 參觀一下

由於松山開車後直達羅東,就連宜蘭都沒有停,所以真的蠻快的,松山 7:28 開,9:08 到達羅東,車程時間1小時40分,大概跟自強號差不了多少,下次有要從台北回羅東的人可以考慮看看 ^^

根據列車長的說法,這列車只有後面一兩節車廂是賣給一般乘客的,其他車廂都包給旅行社了

列車一過草嶺隧道,廣播就開始介紹左方的龜山島,內容其實如果是宜蘭人應該都聽過了….不過每次聽到還是蠻感動的…

另外今天天氣不好,所以其實看不到龜山島半個影子 XD

從松山到羅東車程中只有介紹龜山島,我是覺得可以多介紹一些,例如福隆、草嶺隧道、北關、礁溪等,都是搭車會經過的…或許這樣可以讓搭觀光列車旅遊的乘客有比較不一樣的感覺

播音的語言也不一樣,除了國台語外,還有英語及日語..

雖然觀光列車沒有賣無座票,但座位其實還蠻空的,估計有一半的空位,這我就覺得很奇怪了,我前幾天用自己寫的程式去網路訂票,還跑了幾個小時才訂到票.. 怎麼一搭上車,還這麼多空位….

1B車 → 1A車 → 1車 → 2車 …….. → 9車 → 10車 → 車頭 (往知本)

這列車後面加掛了 1A, 1B 兩節車廂,一堆人坐錯車廂,不然就是坐到前面的 1 車去,我的車票是 1B,但是我一開始也是坐到了 1 車,因為另一節是 1A,所以我還以為 1 就是 1B ,我還把原本佔我座位的先生趕到後面去,因為他拿的是 1A 車票,沒想到我自己也坐錯了 XD

車過汐止沒多久,列車長就來查票了,把坐錯車廂的人統統趕到後面去了….

我對這個 1A、1B 車廂編號很有意見,因為這會造成月台標示與車廂編號無法對應…在月台上等車的旅客常要移動一大段距離才能上車

更好的作法是加掛的車廂從後面開始編號 (11, 12…),這個我之前有在 tw.bbs.rec.rail 上面提過,有人也有提到這會有一些執行上的問題(因為加掛車廂的問題),不過應該都是有辦法改進的…

我的座位在最後一車 (1B),所以就拿著 數位相機 走到車廂最後面隨手拍了幾張照片…

照片放在 GIGA 寫真館,相簿網址是:

http://photo.giga.net.tw/album/11080/index.php

另外,溫泉公主號的回程車次是 80 車次,19:43 從羅東 開車,21:20 到達松山,行車時間 1 小時 37 分鐘,一樣是莒光號票價,很划算!

陽明山的花卉試驗中心

昨天走訪了一趟陽明山,雖然花季已近尾聲,不過竹子湖的海竽還是很多很漂亮!
而且這次又發現了一個新景點:由台北市政府工務局公園處管轄的「花卉試驗中心

地點就在仰德大道的中油加油站旁,園區蠻大的,其實就是一個大花園..
裡面有各種花花草草,有看到薰衣草,甚至還有看到楓紅…  走起來很休閒!

相簿在: http://www.wretch.cc/album/album.php?id=cdsheen&book=5

終於把 NetBSD 2.0.2 裝起來了!

經過兩天的努力,終於還是把 NetBSD 2.0.2 裝起來了!

其實本來先測 FreeBSD 5.4-RC3,但是似乎與 ASUS A8N-SLI 主機板 + AMD64 CPU 不太合,而且 sysinstall 竟然抓不太到 SATA 硬碟… 所以最後還是決定玩看看 NetBSD 好了

安裝過程還算順利,就我的感覺,NetBSD 的安裝介面比 FreeBSD 簡單明瞭,第一次接觸的人比較不容易搞混,FreeBSDsysinstall 選項稍微多了一點,新手有時會不知從哪下手!

裝起來後,設定四顆 200G 的 SATA 硬碟費了一些時間,主要是發現 NetBSD 抓到的硬碟順序竟然跟主機 BIOS 的硬碟順序不同… 這一點實在是很奇怪… 開關機不下數十次的反覆測試後終於搞清楚問題,設定好的系統差點被我自己 format 掉…

NetBSD 使用的是 pkgsrc 系統,大致是跟 FreeBSD ports 很像,只是 pkgsrc 是裝在 /usr/pkg/ 下面,source 則在 /usr/pkgsrc/ 下面,安裝軟體一樣是 make install 就好了… 不過使用上還是有點不習慣~~

pkgsrc 的軟體數目還沒有 FreeBSD ports 多,不過支援的作業系統很多:

Platform Date Support Added
NetBSD Aug 1997
Solaris Mar 1999
Linux Jun 1999
Darwin (Mac OS X) Oct 2001
FreeBSD Nov 2002
OpenBSD Nov 2002
IRIX Dec 2002
BSD/OS Dec 2003
AIX Dec 2003
Interix Mar 2004
DragonFlyBSD Oct 2004
OSF/1 Nov 2004

看來 pkgsrc 的目標應該是希望有一天能統一江湖…

至於 NetBSD 系統本身的效能部分,則還沒有時間測試

不過這台機器是拿來當備份機的,所以可能也測不出什麼吧~

想玩的人可以到 GIGA FTP 依據你的硬體平台把 ISO 檔下載回去燒成光碟安裝..
最新版本是 NetBSD 2.0.2

CVS 部分,更新目前似乎都是直接對國外,國內好像找不到比較正式的 mirror..
改天有空在 GIGA 這邊也弄一份好了…