聲明:自從第一次發表博文不知不覺過去了很久了,很是抱歉沒能把本身的東西分享出來,可是因爲上家公司本月初裁人,因此導致學的新東西成了半成品,無奈又換了一家,目前已工做三週了,本身也很想寫博文分享知識,可是學的東西太雜,有都是半成品,確實不知道以什麼爲切入點,目前這家公司最近一直在作項目,我想先一點點的寫吧,雖然個人東西能在網上找到不少樣本,可是我感受有的不全,仍是本身總結的東西比較靠譜,但願對你們有所幫助,若是有新問題,我會不斷更新的,好了,廢話很少說了。。。html
Ubuntu 10.04配置boa服務器web
1、下載boa源碼(root權限下的命令行):服務器
# wget http://www.boa.org/boa-0.94.13.tar.gz工具
解壓:# tar zxvf boa-0.94.13.tar.gz測試
(解壓前建議單獨創建一個boa文件:# mkdir boa)flex
2、安裝須要的工具:bison、flex;ui
(這兩個工具我也沒弄清楚具體幹什麼的,在網上查查只知道是什麼語法解析器和掃描器,我看網上大部分說明都有這個步驟)spa
# apt-get install bison flex命令行
3、生成Makefile文件:日誌
# cd boa-0.94.13/src
# ./configure
4、爲了保證make不出現錯誤的話必須修改一些文件:
(爲了更方便了解如下步驟的操做目的,建議再打開一個終端,打開相應文件對比着看就明白了)
一、boa配置文件 boa.conf 的路徑的設定:
此文件的路徑應與src/defines.h 中SERVER_ROOT "/etc/boa" 的值一致:
# cd /etc/
# mkdir boa
# cp /home/qiang/share/boa/boa-0.94.13/boa.conf /etc/boa -R(前面是個人文件所在目錄)
以後再回到boa/src下:# make
這時會報錯:
util.c:100:1:error:pasting "t" and "->" does not give a valid preprocessing token
修改compat.h:
# vi compat.h(在編輯模式下:/foo##快速找到如下語句)
將 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 改成:
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
修改boa.c:
# vi boa.c
將如下四行註釋掉:
if(setuid(0) != -1)
{
DIE(」icky Linux kernel bug!」);
}
不然啓動boa時會出現:
boa.c:226 - icky Linux kernel bug!No such file or directory!
(有的版本中沒有這個提示,可是個人出現了,因此通過查找才得以解決)
# make
5、在啓動src/boa前需修改配置文件:
# vi /etc/boa/boa.conf
一、修改 servername 去掉註釋(#),修改User nobody 和 Group nogroup 改成 User 0 、Group 0;
二、定義的是web服務器的文件根目錄,即設定的值 DocumentRoot 默認爲 "/var/www"
# cd /var/
# mkdir www
# chmod 777 www
三、配置日誌文件的目錄及日誌文件:
(1)錯誤報告 ErrorLog 默認位置:/var/log/boa/error_log
(2)訪問報告 AccessLog 默認位置:/var/log/boa/access_log
# mkdir log/boa -p(/var目錄下)
# chmod 777 log/boa -R
# touch error_log/touch access_log
(這兩個文件能夠幫助你查看後期操做遊覽器的訪問狀態信息)
四、cgi程序的存放:
# vi /etc/boa/boa.conf
將最後一行 ScriptAlias /cgi-bin /usr/lib/cgi-bin/ 改成:
ScriptAlias /cgi-bin /var/www/cgi-bin(用於存放.cgi文件)
(建議後期在web開發下本身建立www文件夾時建立cgi-bin文件夾,再後期運行時可直接將整個www文件下的文件所有cp過來)
啓動boa服務器:
切換到初期解壓的源碼目錄下: # cd src/
# ./boa
ps -e 查看是否存在 boa 進程,若無,則查看錯誤報告,若提示:
[23/Apr/2012:23:58:59 +0000] boa.c:194 -unable to bind:Address already in use
此句表示端口被佔用,boa服務器默認的端口是 80 ,好比 ngix 服務器默認的端口也是 80 ,因此會存在這種狀況的發生,爲了不這一錯誤,咱們通常修改端口爲8080:
# vi /etc/boa/boa.conf
將 Port 80 改成 Port 8080
此時再 ps -e 查看進程,若存在 boa 則證實成功!好了,kill掉進程重啓一下進行測試吧!
6、測試程序:
在/var/www/下創建index.html文件:# vi index.html(無法插如圖片,只能粘貼以下)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<title>This is a test program!</title>
</head>
<body>
<h1>This is a test!</h1>
<br />
<br />
<a href="./cgi-bin/test.cgi">To cgi page!</a>
</body>
</html>
# mkdir /var/www/cgi-bin -R
# cd cgi-bin
# vi test.c
include <stdio.h>
int main()
{
printf("Content-type:text/html\n\n");// 這句必須存在;
printf("<html><body>");
printf("<font style=\"color:red;font-size:30px;\">Hello CGI!</font><br />");
printf("<a href=\"../index.html\">return index.html</a>");
printf("</body></html>");
return 0;
}
# gcc test.c -o test.cgi
而後打開遊覽器,輸入虛擬機地址或127.0.0.1:8080(端口號已改),這樣就能看到剛剛寫的頁面了。。。