uclinux中 web server的配置

S3C4510上嵌入式Web服务器-boa在uclinux下的的移植 uClinux下,主要有三个Web Server:httpd、thttpd和Boa。Httpd是最简单的一个Web Server,它的功能最弱,不支持认证,不支持CGI。Thttpd和Boa都支持认证、CGI等,功能都比较全。为了实现动态Web技术,这里我们选择实现一个支持CGI的、非常适合于嵌入式系统的Boa Web Server。
Boa 是一个单任务的http服务器,源代码开放、性能高。目前,uClinux的代码中已经包含boa的源代码,在uClinux下实现 Boa,需要对Boa做一些配置和修改。这主要通过对boa.conf和mime.types文件进行修改来实现,需要改动的配置有以下几项。
(1)建目录
由于uClinux默认的根文件系统romfs是只读的,不能用mkdir等命令来新建目录,故应在编译内核前先建好要用到的目录,这通过修改 /

uclinux-samsung/vendors/Samsung/4510b/makefile
ROMFS_DIRS=bin dev etc home lib mnt proc usr var的后边增加home/web home/web/cgi-bin

3.7
然后在/uclinux- samsung/Vendors/Samsung/4510b/inittab里修改,
在:inet:unknown:/bin/inetd后加入: boa:unknown:/bin/boac/home。


(2)指定Web服务器的根目录路径(SERVER_ROOT)

/uclinux-samsung/user/boa/src/目录,
通过修改define.h文件中#define ERVER_ROOT“/home”语句来指定SERVER_ROOT。

(3)修改boa.conf文件
3.1
在./uclinux-samsung/user/boa/src/boa.conf里修改:
*将user obody改为User 0
Group ogroup改为Group 0;

3.2
*将DocumentRoot/var/www
改为DocumentRoot/home/web,

3.4
*将MimeTypes/etc/mime.types
改为MimeTypes/home/web/mime.types;

3.5
定义默认首页和CGI程序所在目录,即

DirectoryIndex index.html
ScriptAlias/cgi-bin/ /home/web/cgi-bin/


这样指定后,.index.htm为远程浏览客户访问Web Server所看到的首页默认值,用C编写的CGI程序编译成二进制文件,放到/cgi-bin/目录下,CGI程序能被正确地执行。

3.6
Boa.conf文件和mime.types文件必须放到Web服务器根目录下,所以把修改后的bao.conf和mime.types拷贝到 “./uclinux-samsung/romfs/home/”目录下。


3.8
make menuconfig------>kernel--->user setting---->miscellaneous configuration--->generic cgi& cgihtml

配置过程后,重新编译内核,编译时选中Boa选项。把编译好的内核下载到开发 板,启动uClinux,完成IP配置,启动Boa Web Server,然后就可以通过IE访问你的网页了。如果想启动uClinux时自动启动Boa Web Server,可以修改rc文件,进入uclinux-samsung/vendors/Samsung/4510B目录,在运行脚本rc中增加两行:

ifconfig eth0 192.168.168.101 up
boa-c /home/&


修改后重新编译内核,再下载到开发板运行。运行uClinux后,不需要配置就可以直接通过IE来访问你的网页了。

===============================================================
uclinux中boa web server的配置
-----------------------------------------------------------------------------

uclinux中boa web server的配置
一、环境准备
编译环境:uClinux-dist-20040408.tar.gz
编译工具:arm-elf-*
板子型号:SmartArm2200

二、编译配置
1、选择Kernel/Library/Defaults Selection -> Customize Vendor/User Settings -> Network Applications -> boa并编译
2、配置boa web server:
2.1、修改文件uClinux-dist/user/boa/src/defines.h
将#define SERVER_ROOT "/home/httpd"改成#define SERVER_ROOT "/etc/boa"
意思是设定boa web server的ServerRoot路径为/etc/boa
2.2、编辑配置文件uClinux-dist/user/boa/examples/boa.conf,如下
Port 80
User 0
Group 0
DocumentRoot /var/www
UserDir public_html
DirectoryIndex index.html
KeepAliveMax 1000
KeepAliveTimeout 10
DefaultType text/html
AddType application/x-httpd-cgi cgi
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
AddType image/jpeg jpg
关于配置文件的几点说明:
(1)所以的*Log选项都被注释掉了,否则启动boa的时候提示说不识别这些*Log标记;
(2)没有添加"mime.types"选项,原因详见boa测试图片显示乱码;
(3)配置文件boa.conf需拷贝到ServerRoot,可以手动,也可以通过修改Makefile文件(uClinux-dist/vendors/PHILIPS/lpc2200/Makefile)进行;
如果配置文件boa.conf的位置不正确,则会得到形如“Authentication password file for /cgi-bin/ not found!”之类的错误!

