现在的位置: 首页 > 综合 > 正文

uclinux boa服务器在s3c44b0配置移植

2014年09月05日 ⁄ 综合 ⁄ 共 2771字 ⁄ 字号 评论关闭

1.web服务器的工作原理
        web 服务器作为一个数据载体,可以将本地的信息和数据通过网络传递给远端发出请求的客户,这在远程监控的实现有很大的意义。web服务器监听用户端的服务请求,根据用户请求的类型提供相应的服务。用户端使用web浏览器和web服务器进行通信。web服务器在接收到用户端的请求后,处理用户请求并返回需要的数据。一个完整的HTTP事务一般由以下四个阶段组成:
l 客户与服务器建立TCP连接;
l 客户向服器发送请求;

 如果请求被接受,则由服务器发送应答,在应答中包括状态码和所要的文件;
l 客户与服务器关闭连接。
(2) uClinux下web服务器的实现
        从本质上讲,web服务器是在计算机幕后运行的程序,等待发自web浏览器的各种请求。当接受到请求时,它用被请求的文档或错误消息进行答复。大多数的web服务器都提供后端技术,就象CGI,能够使web服务器和已有的应用程序相连,从而提供交互式活动和信息检索。
        uClinux 下,主要有三个web服务器:httpd,thttpd和boa。Httpd是最简单的一个web服务器,功能也最弱,不支持认证、CGI。 thttpd web服务器和boa web服务器都支持认证、CGI等,功能都比较全。boa是一个单任务的http服务器,源代码开放、性能高。它和传统服务器的主要区别是:它是单进程的,在接到新的httpd请求时并不 FORK出一个新的进程来响应,不能对每个到来的连接处理,而且也不能将自己拷贝很多份来处理多连接。它在内部处理所有正在进行的http连接请求,只对单独的CGI程序、自动文件的产生、自动文件的解压等请求FORK出新进程。它的优点是代码简单、速度快、适合于嵌入式应用。对于嵌入式系统来说,实现 web服务器主要是为了使用www浏览器,最终让用户通过局域网或广域网访问和控制嵌入式系统设备。编写不同的HTML页面并结合CGI技术可以完成各种灵活、友好的交互功能。在uClinux下实现boa,

本文具体对boa.conf和mime.types文件进行了几项修改:
(1)建立通过修改开发平台/uclinux-dist/vendor/samsung/44b0/makefile来实现。在ROMFS_DIRS=bin dev etc home lib mnt proc usr var 后面 增加 home/httpd    home/httpd/cgi-bin。

(2) 指定web服务器的根目录路径,进入uClinux-dist/user/boa/src/目录下,通过修改define.h文件中 #define SERVER_ROOT/home语句来指定SERVER_ROOT。修改boa.conf文件,在uClinux- dist/user/boa/src/boa.conf里将User nobody,Group nogroup改为User 0,Group 0,Document Root/var/www改为DocumentRoot/home/httpd,定义默认首页和CGI程序所在的目录,即:DirectoryIndex index.html,ScriptAlias /cgi bin/   /home/httpd/cgi-bin/mini.type不需要修改。Boa.conf和mini.types必须放到web服务器根目录下,把修改后的boa.conf和mini.types复制到uClinux-dist/romfs/home下,然后对uClinux- dist/Vendors/Samsung/44b0/inittab修改,在inet:unknow/bin/inetd后加入boa: unknown/bin/boa c/home。这样配置好后,此时web服务器的根目录为/home/httpd,httpd目录下放的是web服务器可以访问的文件,包括html网页,JPG图片等。/home/httpd目录下放置的文件和网站文件类型完全一样,其中index.html为远程浏览客户访问web服务器所看到的默认首页值,通过超级链接可以链接到/romfs/home/httpd目录以及其所有子目录下的所有静态网页。如果要实现动态网页,只能采用CGI,因为目前uClinux还不支持ASP,PHP等技术。CGI即通用网关接口,它是一个WWW服务器主机对外服务的标准接口,一般来说一个CGI接口的功能就是在超文本和服务器主机应用程序间传递信息。目前最为流行的CGI[10]程序语言有四种:C,Shell,Perl和Visual Basic。CGI程序属于一个外部程序,需要编译成为可执行文件,才能在服务端运行

cig程序设计:本文通过c语言来编写CGI程序,编译成二进制文件放在/cgi-bin/目录下,由于前面配置了boa服务器的CGI目录, ScriptAlias/cgi-bin//home/httpd/cgi-bin/, 所以/cgi-bin/目录下的CGI程序就能被正确执行。配置完成后,重新编译内核,编译时选中boa选项将编译好的内核下载到开发板,启动 uClinux完成IP配置,启动boa web服务器之后就可以通过浏览器浏览网页了,如果想启动uClinux时自动启动boa web服务器,可以修改rc文件,进入uClinux-dist/vendors/Samsung/44b0,在运行脚本中加入boa c/home/&修改后重新编译内核,再下载到开发板运行,运行uClinux后即可访问网页了。

helloworld.c程序设计

#include
void main() {
    printf("Content-type: text/html/n/n") ;
    printf("/n") ;
    printf("/n") ;
    printf("/n") ;
    printf("

Hello, world. /n") ;
    printf("/n") ;
    printf("/n") ;
    exit(0) ;
}

 

通过交叉编译器编译,编译命令如下:#arm-elf-gcc -elf2flt -o helloworld.cgi helloworld.c

  将编译好的helloworld.cgi可执行文件放在/home/httpd/cgi-bin目录下

 

音频测试:

定义要执行的.cgi程序,

移植后mrun启动开发板输入开发板的ip地址:192.168.3.100就可以访问其中的网页

如果想启动uClinux时自动启动boa web服务器,可以修改rc文件,进入uClinux-dist/vendors/Samsung/44b0,在运行脚本中加入boa c/home/&修改后重新编译内核,再下载到开发板运行,运行uClinux后即可访问网页了

抱歉!评论已关闭.