设为首页收藏本站

米尔科技论坛

 找回密码
 注册账号

QQ登录

只需一步,快速开始

查看: 5423|回复: 2

搭建Boa服务器

[复制链接]

25

主题

34

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
Willian.Mo 发表于 2015-5-18 14:52:30 | 显示全部楼层 |阅读模式
本帖最后由 Willian.Mo 于 2015-5-18 14:57 编辑

Boa源码下载:
http://www.boa.org

解压进入src目录:
$ tar -zxvf boa-0.94.13.tar.gz
$ cd boa-0.94.13/src

配置交叉工具环境
$ export PATH=$PATH:/home/msl/Toolchain/gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux/bin

生成Makefile文件
$ ./configure

修改Makefile文件
a.找到CC=gcc,将其改成CC = arm-linux-gnueabihf-gcc
b.找到CPP = gcc –E,将其改成CPP = arm-linux-gnueabihf-gcc –E
保存退出

修改头文件defines.h
找到#define SERVER_ROOT “/etc/boa”修改成
# define SERVER_ROOT “/var/www”
这里定义的是web 服务器的文件根目录(用户可以自行定义,只要跟boa.conf 中设置一致就可以了)
运行make进行编译,得到的可执行程序为boa,并将调试信息剥去
$ make
$ arm-linux-gnueabihf-strip boa

完成Boa的配置,使其能够支持CGI程序的执行。在boa源码目录下有一个boa.conf
可以对其作如下修改:
Group 0
#ServerAdmin root@localhost
#ErrorLog /var/log/boa/error_log
#AccessLog /var/log/boa/access_log
ServerName [url=http://www.your.org.here]www.your.org.here[/url]
DocumentRoot /var/www
DirectoryIndex index.html
MimeTypes /etc/mime.types
DefaultType text/html
#Alias /doc /usr/doc
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
ScriptAlias /index.html /var/www/index.html

copy相关文件到开发板
a.把配置文件boa-0.94.13/boa.conf 和 编译出的可执行文件boa-0.94.13/src/boa拷贝到开发板的/var/www目录
b.把Linux主机中的/etc/mime.types文件拷贝到开发板的/etc目录

测试
a.编辑index.html文件,内容如下,并将其拷贝到开发板
<html>
<head><title> BOATEST </title>
</head>
<body>
<h1> BOATEST</h1>
</body>
</html>

b.网络连接开发板与主机
c.在开发板运行boa可执行文件
$ ./boa

d.在PC机浏览器中输入开发板IP,即可访问开发板/var/www/index.html网页

移植过程中可能出现的问题
错误1: gethostbyname: No such file or directory
解决办法: 修改boa.conf 去掉 ServerName www.your.org.here 前的注释符号(#)

错误2: util.c:100:1: error: pasting "t" and "->"does not give a valid preprocessing token make: *** [util.o]
解决办法: 修改 src/compat.h的120行
#defineTIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#defineTIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

错误3: boa.c:211 - getpwuid
解决办法: 修改src/boa.c
注释掉下面这段程序:
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if(initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}

即修改为:
#if 0
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if(initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
#endif

错误4: boa.c:228 - icky Linux kernel bug!
解决办法: 修改src/boa.c
注释掉下面语句:
if(setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}

即修改为:
#if 0
if(setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
#endif

错误4: log.c:73 unable to dup2 the error log: bad file descriptor
解决方法:
方法1> 确定日志目录对与所有用户都具有可读/写的权限
方法2> 修改src/log.c (建议采用方法1)
注释掉
if(dup2(error_log, STDERR_FILENO) == -1) {
DIE("unableto dup2 the error log");
}

即修改为:
#if 0
if (dup2(error_log, STDERR_FILENO) == -1) {
DIE("unable to dup2 the error log");
}
#endif




回复

使用道具 举报

38

主题

60

帖子

1195

积分

金牌会员

Rank: 6Rank: 6

积分
1195
unityfancier 发表于 2015-6-1 12:32:18 | 显示全部楼层
如果我想boa和php一起提供服务,php已经移植好了,boa这边该肿么配置?
回复 支持 反对

使用道具 举报

25

主题

34

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
 楼主| Willian.Mo 发表于 2015-6-1 19:09:11 | 显示全部楼层
unityfancier 发表于 2015-6-1 12:32
如果我想boa和php一起提供服务,php已经移植好了,boa这边该肿么配置?

这个我没有做过,不过你可以参考这篇文章
http://blog.sina.com.cn/s/blog_6d0252c30100u37v.html
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

Archiver|手机版|小黑屋|米尔科技论坛   

GMT+8, 2019-10-21 14:17 , Processed in 0.467030 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表