BOA服务器的移植


BOA服务器的移植

1、源码下载
	http://www.boa.org/
	News! (last updated 23 February 2005)
	Latest Released Version (0.94.13) here (signature here)  --- 下载地址
1.1 boa简介: 
其可执行代码只有大约60KB左右,Boa是一个单任务的HTTP服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。Boa支持CGI。
Boa的设计目标是速度和安全。(CGI只是一个进程,用来提供接口),自动目录生成和自动文件枪支进行拼接。
Boa的主要设计目标是速度和安全性。安全性在“不能被恶意用户破坏”的意义上,不是“细粒度访问控制和加密通信”。

特点:可靠性和可移植性,Boa不是作为功能强大的服务器。
开发平台:GNU / Linux是目前的开发平台。
推荐:GoAhead   Apache2

跨平台移植三部曲:
	1、./configure生成一个Makefile      ./configure  --prefix   --host
	2、make 
	3、make install 

2、解压源码:
	tar -xvf boa-0.94.13.tar.gz 
3、进入源码目录下的src目录:
	cd boa-0.94.13/src/
在源码目录下配置与编译。执行
./configure
这是根据configure.in文件进行一系列的配置,生成config.status,configure,和Makefile文件。
如果无法执行,考虑权限,修改该目录下的configure的属性为可执行 chmod 755 configure

4、make 编译源码:
	问题1: 
	目录: boa-0.94.13/src$ make
		yacc  -d boa_grammar.y
		make: yacc: Command not found
		make: *** [y.tab.c] Error 127
	解决方法:
		/boa-0.94.13/src$ sudo apt-get install bison
	问题2: 
		yacc  -d boa_grammar.y
		gcc  -g -O2 -pipe -Wall -I.   -c -o y.tab.o y.tab.c
		......
		lex  boa_lexer.l
		make: lex: Command not found
		make: *** [lex.yy.c] Error 127
	解决方法:
		/boa-0.94.13/src$ sudo  apt-get install flex
	WARNING: The following packages cannot be authenticated!
	  libfl-dev flex
	Install these packages without verification? [y/N] 
	E: Some packages could not be authenticated
	注意加参数-f 自动搜索依赖,下面选择y  : sudo  apt-get install flex -f
	Do you want to continue? [Y/n] y
	WARNING: The following packages cannot be authenticated!
	  libfl-dev flex
	Install these packages without verification? [y/N] y

	问题3: 	
	util.c: In function ‘get_commonlog_time’:
	util.c:100:39: error: pasting "t" and "->" does not give a valid preprocessing token
			 time_offset = TIMEZONE_OFFSET(t);									   ^
	compat.h:120:30: note: in definition of macro ‘TIMEZONE_OFFSET’
	 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff						  ^
	make: *** [util.o] Error 1
	
问题描述:在compat.h文件中的宏定义问题:  ‘TIMEZONE_OFFSET’
	解决方法:
		修改 boa-0.94.13/src$ vi compat.h  +120
		找到
		#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
		修改成
		#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

		将boa.c中的 vi   boa.c
		225     #if 0     //注释掉
		226         if (setuid(0) != -1) {
		227             DIE("icky Linux kernel bug!");
		228         }
		229     #endif             
 	
这三行注释掉,否则boa启动时会出现“boa.c:226 - icky linux kernel bug!: No suchfile or directory错误”		
		



	
清除之前编译的内容 make clean (防止某些依赖的信息出现问题)
	重新make 
	再次boa-0.94.13/src$ make
	make: Nothing to be done for `all'.
	make主要检查的是时间戳, 只要target比依赖的文件时间靠后它就认为不需要编译

5.建立安装目录 
	sudo mkdir -p 	/boa 	/boa/www 	/boa/cgi-bin 	/boa/log  
	将src/defines.h中的
		 #define SERVER_ROOT "/etc/boa" 
修改为
 	#define SERVER_ROOT "/boa"
	(这样boa程序启动时会在/boa目录下寻找boa.conf配置文件,并且将/boa文件夹作为服务器的根目录)。
	将需要的文件复制到安装目录中
	将boa-0.94.13/src目录下生成的boa、boa_indexer二进制文件复制到/boa下
		sudo  cp  boa boa_indexer  /boa
	将boa-0.94.13目录下的boa.conf文件复制到/boa下
		sudo  cp  boa.conf  /boa
		可选项: arm-linux-strip boa(去掉boa中的调试信息,只是减小文件的大小可以执行也可以不执行)
	将/etc/mime.types复制到/boa目录下
		sudo cp  /etc/mime.types  /boa

7、返回boa的顶层目录  --- 修改配置文件
	boa-0.94.13$ ls
		boa.conf   contrib  docs      extras       README
		ChangeLog  CREDITS  examples  Gnu_License  src

vi boa.conf, //几乎全部指定到boa的目录下,这样方便我们进行管理
重新指定一些文件的生成路径,因为重新指定这些路径后会帮助我们深刻的理解关于boa服务器的工作机制
	Port  80  
	User  0  
	Group 0  
# bind调用的IP地址,一般注释掉,表明绑定到INADDR_ANY,通配于服务器的所有IP地址
#Listen 192.68.0.5 
##### error_log和access_log会自动生成,只要指定生成路径就可以了。  
	ErrorLog /boa/log/error_log  
	AccessLog /boa/log/access_log    
##### 存放HTML文件的根路径  
	DocumentRoot /boa/www  
	UserDir public_html  
##### 默认页面,若之输入http://127.0.0.1/则会自动返回给浏览器默认页面index
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值