1. 程式人生 > >用thttpd做Web Server

用thttpd做Web Server

httpd是busybox中自帶的web server,功能弱,不支援認證和CGI。thttpd和boa都支援認證CGI,功能比較全,Boa是一個單任務的小型http伺服器,設計的小型系統不要資料庫操作,所以可以使用thttpd作為server.

1. 編譯thttpd
    cc=armv5l-linux-gcc ./configure -host=arm.這裡設定為交叉編譯.
2. make
3. 拷貝 thttpd到osroot/usr/sbin,拷貝contrib/redhat-rpm/thttpd.conf 到osroot/etc,
4. 測試一下thttpd所需要的動態庫,readelf -d thttpd
5. 要想執行thttpd,還需要libnss類動態庫,thttpd 使用到 NSS (Name Service Switch),因此若沒有 libnss類動態庫,thttpd 在通過 /etc/passwd 去查詢 UNIX user時,會看到:unknown user - usr, 原因是 thttpd 讀不到 'usr' 使用者,相應的處理程式碼在thttpd.c 的 main()函式裡,這裡thttpd可以加入libnss_compat.so和libnss_file.so兩個動態庫檔案.
6. 預設情況下,thttpd不可以執行CGI,特別是動態編譯的CGI程式,所以需要修改thttpd.conf的配置:
# This section overrides defaults
dir=/home/httpd/html
#chroot
#遮蔽chroot是為了執行動態編譯的CGI
user=httpd# default = nobody
logfile=/var/log/thttpd.log
pidfile=/var/run/thttpd.pid
# This section _documents_ defaults in effect
port=81
#port引數用於更改埠號(可不改,若還運行了別的WEB伺服器,則需用不同埠)
# nosymlink# default = !chroot
#symlinks
# novhost
cgipath=/cgi-bin/*
#宣告CGI程式的目錄,是以dir為根目錄的路徑
# nothrottles
# host=0.0.0.0
# charset=iso-8859-1
7. 在開發板上為thttpd建立一個獨立的使用者:httpd,並用此使用者建立httpd服務的根目錄html

最簡單的測試方法不用配置檔案,直接輸入命令:
thttpd -p 80 -d /home/httpd/html -u root 啟動