Linux下小型WEB伺服器boa的使用0)

來源:互聯網
上載者:User

oa是一個小型的web伺服器,可以用於多種平台,在嵌入式中比較常見。

boa的官方網站為www.boa.org,可以在上面下載最新版本的boa:boa-0.94.13.tar.gz (不過這個“最新”已經是N年前的事情了)。

下面是在Fedora系統中安裝、測試過程,以後不再重複強調Fedora系統,也不區分Linux、Fedora。

1、解壓
$ tar zxvf boa-0.94.13.tar.gz
2、進入boa的原始碼目錄
$ cd boa-0.94.13/src
3、配置
$ ./configure
4、編譯
$ make

注意,編譯會報錯,錯誤資訊如下:

util.c:100:1: 錯誤:毗連“t”和“->”不能給出一個有效預先處理標識符
make: *** [util.o] 錯誤 1(中文版本)
util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token
make:*** [util.o] Error 1(English version)

修改方法如下:
將本目錄中compat.h(boa-0.94.13/src/compat.h)檔案的

#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

改為

#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff

即去掉“##”。
5、再次編譯,通過。成功後,會在目前的目錄(src目錄)下會產生一個可執行檔boa,我們可以將它複製到/usr/bin或/usr/local/bin目錄下(當然,也可以是其它的PATH),按照我的習慣,放到/usr/local/bin目錄下。
6、配置boa
我們需要修改boa的設定檔boa.conf,並且將它放置到一個特定的目錄。我們把boa-0.94.13目錄下的boa.conf檔案複製到/etc/boa目錄(boa目錄需要我們自己建立)中。為什麼呢?我們看一下./src/defines.h原始碼就知道了,裡面的一個宏,定義了伺服器的根目錄,如下:

/***** Change this, or use -c on the command line to specify it *****/
#ifndef SERVER_ROOT
#define SERVER_ROOT "/etc/boa"
#endif

它也提示了我們可以在運行命令時使用-c指定這個根目錄。不過我們採用預設的方式。
另外,也需要進行以下修改

Group nogroup       改為            Group 0
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/       改為      ScriptAlias /cgi-bin/ /var/www/cgi-bin/

因為系統預設是沒有nogroup組的(0表示root組,可以使用id命令查看,見下),但存在nobody使用者,因此User一項可以不用修改。ScriptAlias一項指定了cgi程式的目錄,這裡我們設定為/var/www/cgi-bin,就是說以後的各種cgi程式就要放在這個目錄了。
下面是從網上找到的配置說明,其實就是boa.conf的中文翻譯而已

Port:boa伺服器監聽的連接埠,預設的連接埠是80。如果連接埠小於1024,則必須是  root使用者啟動伺服器。
Listen:綁定的ip地址。不使用這個參數時,將綁定所有的地址。
User:串連到伺服器的用戶端的身份,可以是使用者名稱或UID。
Group:串連到伺服器的用戶端的組,可以是組名或GID。
ServerAdmin:伺服器出故障時要通知的郵箱地址。
ErrorLog:指定錯誤記錄檔檔案。如果路徑沒有以"/"開始,則相對於ServerRoot路徑。沒有配置時默 認的檔案是/dev/stderr。若不想記錄日誌,指定檔案為/dev/null。
AccessLog:設定存取記錄檔,與ErrorLog類似。
UseLocaltime:設定使用本地時間,使用UTC時注釋這個參數。這個參數沒有值。
VerboseCGILogs:在錯誤記錄檔檔案中記錄CGI啟動和停止時間,若不記錄,注釋這個參數。這個參數沒有值。
ServerName:指定伺服器的名稱,當用戶端使用gethostname + gethostbyname時返回給用戶端。
VirtualHost:虛擬機器主機開關。使用此參數,則會在DocumentRoot設定的
目錄添加一個ip地址作為新的DocumentRoot來
處理用戶端的請求。如DocumentRoot設定為/var/www,則http://localhost/轉換 成/var/www/127.0.0.1/,若注釋此參數,則為/var/www/。
DocumentRoot:HTML檔案的根目錄(也就是網站的目錄)。
UserDir:指定使用者目錄。
DirectoryIndex:指定預組建目錄資訊的檔案,注釋此變數將使用DirectoryMaker變數。這個變數也就是設定預設首頁的檔案名稱。
DirectoryMaker:指定用於組建目錄的程式,注釋此變數將不允許列目錄。
DirectoryCache:當DirectoryIndex檔案不存在,而DirecotryMaker又被注釋掉時,將列出這個參數指定目錄給用戶端。
KeepAliveMax:每個串連允許的請求數量。如果將此值設為" 0 ",將不限制請求的數目。
KeepAliveTimeOut:在關閉持久串連前等待下一個請求的秒數。(秒)。
MimeTypes:設定包含mimetypes資訊的檔案,一般是/etc/mime.types。
DefaultType:預設的mimetype類型,一般是text/html。
CGIPath:相當於給CGI程式使用的$PATH變數。
SinglePostLimit:一次POST允許最大的位元組數,預設是1MB。
AddType: 增加MimeType沒有指定的類型,例: AddType type extension [extension ...]。要使用cgi,必須添加cgi類型:AddType application/x-httpd-cgi cgi
Redirect:重新導向檔案。
Aliases:指定路徑的別名。
ScriptAlias:指定指令碼路徑的虛擬路徑。

在啟動boa之前,還需要確保Linux中其它的Web伺服器已經關閉。比如httpd這個服務。——在測試中,Linux的httpd是沒有開啟的。好了,一切就緒,就可以啟動boa了,直接在命令列中輸入boa就行了,當然,前面我們已經將boa複製到/usr/local/bin目錄。
啟動boa後,可以在瀏覽器中輸入Linux的IP地址(可以通過ifconfig命令查看)。此時,瀏覽器中顯示的是Fedora Project的Start Page(大家可以查看一下/var/www目錄下的index.html)。
(注意,在實際測試中,使用普通使用者並不能啟動boa,須用root使用者,原因未明。)

# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
# ps aux | grep boa
nobody    2927  0.0  0.1   1924   652 pts/1 S 09:16 0:00 boa
root      2931  0.0  0.1   5504   688 pts/1 S+ 09:17 0:00 grep boa

測試中,我們將html網頁放到/var/www/html目錄中,將cgi程式放到/var/www/cgi-bin目錄下。這樣,如果我們要訪問一個自己製作的網頁(hello.html),可以在瀏覽器中輸入http://192.168.184.100/html/hello.html,這裡的IP地址就是Linux的IP地址。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.