boa服务器脚本编程及Curl命令使用
王雷强 江大科茂 2013-3-29
1.目的
记录boa服务器下,web服务的配置,网站的建设,脚本的编写,Curl命令的使用
2.环境介绍
硬件:飞凌OK6410 arm11
操作系统:linux3.0
服务器:boa
脚本程序:shell,c/c++
开源库:libcgic或libcgicc
3.方法
(1) boa服务器的安装
http://www.boa.org/ 下载 交叉编译,具体操作这里不介绍
拷贝生成的boa可执行文件到开发板/bin目录下,设置执行权限
在开发板建立目录/etc/boa,拷贝boa.conf到此目录
(2) web服务器的配置
配置服务器主要是通过修改boa.conf文件
包括服务器端口 ―――-》Port 80
,网站文件所在目录,――――》DocumentRoot /usr/local/boa
cgi脚本位置 ―――》scriptAlias /cgi-bin/ /usr/local/boa/cgi-bin/
最后,设置boa程序开机启动就可以了,具体修改文件/etc/init.d/rcS
在最后一行添加/bin/boa
(3) 脚本编写
Cgi脚本是浏览器与服务器对话的一种方式,可以通过web执行服务器上的程序,实现动态页面的功能。无论用什么语言都可以编写cgi脚本,只需要遵守一定的规范就可以了。这里重点介绍Shell脚本编程。
最简单的一个例子如下:
Test.cgi
#!/bin/sh
echo “Content-type:text/html”
echo “”
echo “”
echo “hello world”
这里注意:第一行是设置解释脚本程序目录
第二行设置文件类型
三四行是cgi脚本规范,两个空行
最后可以任意输出文本到显示终端
所以,就是只要遵守这个规范,我们可以用C写cgi
例如:
Printf(“Content-type:text/html”);
Printf(“\n\n”);
Printf(“helloworld”);
(4) curl命令的使用
curl是利用URL语法在命令行方式下工作的文件传输工具。它支持很多协议:FTP,FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。
curl同样支持HTTPS认证,HTTP POST方法, HTTPPUT方法, FTP上传,kerberos认证,HTTP上传, 代理服务器, cookies,用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代理服务器管道( proxy tunneling),甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。
curl是瑞典curl组织开发的,您可以访问: http://curl.haxx. se/,我们可以交叉编译,自己定制curl命令,这里不做介绍
本章内容我们介绍curl命令作为web客户端与boa服务器交互的内容
4.实例
(1) 下载boa服务器上的文件
Curl http://192.168.100.200/index.html--->显示index.html到显示终端
Curl http://192.168.100.200/index.html-o index.html --->下载服务器上的index.html到文件index.html
-c 选项实现断点续传
(2)模拟get方法
服务器端:新建文件form.html到/usr/local/boa目录,内容如下:
<html>
<form name=”form”method=”get” action=”/cgi-bin/junk.cgi”>
<input type=”text”name=”birthyear”>
<input type=”submit”name=”press” value=”ok”>
</form>
</html>
上面文件相当于建了一个form表单
客户端:新建文件junk.cgi到/usr/local/boa/cgi-bin目录,内容如下:
#!/bin/sh
echo “Content-type:text/html”
echo “”
echo “”
echo “<h1>showform content</h1><br/>
echo $QUERY_STRING
echo “<br/>”
echo $SERVER_NAME
echo “<br/>”
echo$SERVER_PROTOCOL
echo “<br/>”
echo $REMOTE_HOST
echo “<br/>”
echo$REQUEST_METHOD
下面演示curl的使用
Curl http://192.168.100.200/cgi-bin/junk.cgi?birthyear=221.6.52.114&press=OK
同样也可以通过web浏览器观看
IE下输入http://192.168.100.200/form.html
输入内容,点击OK
(3)模拟post方法
服务器端web页面:新建文件form.html到/usr/local/boa目录,内容如下:
<html>
<form name=”form”method=”post” action=”/cgi-bin/junk.cgi”>
<input type=”text”name=”birthyear”>
<input type=”submit”name=”press” value=”ok”>
</form>
</html>
上面文件相当于建了一个form表单
服务器端cgi页面:新建文件junk.cgi到/usr/local/boa/cgi-bin目录,内容如下:
#!/bin/sh
echo “Content-type:text/html”
echo “”
echo “”
echo “<h1>showform content</h1><br/>
QUERY_STRING=`cat-`
echo $QUERY_STRING
echo “<br/>”
echo $SERVER_NAME
echo “<br/>”
echo$SERVER_PROTOCOL
echo “<br/>”
echo $REMOTE_HOST
echo “<br/>”
echo$REQUEST_METHOD
下面演示curl的使用
Curl –d “birthyear=221.6.52.114&press=OK”http://192.168.100.200/cgi-bin/junk.cgi
同样也可以通过web浏览器观看
IE下输入http://192.168.100.200/form.html
输入内容,点击OK
(5) 模拟上传文件
服务器端web页面:新建文件upload.html到/usr/local/boa目录,内容如下:
<html>
<form method="POST"enctype='multipart/form-data' action="upload.cgi">
<input type=file name=upload>
<input type=submit name=press value="OK">
</form>
</html>
服务器端cgi页面:新建文件upload.cgi到/usr/local/boa/cgi-bin目录,内容如下:
此cgi需要用libcgic或libcgicc写,这里不列出。
下面演示curl的使用
curl -F upload=@localfilename -F press=OKhttp://192.168.100.200/cgi-bin/upload.cgi
同样也可以通过web浏览器观看
IE下输入http://192.168.100.200/upload.html
选择文件,点击OK