分類彙整: 電腦資訊

FreeBSD 6.0-RELEASE

最近 BSD 家族真忙,先是 OpenBSD 3.8 發佈,然後是 NetBSD 2.1,接著 FreeBSD 6.0 又準備要發表了…

官方還沒正式宣佈,也沒得下載,不過 CVS 中已經可以取得 RELENG_6_0_0_RELEASE

先把手邊那台機器更新了…

FreeBSD flX 6.0-RELEASE FreeBSD 6.0-RELEASE #0: Thu Nov  3 10:15:06 CST 2005
     root@flX:/usr/obj/usr/src/sys/flX  amd64

然後我的 ASUS A8N-SLI (nForce4) 主機板內建的 Gigabit 網路卡 (nve),終於可以運作了:

nve0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
        ether 00:11:d8:aa:03:7c
        media: Ethernet autoselect (none)
        status: no carrier

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'

終於把 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 這邊也弄一份好了…

PHP4 fsockopen() 無法使用 ssl:// 的 bug

PHP 4 有 bug 會導致 fsockopen 無法接受 “ssl://example.com”

即使有 OpenSSL support,還是會產生以下這樣的錯誤訊息:

Warning: fsockopen(): no SSL support in this build

PHP BUG #29934: http://bugs.php.net/bug.php?id=29934

解決方法有二:
1. Install PHP 5.x
2. FreeBSD, http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/72275

重裝系統時常常會忘記…. 搞了半天才發現之前就找過答案了.. 寫下來以免以後又忘了
建議若沒有特殊需求,儘量改用 PHP 5.x 吧..

一個顯示農曆及世界時間的好工具!

Microsoft Chinese Date & Time Utility

發現微軟提供了一個顯示日期(農曆/國曆/世界時間)的小工具… 蠻好用的,可以顯示農曆及自選四個世界各地時間,還會考慮日光節約時間

下載網址: http://www.microsoft.com/globaldev/outreach/dnloads/ICalClkSetup.mspx

2009/04/10 補充:

微軟好像拿掉這個程式了,請搜尋 “Microsoft Chinese Date Time” 去找網路上的下載點