三、调试
1、如果现在运行boa & (或者运行boa -c /var/www &,但我们已指定DocumentRoot /var/www,所以运行外面的命令就行),会得到错误信息“kmod: failed to exec /sbin/modprobe -s -k net-pf-1, errno = 2”,此时boa web server还不可用!
2、增加编译Kernel/Library/Defaults Selection -> Customize Vendor/User Settings -> BusyBox -> modprobe并重新编译,此时运行boa &又会得到如下错误信息:
__alloc_pages: 6-order allocation failed (gfp=0x1f0/0)
Allocation of length 164704 from process 193 failed
Buffer memory: 52kB
Cache memory: 1076kB
Free pages: 876kB ( 0kB HighMem)
Zone:DMA freepages: 0kB
Zone:Normal freepages: 876kB
Zone:HighMem freepages: 0kB
( Active: 94, inactive: 188, free: 219 )
= 0kB)
25*4kB 21*8kB 12*16kB 5*32kB 2*64kB 1*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB = 876kB)
= 0kB)
Unable to mmap process text, errno 12
kmod: failed to exec /sbin/modprobe -s -k net-pf-1, errno = 12
__alloc_pages: 6-order allocation failed (gfp=0x1f0/0)
Allocation of length 164704 from process 195 failed
Buffer memory: 52kB
Cache memory: 1076kB
Free pages: 700kB ( 0kB HighMem)
Zone:DMA freepages: 0kB
Zone:Normal freepages: 700kB
Zone:HighMem freepages: 0kB
( Active: 47, inactive: 235, free: 175 )
= 0kB)
25*4kB 19*8kB 12*16kB 4*32kB 2*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB = 700kB)
= 0kB)
Unable to mmap process text, errno 12
munmap of non-mmaped memory by process 195 (insmod): 817fb000
munmap of non-mmaped memory by process 195 (insmod): 815863a0
Unhandled fault: external abort on linefetch (F4) at 0x00000001
fault-common.c(97): start_code=0x81380040, start_stack=0x815bff74)
pid 182: failed 256
好像是内存分配错误!但此时boa web server已经可以访问!
3、增加编译Kernel/Library/Defaults Selection -> Customize Kernel Settings -> Networking options -> Unix domain sockets并从新编译,则boa web server再启动时除了一个pid外,没任何多余的信息了!(此选项到底有什么作用,我还是不知道!)

四、其它说明
1、我的uclinux的大部分配置都是“默认”的,但这里的“默认”可能是已被硬件厂商修改过的(我用的uClinux-dist-20040408.tar.gz是附带光盘里面的)!
2、web测试时,html文件应放在/var/www目录下,cgi程序应放在/var/www/cgi-bin目录下,这些在配置文件中都写的很明确!
3、也可以通过nfs进行web测试(这样会免去多次烧写的麻烦),nfs的配置详见http://wzc0066.blog.hexun.com/6582493_d.html中的第一点。

五、现存问题
现在cgi、javascript、图片浏览等测试都良好!
但在测mp3的时候,还不行,原因可能是还不支持大文件!
我看网上说uclinux好像默认每次分配的最大内存是128K,所以要是运行大于128K的文件就会出错,不知是不是这样!

我还看到一条信息说选择Kernel hacking中的一项配置后就可支持大文件了,但我现在的2.4.x内核中没找到网上说的那一项!
现在点击一mp3文件(二点几M大小)的链接时终端出现的错误信息为:
Allocation of length 2502723 from process 24 failed
Buffer memory: 56kB
Cache memory: 2744kB
Free pages: 2420kB ( 0kB HighMem)
Zone:DMA freepages: 0kB
Zone:Normal freepages: 2420kB
Zone:HighMem freepages: 0kB
( Active: 98, inactive: 602, free: 605 )
= 0kB)
7*4kB 9*8kB 11*16kB 7*32kB 4*64kB 1*128kB 0*256kB 1*512kB 1*1024kB 0*2048kB = 2420kB)
= 0kB)
munmap of non-mmaped memory by process 24 (boa): ffffffff

现在虽然还不完美,但一般的使用我想还是没什么问题的!这就是我的boa web server配置的一般过程!

0 comments:

Blogger Templates by Blog Forum