2007-01-30

增加 CGI/Perl 的支援能力 (microperl)

當 WL-500G 上的 Web Server 搞定了,需要在上面跑一些 CGI 程式嗎?或者是有一些 Perl 的執行檔 (.pl or .cgi) 想要使用?那就一定要在上面裝一套 Perl 的軟體以因應需求囉!在 ipkg 裡面有一套叫 microperl 的,是一套精簡核心的 Perl engine,足夠應付大部分的 CGI 和 Perl 的程式需求。

第一個步驟是安裝。如果你才更新過 ipkg 的 list,就不用再更新一次 (ipkg update),直接使用下面的安裝指令(此時我裝的是版本 5.8.6):

ipkg install microperl

基本上裝完這樣就可以執行手邊的 Perl 檔了。不過,Perl 最多的應用環境都是拿來當 CGI 使用,所以接下來要設定 Web Server,讓 Web Server 知道如何解譯 CGI 檔案。首先在 Web 首頁目錄下建立一個放 CGI/perl 程式的目錄,假設 Web 首頁目錄在 /opt/public/www,要建一個放 CGI 的目錄:

mkdir /opt/public/www/cgi-bin

接著要去 Web Server 設定檔。如果是用 thttpd,用 nano 開啟設定檔:

/opt/bin/nano /opt/etc/thttpd.conf

然後在最後一行加上就可以了:

