
无需加好友免费技术支持
BOA很小Web服务器,源码对外开放,特性出色,适用CGI嵌入式操作系统口技术性,尤其适用嵌入式操作系统。
BOA服务器的重要作用是互连嵌入式设备间的信息互动,根据网络视频监控嵌入式设备,可自动将意见反馈信息上传至主控芯片机器设备。它都是基于HTTP动态网页传输协议,Web网页是Web服务最基本传送模块。
内嵌式Web根据远程服务器/服务器计算模型的服务保障工作Web浏览器(远程服务器)和Web由服务器(服务器)构成,即名字B/S构造。运作在客户端浏览器首先要是嵌入式的Web服务器BOA终端设备建立联系,打开一个虚似文档,意味着该文件信息创建SOCKET联接创建取得成功,随后顾客电脑浏览器根据tcp协议SOCKET以GET或是POST传递数据方法的方位Web服务器递交要求,Web浏览器递交要求后,根据HTTP协议书传输给Web服务器。Web收到申请后,服务器针对不同的要求处理事件并回到HTML或者通过文档CGI启用外界应用软件,回到处置结果。
服务器根据CGI与外界应用软件和脚本制作互动,服务器将搜集用户提供的信息,并依据客户端电脑浏览器在要求时使用的办法将这一部分信息发给指定的信息CGI谷歌扩展程序,CGI谷歌扩展程序解决信息,将效果回到服务器,随后服务器剖析信息,并把结论推送回客户端表明用浏览器上。
服务平台:ubuntu 16.04 版本号是:boa-0.94.13.tar.gz
无法访问服务器,能够在公众号后台回复关键词:boa,获得压缩文件
拷贝源码:
yacc是语法解析器的制作器,bison就是yacc的GNU版本号 Lex和YACC用以搭建词法分析机和词法编译器的一种手段Lex和YACC能够轻松搭建词法编译器。
src/compat.h 打开文档进行调整
为
src/log.c 打开文档:
3. boa.c
5. 编译程序 peng@ubuntu:~/boa/boa-0.94.13$ cd src/peng@ubuntu:~/boa/boa-0.94.13/src$ --prefix=/home/peng/boa/boa-0.94.13/tmp
peng@ubuntu:~/boa/boa-0.94.13/src$ makepeng@ubuntu:~/boa/boa-0.94.13/src$ sudo mkdir /etc/boapeng@ubuntu:~/boa/boa-0.94.13/src$ sudo cp /etc/boa 6. 修改配置文件boa.conf
在其中,#表明注释,在文档中,大家寻找#后边的具体内容,随后加上#今天的文章。
Boa Webserver配置信息表明:
Port:boa默认设置服务器监管端口号为80。假如端口号低于1024,则一定要root用户运行服务器。
Listen:关联的cp详细地址。不能使用此参数时,关联全部详细地址。
User:传送到服务器的客户端真实身份能是登录名或UID。(为何务必指定为文件信息使用者才可以访问网页?nobody客户也是有载入管理权限。
Group:传送到服务器的客户端能是组名或GID。
ServerAdmin:当服务器出现异常时,应通告邮件地址。
ErrorLog:指定不正确的日志文档。假如路径不在/逐渐,则相较于ServerRoot路径。未配备的默认设置文档为/dev/stderr。如果你不想纪录日志,指定文档为/dev/null。
AccessLog:设定浏览日志文件或ErrorLog类似。
UseLocaltime:设定本地时间,应用UTC注释此参数。这一主要参数并没有值。
VerboseCGILogs:保存在不正确的日志文档中CGI假如不纪录运行和时间延迟,请标明主要参数。这一主要参数毫无价值。
ServerName:当客户端应用指定服务器的名字时gethostname gethostbyname返回客户端。
VirtualHost:云虚拟主机电源开关。使用使用此参数,这将存有DocumentRoot加上一个设置的文件目录ip地址是一个新的DocumentRoot处理客户端请求。如DocumentRoot设为/var/www,则 则转化成/var/www/127.0.0.1/假如注释此参数,乃为/var/www/。 DocumentRoot:HTML网站根目录(即网站导航)。 UserDir:指定客户文件目录。
DirectoryIndex:应用指定预生成目录信息文件注释此自变量DirectoryMaker变量。此变量是设定默认主页的文件夹名称。
DirectoryMaker:注释此自变量将不可以列举用以生成目录程序。
DirectoryCache:当DirectoryIndex文件不会有,反而是DirecotryMaker再度注释时,向客户端列举主要参数指定文件目录。
KeepAliveMax:每一个联接容许请求总数。如果把此值设为" 0 ",规定的总数将没有限制。
KeepAliveTimeOut:等待下一个要求的分秒再关掉长久联接。(秒)。
MimeTypes:设定包括mimetypes信息文档一般是/etc/mime.types。
DefaultType:默认设置的mimetype类型,一般是text/html。 CGIPath:等同于给CGI程序流程所使用的$PATH自变量。 SinglePostLimit:一次POST默认设置容许较大字节为1MB. AddType: 提升MimeType比如: AddType type extension [extension ...]。使得用cgi,务必加上cgi种类:AddType application/x-httpd-cgi cgi Redirect:跳转文档 Aliases:指定路径的别称。
ScriptAlias:指定脚本制作路径的虚似路径。
在 /www下新建index.html文件,并摆放名字yikou.png的图片到image目录下。 文件名称如下所示:index.html具体内容
有关html语法,后一口君会写几个基础教程。
运作boa打开浏览器输入详细地址:
只要能够ping通boa所在服务器的cp能够访问地址电脑浏览器。
1.木板/etc下建一个boa文件目录(忘掉错误码)
2.”can"t open boa.conf for reading“ 解决方法:不能只把它放到自己的身上boa放进文件目录boa.conf环境变量,并且在板/etc/boa下也需放入boa.conf文件,使设备运行boa必须要在载入时读取boa.conf文件。
3.“unable to dup2 the error log bad file descriptor” 处理:在boa源代码里,即src文件夹下把log.c中第73行的cf注释语句。
4."unable to dup2 the error log:Bad file descriptor" 处理:在boa.conf里,把“#AccessLog /var/log/boa/access_log注释(即除掉#号)。
5.“[01/Jan/2031:00:12:25 0000] boa.c:226 - icky Linux kernel bug!: No such file or directory” 处理:在boa源代码里,即src文件夹下把boa.c中第226行的cf注释语句。
6."gethostbyname:: Resource temporarily unavailable" 解决方法:##ServerName 除掉#号。
7." 1: syntax error: "(" unexpected" 解决方法:未修改Makefile,要用gcc编译,应改成是arm-linux-gcc编译。
8.假如网页页面是:502 Bad Gateway The CGI was not CGI/1.1 compliant.“ 解决方法:给你需要实行的cgi受权可执行文件。chmod 777 filename
9.在
中,cgi可执行文件的路径立即写cgi-bin/test2.cgi能够,千万不要在板里写绝对性路径,因此反复,由于cgi自动完成boa.conf在指定算的路径。
10.警示:control reaches end of non-void function由于某一函数公式并没有return,函数定义是是非非void类型。所以必须要有传参。int cgiMain()这一函数公式必须要有传参,不然会汇报这一不正确。
11.运作网页页面时总有误:mkstemp:No such file or diectory” 解决方法:不可以使用post,只有用get。因为post必须采用一个新的临时文件夹mkstemp函数。该函数公式以系统内唯一的文件夹名称创建并开启,仅有当前用户才可以浏览该临时文件夹。因而,假如权限不够,或是任何其他难题都是会汇报这一不正确。那就用get吧!创作者临时不是很清楚这儿的主要原因...
12.带有立即创作system()应用函数c程序流程arm-linux-gcc还可以在板里编译程序,假如写上板上cgi中之间不一定能实行。因为他牵涉到一个cgi管理权限难题。即便给你。cgi-bin文件夹的所有cgi全部可执行程序都赋予管理权限,很有可能无法执行。
解决方案要看你boa.conf怎么设置中间管理权限正确该是User nobody Group nogroup”改为“User root Group 0,不然不可以恰当实行!你会发现的cgi可执行文件的许多编码早已实行,但是只有这一system()函数公式未实行!
改动 Group nogroup 为 Group 0 Group传送到服务器的客户端能是组名或GID。
改动 User nobody 为 User 0 User:传送到服务器的客户端真实身份能是登录名或UID。
改动ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 为 ScriptAlias /cgi-bin/ /www/cgi-bin/ ScriptAlias:指定脚本制作路径的虚似路径。
改动DocumentRoot /var/www 为DocumentRoot /www DocumentRoot:HTML网站根目录(即网站导航)。
改动#ServerName 为 ServerName 不然会发生错误gethostbyname::No such file or directory” ServerName:当客户端应用指定服务器的名字时gethostname gethostbyname返回客户端。
在这篇文章的前提下,一口君还会继续表述HTTP根据服务器完成综合性物联网项目的协议书。