网站建设服务器
1.美国银行简介
Boa是一个非常紧凑的Web服务器,它的可执行代码只有60KB左右。作为单任务Web服务器,Boa只能依次完成用户的请求,不会分叉出新的进程来处理并发的连接请求。但是Boa支持CGI,可以创建一个进程让CGI程序fork执行。Boa的设计目标是速度和安全,适用于嵌入式系统的单任务http服务器,开源代码,高性能。
下面简单介绍一下将Boa服务器移植到SylixOS的具体操作步骤,希望能有所帮助。
2.SylixOS Boa移植:
Boa采用服务器模式,需要编译服务器的可执行程序。
2.1下载Boa源代码
在官网下载第三方中间件的资源。Boa的官方网站是:http://www.boa.org/.本文使用的版本是boa-0.94.13。下载后,解压文件。文件目录如图2-1所示。
图2-1 Boa解压缩文件
2.2服务器项目创建
在Real-Evo IDE中创建boa_sylixos应用项目,删除项目中src目录下的boa_sylixos.c文件,导入一系列相关的。c和。源代码中src目录下的h文件。导入的工程文档如图2-2所示。
图2-2工程文件
2.3修改源文件
有关源文件修改的详细信息,请参考《移植boa服务器过程文档》。
2.4修改boa.conf配置文件
boa-0.94.13目录下有一个例子boa.conf,可以修改。如下所示:
(1)对1)组的修改
修改:组nogroup
用于:组0
(2)2)用户的修改
修改:用户nobody
是:用户0
(3)对3)ScriptAlias的修改
修订版:script alias/CGI-bin//usr/lib/CGI-bin/
for:script alias/CGI-bin//var/www/CGI-bin/
(5)对5)DoucmentRoot的修改
DoucmentRoot /var/www
(6)6)服务器名的设置
修改:# servername www.your.org.here
收件人:www.your.org.here servername
否则,将出现错误ldquogethostbyname:没有这样的文件或目录。
(7)访问日志修改
修改:access log/var/log/boa/access _ log。
就是:# access log/var/log/boa/access _ log。
否则会出现错误信息:ldquo无法复制2错误日志:错误的文件描述符。
2.5编译生成boa_sylixos可执行文件。
编译生成可执行文件boa_sylixos,上传到目标机/etc/boa目录;
2.6复制mime.types文件
将linux /etc目录下的mime.types文件复制到目标machine /etc目录下;(MIME.types文件用于指示对应于不同文件扩展名的MIME类型。一般可以直接从linux主机上复制一个,大部分都在主机的/etc目录下。)
2.7新项目boa_cgi_child_func
目的:在Boa源代码中实现fork函数的功能。
1)创建一个app项目,修改boa_cgi_child_func.c文件,添加以下代码:
#包含stdio.h
#包含stdlib.h
#定义NI_MAXHOST 20
#定义CGI_ENV_MAX 50
#定义SOCKETBUF_SIZE 8192
#定义MAX_HEADER_LENGTH 1024
#定义客户端流大小套接字缓冲区大小
#定义缓冲区大小客户端流大小
结构mmap_entry {
dev_t开发;
ino _ t ino
char * mmap
int use _ count
size _ t len
};
结构请求{ /*挂起的请求*/
int fd/*客户端的套接字fd */
int状态;/*参见#defines.h */
time _ t time _ last/*上次成功的时间。op. */
char *路径名;/*请求文件的路径名*/
int简单;/*简单的要求?*/
int keepalive/*保持活动状态*/
int kacount/*保持活动计数*/
int data _ fd/*数据的FD */
无符号长文件大小;/*文件大小*/
无符号长filepos/*文件中的位置*/
char * data _ mem/* mmapped/malloced字符数组*/
int方法;/* M_GET,M_POST等。*/
char * logline/*日志文件的行*/
char * header _ line/*未处理或未完全处理的标题行的开头*/
char *头_端;/*最后已知的报头结尾,或已处理数据的结尾*/
int parse _ pos/*我们分析了多少*/
int客户端流位置;/*我们读了多少……*/
int buffer _ start/*缓冲区开始的位置*/
int buffer _ end/*缓冲区结束的位置*/
char * http _ version/* HTTP/?请求的*/
内部响应状态/* R _未找到等。*/
char * If _ Modified _ Since/* If-Modified-Since */
上次修改的时间;/*最后修改时间:*/
char local _ IP _ addr[NI _ max host];/*对于虚拟主机*/
/* CGI变量*/
int远程端口/*可用于ident */
char remote _ IP _ addr[NI _ max host];/*在inet_ntoa之后*/
(同Internationalorganizations)国际组织是_ cgi/*如果CGI/NPH,则为false */
int cgi _ status
int cgi _ env _ index/*数组中的索引*/
/*日志文件的代理和引用*/
char * header _ user _ agent
char * header _ referer
int post _ data _ fd/*用于发布数据tmpfile的FD */
char * path _ info/*环境变量*/
char * path _ translated/*环境变量*/
char * script _ name/*环境变量*/
char * query _ string/*环境变量*/
char * content _ type/*环境变量*/
char * content _长度;/*环境变量*/
struct mmap _ entry * mmap _ entry _ var;
结构体请求*下一个/*下一个*/
结构请求*上一页/*上一个*/
/*这条线以下的所有内容都保留*/
char BUFFER[BUFFER _ SIZE 1];/*通用输入输出缓冲器*/
char request _ uri[MAX _ HEADER _ LENGTH 1];/* uri */
char CLIENT _ STREAM[客户端流大小];/*来自客户的数据——适合或不适合*/
char * CGI _ ENV[CGI _ ENV _ MAX 4];/* CGI环境*/
#ifdef ACCEPT_ON
char ACCEPT[MAX _ ACCEPT _ LENGTH];/*接受:字段*/
#endif
};
typedef结构请求请求;
int main (int argc,char **argv)
{
void (*child_func)(request *req,int *pipes,int use _ pipes);
请求*请求
int *管道;
int使用_管道
child _ func=(void *)atoi(argv[0]);
req=(request *)atoi(argv[1]);
pipes=(int *)atoi(argv[2]);
use _ pipes=*((int *)atoi(argv[3]);
儿童功能(请求,管道,使用管道);
return(0);
}
2) 编译生成boa_cgi_child_func可执行文件,利用文件传送协议工具上传到目标机/etc/boa目录下。
2.8 测试蟒蛇服务器功能2.8.1 不包含cgic库的公共网关接口程序
1)索引。超文本标记语言网页
超文本标记语言
headtitleCGI登陆/标题/标题
身体
表单名称=登录操作=。/cgi-bin/login.cgi姓名:输入类型=文本名称=名称/
br/密码:输入类型=密码名称=密码/
br/确定:输入类型=提交值=登陆/
/表单
/body
/html
2)test.c CGI测试程序代码
# includestdio.h
#includestdlib.h
int main()
{
字符*日期
char name[50],pwd[20];
printf(内容类型:文本/html;charset=GB 2312 \ \ \ \ n \ \ \ \ n);
printf(标题登陆结果/TITLE);
printf(H3登陆结果/H4);
date=getenv(QUERY _ STRING);
if(date==NULL)
printf(p错误:数据没有被输入或数据传输发生错误/p);
其他
{
sscanf(date,name=%[^]pwd=%s,name,pwd);
printf(pname=%s/p,name);
printf(ppwd=%s/p,pwd);
printf(%s,date);
}
返回0;
}
3)操作流程
答将index.html拷贝到先前我们创建的/var/www目录下;
b)在集成驱动电子设备中新建boa _测试应用工程,生成测试公共网关接口程序:boa _ test
c)将boa _测试拷贝到/var/www/cgi-bin目录下
d)执行/boa_sylixos。
e)在浏览器地址栏输入http://192.168.7.32/index.html,产生如图2-3所示。
图2-3 index.html登陆界面
f)在姓名和密码栏分别输入相应值,点击登陆按钮,进入如图24所示界面。
图2-4 CGI响应程序执行
2.8.2 包含cgic库的公共网关接口程序
1)操作流程
g)从公共网关接口官网(http://www.boutell.com/cgic/)上下载cgic库文件;
h)在RealEvo IDE中创建boa_cgictest应用工程;
我)把cgic.h,cgic.c拷贝到工程boa_cgictest源码文件所在的目录科学研究委员会下,然后编译生成boa_cgictest文件,并将之上传到目标机/var/www/cgi-bin目录下;
j)执行/boa_sylixos。
k)在浏览器地址栏输入http://192 .168 .7 .32/CGI-bin/boa _ CGI测试,效果如图25所示。
图25 CGI响应程序执行
可以看到一个网页被展示出来。这样,包含cgic库的的公共网关接口程序就运行起来了。
3.参考资料
1)http://博客。中国UNIX。net/uid-20620288-id-3139686。超文本标记语言
2)http://博客。csdn。net/曼彻斯特mi/文章/详情/50826129
更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理商官网:www.chenqinet.cn