移植Boa Web服务器到ARM-Linux系统
来源:互联网 发布:mysql去重复 编辑:程序博客网 时间:2024/06/10 00:10
一、Boa程序的移植
1、下载Boa源码
下载地址: http://www.boa.org/
目前最新发行版本: 0.94.13 (几年没更新版本了)
下载 boa-0.94.13.tar.gz,
注意:若从boa上下载的是boa-0.94.13.tar.tar,解压方式一样
解压: [tekkamanninja@Tekkaman-Ninja source]$tar xzf boa-0.94.13.tar.gz
2、生成Makefile文件
进入boa-0.94.13,直接运行src/configure文件 [tekkamanninja@Tekkaman-Ninja src]$./configure
3、修改Makefile文件(注意:必须用cross-2.95.3, 如使用3.4.1、4.1.1等等会出错) CC = /home/tekkamanninja/working/source/2.95.3/bin/arm-linux-gcc
CPP = /home/tekkamanninja/working/source/2.95.3/bin/arm-linux-gcc -E
4、交叉编译
[tekkamanninja@Tekkaman-Ninja src]$ make
5、去除调试信息,减小体积。(可选)
[tekkamanninja@Tekkaman-Ninja src]$ /home/tekkamanninja/working/source/2.95.3/bin/arm-linux-strip boa
6、将编译好的程序放入根文件系统的/bin目录下。
[tekkamanninja@Tekkaman-Ninja src]$ cp boa /home/tekkamanninja/working/nfs/rootfs/bin/
二、配置Boa
Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改。 [tekkamanninja@Tekkaman-Ninja src]$ cd ../..
[tekkamanninja@Tekkaman-Ninja source]$ cd ../nfs/rootfs/etc/
[tekkamanninja@Tekkaman-Ninja etc]$ mkdir boa
[tekkamanninja@Tekkaman-Ninja etc]$ chmod 777 boa/
[tekkamanninja@Tekkaman-Ninja etc]$ cd boa
[tekkamanninja@Tekkaman-Ninja boa]$ kwrite boa.conf
1、Group的修改
为 Group user(开发板上有的组)
修改 User nobody
为 User boa (user组中的一个成员)
[root@~]#adduser -g user boa
Changing password for boa
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.
Enter new password:
Bad password: too short.
Warning: weak password (continuing).
Re-enter new password:
passwd[820]: password for `boa' changed by user `root'
Password changed.
[root@~]#
2、ScriptAlias的修改
修改 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
为 ScriptAlias /cgi-bin/ /var/www/cgi-bin/
这是在设置CGI的目录,你也可以设置成别的目录。比如用户文件夹下的某个目录。
3、ServerName的设置
修改 #ServerName www.your.org.here
为 ServerName www.your.org.here
注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。其它默认设置即可。你也可以设置为你自己想要的名字。比如我设置为:ServerName tekkaman2440
此外,还需要:
将mime.types文件复制/etc目录下,通常可以从linux主机的 /etc目录下直接复制即可。
(以下配置和boa.conf的配置有关)
创建日志文件所在目录/var/log/boa
创建HTML文档的主目录/var/www
创建CGI脚本所在录 /var/www/cgi-bin
[tekkamanninja@Tekkaman-Ninja log]$ mkdir -m 777 boa
[tekkamanninja@Tekkaman-Ninja log]$ cd ..
[tekkamanninja@Tekkaman-Ninja var]$ mkdir -m 777 www
[tekkamanninja@Tekkaman-Ninja var]$ mkdir -m 777 www/cgi-bin
[tekkamanninja@Tekkaman-Ninja var]$ cd ..
[tekkamanninja@Tekkaman-Ninja rootfs]$ cp /etc/mime.types etc/
三、运行Boa
开发板操作:
[root@~]#boa
如果发现boa没有运行,则可以在开发板的/var/log/boa/error_log文件中找原因。
比如端口已被其他程序占用:
[root@~]#cat /var/log/boa/error_log
[20/Feb/2008:21:21:57 +0000] boa.c:194 - unable to bind: Address already in use
或是用户设置错误等等,都可以查到。
四、功能测试
静态网页测试
将静态网页存入根文件系统的/var/www目录下(可以将主机 /usr/share/doc/HTML/目录下的index.html、homepage.css和img、stylesheet-images目录复制到/var/www目录下)
我参考《嵌入式Web服务器移植 》的做法如下:
在根文件系统的/var目录下
[tekkamanninja@Tekkaman-Ninja var]$ cp /usr/share/doc/HTML/index.html www/
[tekkamanninja@Tekkaman-Ninja var]$ cp -r /usr/share/doc/HTML/img www/
[tekkamanninja@Tekkaman-Ninja var]$ cp /usr/share/doc/HTML/homepage.css www/
[tekkamanninja@Tekkaman-Ninja var]$ cp -r /usr/share/doc/HTML/stylesheet-images www/
直接在浏览器中输入开发板的IP地址(比如我的是http://192.168.1.2) ,出现fedora的欢迎网页。静态HTML调试成功。
CGI功能测试
1、编写HelloworldCGI.c程序
[tekkamanninja@Tekkaman-Ninja source]$ vi helloworldCGI.c
(主程序的程序开头一定要用Tab,而不是空格,不然编译可能不通过)
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
printf("Content-type: text/html/n/n");
printf("<html>/n");
printf("<head><title>CGI Output</title></head>/n");
printf("<body>/n");
printf("<h1>Hello,world.</h1>/n");
printf("<body>/n");
printf("</html>/n");
exit(0);
}
2.交叉编译生成CGI程序
[tekkamanninja@Tekkaman-Ninja source]$ /home/tekkamanninja/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-gcc -o helloworldCGI helloworldCGI.c
将helloworldCGI 拷贝至根文件系统的/var/www/cgi-bin/下
[tekkamanninja@Tekkaman-Ninja source]$ cp helloworldCGI ../nfs/rootfs/var/www/cgi-bin/
3.测试
浏览器输入
http://192.168.1.2/cgi-bin/helloworldCGI
网页出现 Hello,world. 调试成功!
我遇到的问题:
1、Could not chdir to "/etc/boa": aborting
因为板子上 /etc 不可写 ,所以就改文件了
修改boa-0.94.13/src/defines.h 第30行:将/etc/boa 改为你自己的目录 我的是 /mnt/yaffs/boa。
2、log.c:73 - unable to dup2 the error log: Bad file
修改boa-0.94.13/src/log.c 第72-74行:将 该if 语句注释掉
3、boa.c:226 - icky Linux kernel bug!: No such file o...
修改boa-0.94.13/src/boa.c 第225-227行:将该 if 语句注释掉
这样编译、修改、编译了n次之后终于搞定!
另外:
关于boa.conf 文件的问题直接贴出我的:
Port 80
User root
Group root
ErrorLog /var/log/boa/error_log
ServerName 10.10.19.123
DocumentRoot /mnt/yaffs/boa/www
UserDir public_html
DirectoryIndex index.html
DirectoryMaker /mnt/yaffs/boa/boa_indexer
KeepAliveMax 1000
KeepAliveTimeout 10
MimeTypes /mnt/yaffs/boa/mime.types
DefaultType text/plain
CGIPath /bin:/usr/bin:/usr/local/bin
Alias /doc /usr/doc
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
由于板子重启之后,boa.conf的内容开头就变了,boa无法运行, 我在开头和末尾都加了很多行无用的注释,这个问题就解决了!
- 移植Boa Web服务器到ARM-Linux系统
- 移植Boa Web服务器到ARM-Linux系统
- 移植Boa Web服务器到ARM-Linux系统
- 移植Boa Web服务器到ARM-Linux系统
- 移植Boa Web服务器到ARM-Linux系统
- 移植Boa Web服务器到ARM-Linux系统
- 移植boa web服务器到Linux
- 移植boa服务器到ARM
- 嵌入式linux web服务器boa的移植方法/arm开发板linux嵌入式web服务器boa
- 移植thttpd Web服务器到ARM-Linux系统
- 移植shttpd Web服务器到ARM-Linux系统
- 移植lighttpd Web服务器到ARM-Linux系统
- 移植thttpd Web服务器到ARM-Linux系统
- 【转】移植thttpd Web服务器到ARM-Linux系统
- 移植thttpd Web服务器到ARM-Linux系统
- 移植多款轻量级 Web服务器到ARM-Linux系统
- Linux下web服务器BOA的移植
- web服务器boa移植
- 多线程之同步输出奇偶数[C#]
- i8042与i8048键盘控制器芯片端口操作总结
- 数据结构问题---树的存储结构和运算
- 数据结构问题---二叉树遍历
- C问题---1000的阶乘的位数
- 移植Boa Web服务器到ARM-Linux系统
- 充分利用系统标签的拓展性
- java中得到当前路径的方法
- C问题---网络字节序问题
- js表格排序
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】在PHP中通过系统信号量加锁方式获取递增序列ID
- It is time now to proceed to the last part of the speculation
- 数据结构问题---内部排序
- UNICODE,GBK,UTF-8区别