cgipat=/cgi-bin/*

如果是用 lighttpd,很抱歉!這部分我還沒試過,所以沒辦法分享方法~(不過,是不是掛 FastCGI 就可以跑 CGI 了啊?)

不過如果此時 web server 已經在執行中,那除非除非重啟服務 (thttpd 執行 S80thttpd restart),要不就是整台重開 (reboot),CGI 在 WL-500g 上就可以搭配 Web Server 使用了!

參考文章:
ASUS WL-Series thttpd CGI / Perl guide

2007-01-25

動態調整文章字體大小

Blog 文章的字體大小,大多端看作者對版面和整體的要求,而讀者在看的時候,大多只能強迫接受,反正重點還是在內容上。如果自己眼睛不好、或是螢幕解析度太高,字體太大或太小(通常都是嫌字小吧)只好透過瀏覽器來調整(Ctrl + 滾輪,或是直接選較大的字型)。不過這麼做會有兩個問題:第一:整個頁面所有部分都會強迫被放大,包括 Sidebar、標題甚至留言版(字型可能變醜,而且版面會被破壞),第二:整頁可能要浪費時間強迫重新 Reload 一次。有沒有更簡單快速的方法,讓讀者可以只針對 Blog 本文的部分,來調整文字的大小,在閱讀的時候可以更輕鬆?

後來看見一篇 Blog 文章,用 Javascript 就可以輕鬆做到以上的效果,不過我又加以修改了一下,不用動到文章的架構和模版(就是說,不需要在內文多加 <span> 額外的標籤),也把函示兩個合併成一個,更加精簡、要套用在 Blogger 上面也更簡單,方法和步驟如下:

完整閱讀  文章收合  

2007-01-23

支援 PHP 的網頁伺服器 (lighttpd + FastCGI) 安裝設定

實際我在 WL-500g 上跑 thttpd 的最大問題是:不穩,容易自己當掉,所以如果要在 WL-500g 上跑一個 Web Server 而且還支援 PHP 的,還可以用另外一種作法:lighttpd + FastCGI。顧名思義,lighttpd 是個羽量級的 httpd,與 Apache 之類服務不同的是,為了精簡核心、減少耗用資源,這個服務原生只支援靜態的 HTML 文件編譯,也因此實際的效能比其他相同的服務高上幾倍,而且耗用的資訊也很低,很適合 WL-500g 這類玩意來用。可是也因為只支援靜態文件,所以 PHP 的解譯需要其他外掛的服務模組搭配使用,而 lighttpd 上的 PHP 外掛服務就是 FastCGI,只要同時安裝、並啟動這兩個服務,就可以用最有效率的資源運用去支援 Web + PHP 的服務了。

完整閱讀  文章收合  

2007-01-22

支援 PHP 的網頁伺服器 (thttpd) 安裝設定

剛拿到 Asus WL-500g 的一定知道,它提供的是 Web 介面的設定方式,即使你用了 Oleg 的韌體,這個操作介面依然存在(還多了一些選項,只不過介面變英文的了)。言下之意是,不管怎樣韌體裡都一定有一個 Web Server (HTTP daemon)在跑,才能提供透過網頁介面來設定。可惜這個內建的 Web Server 相當陽春,而且是因為擔負著設定 Router 的重責大任,所以我們儘量不去動它,如果我們想拿這台 Router 來架一個可以對外服務的網站,而且最好還可以跑 PHP 網頁,那就要另外安裝一套囉!而且,在 Port 以及防火牆對外對內的設定也要調整,總不希望 Router 的設定介面會被人家從外面連進來 Config 吧!

這裡選擇的是 thttpd (Tiny/Turbo/Throttling HTTP server),因為的程式小、效能還不錯,而且還支援最新的 PHP5,安裝步驟也很簡單:

完整閱讀  文章收合  

2007-01-17

網路芳鄰 (Samba) 的設定

只要安裝啟動 Samba 服務,就可以把 Router 上面的特定目錄或分割區透過網路芳鄰與其他電腦共享,如果你在 Asus WL-500g 上面 USB 接的是大容量的 Flash 甚至是硬碟機,那麼透過這個服務就可以讓你的 Router 變成一台檔案伺服器或是 NAS 囉!在檔案存取及分享上能夠變得更方便!

Samba 服務因為如此重要,已經被 Oleg 大大內嵌放入韌體裡面了,我們不用安裝,只要負責設定和啟動它,它就可以運作了。(不過說實話,分享存取小檔沒問題,但是如果用來分享影像音樂等大一點的檔案,因為 WL-500g 的 USB 只有 V1.1,速度很慢,加上 Samba 的效率也比較差,所以拿來做大檔分享可能會很慢)

完整閱讀  文章收合  

2007-01-15

新增使用者群組及修改Shell啟動文件

裝置預設只有一組帳號和密碼 (admin),而且是具有管理者權限的,如果今天你只是透過 WL500g 來操作,並不會動到系統,那麼總是用 admin 登入好像不太好。但是很不幸的,Oleg 大大為了系統穩定,他的韌體裡面附的 busybox 並不支援 adduser、addgroup 等帳號群組操作的命令,這些動作只好自己來。不過稍有 Linux 概念的大概都知道,帳號群組主要就是搞 /etc/passwd 和 /etc/group 兩個檔案,我們要做的就是在裡面加記錄、設定使用者密碼,並且更新到 flash 裡面。

首先新增使用者。編輯帳號設定檔 /etc/passwd:

nano /etc/passwd

在最後一行加入新增使用者的紀錄。假設這個使用者叫 user1,使用者 ID 1001,群組 ID 1001,使用者目錄在 /opt/user/user1 下面(內容都可以改),設定的紀錄為:

user1:x:1001:1001:user:/opt/user/user1:/bin/sh

存檔離開後,接者編輯群組設定檔 /etc/group

nano /etc/group

在最後一行加入新增群組的紀錄。上面提到的新群組 ID 為 1001,因此新增的的紀錄為:

user:x:1001:

完整閱讀  文章收合  

2007-01-12

SSH 的設定和啟用

之前都是用 telnet 連進 router 做設定,但這是一種很不安全的連線方式,容易被監聽竊取帳號密碼,所以我們要另外跑一個安全的連線服務:SSH (Secure Shell)。Windows PC 端的連線程式 (SSH client) 可以找這裡 ,或是 piaip 開發中文版的 PieTTY

其實在 Oleg 的韌體裡已經有 SSH Server 在裡面,程式名稱叫 dropbear (丟熊?),要啟動該服務要做的事情有三件:1. 設定 dropbear 的 SSH 連線金鑰,2. 要求每次開機這個服務自動啟動,3.在防火牆上打洞讓你可以從外面連進來。接下來我們根據以上的步驟依序來進行設定。

完整閱讀  文章收合  

2007-01-11

基本環境的設定 - ipkg & post-boot

上一篇裡完成了 USB 磁碟區的分割,也手動地設定了 swap 和 mount 磁碟機,可是只要一重開機 (reboot),剛剛的設定就會消失。所以接下來要做的,就是更改一些基本環境的設定,並且安裝一些工具以便未來的編輯和操作。

首先,我們想要編寫一些設定檔,那就需要文書編輯器。如果你不習慣用 vi ,那就要安裝一套類似 BBS 的整頁編輯器才行。要安裝軟體,總不可能還要自己抓原始碼來編譯,而且未來的安裝使用一定也是要存在 USB 的磁碟區,所以接下來就要去設定安裝軟體的環境。韌體支援所謂的 ipkg 軟體安裝管理系統,類似 Redhat 的 rpm,讓裝軟體和用 windows 的新增移除軟體一樣容易。接續上篇,如果沒有重開機,就可以直接使用已經 mount 的目錄 /opt 來安裝設定,否則,請在手動把 USB 磁碟區 mount 起來。

完整閱讀  文章收合  

Wl-500g 韌體更新和磁碟分割

改機的第一個步驟一定是先改掉原廠的 firmware。首先去下載 Oleg 大大改出來的韌體:http://oleg.wl500g.info/ ,最後我使用的是 1.9.2.7-7g, 下載的是給 WL500g 用的韌體檔。解壓縮後裡面有個附檔名 .trx 的檔案,這才是更新時所需要的檔案。一般這類的裝置都有提供更新韌體的介面,Asus WL500g 提供網頁來更新韌體,進到管理頁面後選系統設定 (System Setup) -> 韌體更新 (Firmware Upgrade),這個頁面你也可以看到目前韌體的版本資訊,瀏覽 (Browse) 本地端的檔案,選擇你剛剛解壓縮的 .trx 檔,靜待幾分鐘韌體就更新完了。如果你換了韌體後想換回來,只要去華碩的網站下載,就可以恢復原來的狀況。我最後看到華碩釋出的韌體版本是 1.9.5.0,繁體中文版可以在這裡下載。

更新完畢重新開機原有 Asus 提供的網頁設定介面仍然存在,操作方法也和原廠韌體大同小異,而且,別擔心全部設定都消失要重設,因為核心原始碼是同一個,只不過多了一些說明書上沒有的功能,原有上面的設定(撥接方式、IP、密碼..)都會保留。Oleg 大大好像是俄羅斯人,不要奢望這樣的網頁介面會有中文,除非哪天有人無聊把那些網頁字串都中文化才有可能。

這時候你一定會很興奮地去試一些透過網頁介面就可以設定的功能(像是 FTP、Samba),我建議最好這些功能都先用網頁去關掉(除非你的改機步驟到此為止),因為後面有些步驟我們會重新設定 samba,安裝 vsftpd,有些軟體和設定會比網頁能做的更穩定或更有彈性,這裡先不要急著去打開這些功能,好處我們後面會提到。除了網頁有提供幾個新功能外,重點是,現在我們可以用 telnet 登入 WL500g 囉!用和網頁介面相同的 IP 和帳號密碼 telnet 登入,稍微有 linux 經驗的可以翻弄一下目錄,檔案結構和命令很多都和 linux 一樣,但是由於核心和 CPU 和一般 PC 跑的 linux 有很大的差異,加上你看到的檔案目錄其實都是在 firmware 所在的 flash 裡面,功能和空間都很有限,而且機器重開後所有變更都會消失。如果想在上面安裝軟體或是變更設定,一定需要額外的儲存媒介和強制更新 flash 的動作。

完整閱讀  文章收合  

2007-01-04

更改 HTML 首頁檔頭資訊 (head-content)

在 HTML 檔裡面大部分的標籤,都是用來格式化顯示在頁面上的內容,但是有些資訊,也許和網站或檔案本身有關,並不一定會都顯示在畫面上,針對這些 metadata 的內容,通常會被塞在 <body> 標籤的前面,或是塞在 <head> </head> 標籤的裡面,這些通稱它們叫檔頭資訊(不是"擋頭")。這些資訊早期只有註記的功能,像是該網頁檔案是那個 HTML 編輯器產生的、作者是誰,後來,配合瀏覽器的支援,這些資訊對讀者瀏覽這些檔案的時候就會有不同和功能,最常見的(尤其是中文環境),就是該文件的「預設編碼方式」。怎麼讓讀者的瀏覽器知道該文件最好用哪種編碼方式來開呢?只要在「檔頭區」<head> 標籤內加入下面這一行:

<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>

這樣人家就知道該文件預設編碼是用 UTF-8 Unicode 的方式了。除此之外,其實還有很多類似的資訊可以調整。如果是用 Blogger.com,其實有預設的檔頭資訊,可以找一下樣版文件裡有一行,藏在 <head> 裡面:

完整閱讀  文章收合