boa linux arm修改网卡,嵌入式linux架设boa webserver
Boa
是一套小型的網(wǎng)頁(yè)服務(wù)器,很適合應(yīng)用在Embedded System上,并且內(nèi)建就可以直接支援以C寫(xiě)的CGI網(wǎng)頁(yè),這篇是移植Boa到ARM9
S3C2410平臺(tái)的過(guò)程,Linux版本為2.6.17.4 ,使用arm-linux toolchain 3.4.1編譯。
1.產(chǎn)生Makefile
下載Source code并解壓縮進(jìn)到src目錄。
# ./configure –host=arm-linux
2.修改Makefile使用跨平臺(tái)編譯
CC = arm-linux-gcc
CPP = arm-linux-gcc -E
# make (如果編譯或執(zhí)行時(shí)有錯(cuò)誤請(qǐng)看Q&A)
# arm-linux-strip boa
3.配置Boa
可以在源碼目錄找到這個(gè)設(shè)定檔,放到/etc/boa里面,有修改的部份如下:
User 0
Group 0
#DirectoryMaker /usr/lib/boa/boa_indexer
CGIPath /bin:/usr/bin:/var/www/cgi-bin
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
然后需要放一個(gè)mime.types檔案在/etc,我是直接復(fù)制ubuntu里的檔案。
4.加入boa執(zhí)行檔
將編譯好的boa執(zhí)行檔加入檔案系統(tǒng)/bin,要啟動(dòng)server只要輸入boa即可,可到/var/log/boa查看log。
問(wèn)題Q&A:
Q:使用toolchain 3.4.1編譯出現(xiàn)錯(cuò)誤
arm-linux-gcc -g -O2 -pipe -Wall -I. -c -o util.o util.c
util.c:100:1: pasting "t" and "->" does not give a valid preprocessing token
make: *** [util.o] Error 1
A:修改src/compat.h
找到
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
Q:執(zhí)行boa出現(xiàn)"gethostbyname::No such file or directory"
A:需將boa.conf里的ServerName開(kāi)頭注解拿掉
Q:無(wú)法啟動(dòng)Boa,error log顯示"boa.c:266.icky Linux kernel bug!:No such file"
A:修改src/boa.c,將底下判斷式注解掉:
/*if (setuid(0) != -1) {
DIE("icky Linux kernel bug!");
}*/
重新編譯
Q:無(wú)法啟動(dòng)Boa,error log顯示"boa.c:211 - getpwuid….略"
A:修改src/boa.c,將底下兩個(gè)判斷式注解掉:
/*if (passwdbuf == NULL) {
DIE("getpwuid");
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE("initgroups");
}*/boa的配置文件是/etc/boa/boa.conf。
Port:boa服務(wù)器監(jiān)聽(tīng)的端口,默認(rèn)的端口是80。如果端口小于1024,則必須是root用戶(hù)啟動(dòng)服務(wù)器。
Listen:綁定的ip地址。不使用這個(gè)參數(shù)時(shí),將綁定所有的地址。
User:連接到服務(wù)器的客戶(hù)端的身份,可以是用戶(hù)名或UID。(為什么非要指定為文件的所有者才能訪問(wèn)網(wǎng)頁(yè)呢?nobody用戶(hù)也有讀權(quán)限啊)
Group:連接到服務(wù)器的客戶(hù)端的組,可以是組名或GID。
ServerAdmin:服務(wù)器出故障時(shí)要通知的郵箱地址。
ErrorLog:指定錯(cuò)誤日志文件。如果路徑?jīng)]有以“/”開(kāi)始,則相對(duì)于ServerRoot路徑。沒(méi)有配置時(shí)默認(rèn)的文件是/dev/stderr。若不想記錄日志,指定文件為/dev/null。
AccessLog:設(shè)置存取日志文件,與ErrorLog類(lèi)似。
UseLocaltime:設(shè)置使用本地時(shí)間,使用UTC時(shí)注釋這個(gè)參數(shù)。這個(gè)參數(shù)沒(méi)有值。
VerboseCGILogs:在錯(cuò)誤日志文件中記錄CGI啟動(dòng)和停止時(shí)間,若不記錄,注釋這個(gè)參數(shù)。這個(gè)參數(shù)沒(méi)有值。
ServerName:指定服務(wù)器的名稱(chēng),當(dāng)客戶(hù)端使用gethostname + gethostbyname時(shí)返回給客戶(hù)端。
VirtualHost:虛擬主機(jī)開(kāi)關(guān)。使用此參數(shù),則會(huì)在DocumentRoot設(shè)定的目錄添加一個(gè)ip地址作為新的DocumentRoot來(lái)
處理客戶(hù)端的請(qǐng)求。如DocumentRoot設(shè)置為/var/www,則
則轉(zhuǎn)換成/var/www/127.0.0.1/,若注釋此參數(shù),則為/var/www/。
DocumentRoot:HTML文件的根目錄(也就是網(wǎng)站的目錄)。
UserDir:指定用戶(hù)目錄。
DirectoryIndex:指定預(yù)生成目錄信息的文件,注釋此變量將使用DirectoryMaker變量。這個(gè)變量也就是設(shè)置默認(rèn)主頁(yè)的文件名。
DirectoryMaker:指定用于生成目錄的程序,注釋此變量將不允許列目錄。
DirectoryCache:當(dāng)DirectoryIndex文件不存在,而DirecotryMaker又被注釋掉時(shí),將列出這個(gè)參數(shù)指定目錄給客戶(hù)端。
KeepAliveMax:每個(gè)連接允許的請(qǐng)求數(shù)量。如果將此值設(shè)為" 0 ",將不限制請(qǐng)求的數(shù)目。
KeepAliveTimeOut:在關(guān)閉持久連接前等待下一個(gè)請(qǐng)求的秒數(shù)。(秒)。
MimeTypes:設(shè)置包含mimetypes信息的文件,一般是/etc/mime.types。
DefaultType:默認(rèn)的mimetype類(lèi)型,一般是text/html。
CGIPath:相當(dāng)于給CGI程序使用的$PATH變量。
SinglePostLimit:一次POST允許最大的字節(jié)數(shù),默認(rèn)是1MB.
AddType: 增加MimeType沒(méi)有指定的類(lèi)型,例: AddType type extension [extension ...]。要使用cgi,必須添加cgi類(lèi)型:AddType application/x-httpd-cgi cgi
Redirect:重定向文件
Aliases:指定路徑的別名。
ScriptAlias:指定腳本路徑的虛擬路徑。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的boa linux arm修改网卡,嵌入式linux架设boa webserver的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux如何使用uboot的命令,Ub
- 下一篇: Linux恢复win分区,找到了linu