嵌入式的WEB服务器PHP移植
- 格式:pdf
- 大小:109.90 KB
- 文档页数:2
嵌入式平台BSP移植记录1. 安装ltib-mpc8272ads-20080623通过运行下面这条命令拷贝源码包,并为BSP中的源码包打补丁。
./ltib -m prep -p u-boot执行后在ltib-mpc8272ads-20080623/rpm/BUILD/下生成u-boot-1.3.2源码目录。
将该目录拷贝至工作目录,如/home/lidx/下。
另存,重命名为u-boot-1.3.2_ori。
在工作目录下u-boot-1.3.2下修改源码。
修改完成后,生成补丁文件。
Diff -Nubr u-boot-1.3.2_ori u-boot-1.3.2 >u-boot-1.3.2.patch以此类推,修改内核,生成linux的补丁文件,命名为linux-2.6.25.patch。
复制linux-2.6.25/arch/powerpc/boot/dts/mpc8272ads.dts,修改,重命名为mpc8247ads.dts。
将以上两个补丁文件(u-boot-1.3.2.patch和linux-2.6.25.patch)和mpc8247ads.dts拷贝至patch目录下。
然后将patch目录拷贝到ltib-mpc8272ads-20080623目录下2. 编译u-boot$ cd ltib-mpc8272ads-20080623$ sh patch/rebuild_uboot.sh编译生成的二进制文件为ltib-mpc8272ads-20080623/rpm/BUILD/u-boot-1.3.2/uboot.bin。
3. 编译kernel$ cd ltib-mpc8272ads-20080623$ sh patch/rebuild_kernel.sh编译生成的二进制文件为ltib-mpc8272ads-20080623/rpm/BUILD/linux-2.6.25/arch/powerpc/boot/uImage。
嵌入式WEB服务器在ARM-Linux上的移植全过程-::电子爱好者天地::.-西...因为要用,所以查了一些资料,再结合自己的实际情况,在ARM板子上做了一个WEB服务器,服务器可以通过CGI进行动态交互.现记录于此.主机:redhat企业版4目标板:EBD9260-S(内核版本2.6.19)主机IP:192.168.0.12目标板IP:192.168.0.11交叉编译环境已经设置好.由于ARM资源的限制,不可能将一些大型的服务器移植上去,对脚本的支持也不大可能,开源的boa就是这么一个服务器:可以传送静态网页和通过纯CGI的方式进行交互.步骤:1.从上下载boa的源码,目前版本是boa-0.94.132.tar -xzvf boa-0.94.13cd boa-0.94.13/src./configure,生成Makefile3.vi Makefile,修改:CC=armv5l-linux-gccCPP=armv5l-linux-gcc -E保存退出4.make,出现错误:util.c:100:1:pasting "t" and "->" does not give a valid preprocessing token5.修改compat.h中:#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff#define TIMEZONE_OFFSET(foo) foo##->tm_zone为:#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff#define TIMEZONE_OFFSET(foo) (foo)->tm_zone 6.还有一个错误需要修改:将boa.c中的if(setuid(0)!=-1){DIE("icky Linux Kernel bug!");}将这三行注掉,不然编译不会出错,但是启动不起来7.重新make,生成可执行文件boa8.剥去调试信息:armv5l-linux-strip boa9. 修改boa-0.94.13目录中的boa.conf:port 80user 0group 0Errorloog /var/log/boa/error_logAccesslog /var/log/boa/access_logserver Name Document Root /var/wwwDirectaryIndex index.htmlKeepAliveMax 1000KeepAliveTimeOut 10Mimetypes /etc/mime.typesDefaultType text.plainCGIPATH /bin:/usr/bin:/usr/local/binAlias /doc /usr/docScriptAlias /cgi-bin/ /var/www/cgi/bin/10:在目标板上:mkdir /var/wwwmkdir /var/www/cgi-binmkdir /var/log/boamkdir /etc/boa通过ftp或者nfs的方式将主机下的/etc/mime_types.h传到目标板/etc下将刚才修改的boa.conf传到/etc/boa下将生成的boa可执行文件传到/usr/bin下制作index.html,将其传到目标板/var/www/下11.在目标板上启动boa,在主机上的浏览器中输入:http://92.168.0.11就可以看到index.html的内容了,如果看到,则说明boa移植成功了12.测试cgi.编写hello.cgi:#include <stdio.h>int main(void){printf("Conten-type:text/html\n\n");printf("<html>\n");printf("<head><title>CGI OUTPUT</title></head>\n");printf("<body\n>");printf("<h1>Hello,xibiren!</h1>\n");printf("</body>\n");printf("</html>\n");exit(0);}然后armv5l-linux-gcc -o hello.cgi hello.c生成hello.cgi,将其传输到目标板上/var/www/cgi-bin/目录下13.在主机浏览器中输入http://192/168.0.11/cgi-bin/hello.cgi如果能看到:Hello,xibiren!的测试界面,则说明cgi测试通过.//****----------------//要想进一步用好boa的cgi功能,还必须移植CGIC库.下次再写了.//****----------------//按照上面的步骤执行之后,需要重新制作文件系统,才能在下此开机之后能够使用.//****-----------------//。
实验十五嵌入式WebServer GoAhead 移植实验一,实验目的完成这个实验后,您将具有以下能力:⏹ 了解GoAhead webserver 的移植方法。
⏹ 学习如何使用GoAhead web 服务器。
二,基础知识进行本实验前,您应具有:⏹ C 语言基础⏹ Linux 环境下vi 编译器的使用⏹ Makefile 的编写和使用⏹ Linux 下的程序编译与交叉编译过程三,实验环境准备为了完成本实验,以下硬件条件是必需的:⏹ UP-NETARM2410-S 嵌入式实验平台⏹ PC 机Pentium500 以上,硬盘40G 以上,内存128M 以上为了完成本实验,以下软件条件是必需的:⏹ PC 机操作系统RedHat Linux 9.0⏹ ARM-LINUX 开发环境⏹ webs218.tar.gz 压缩包四,情景描述下载webs218.tar.gz 压缩包并且解压,之后对LINUX 目录下的main.c 程序和Makefile 进行改造,并且通过交叉编译器进行编译。
将生成的webs 程序在开发板上执行并测试。
五,实验基本原理1,GoAhead Webserver 介绍GoAhead Webserver是为了嵌入式设备的需要而设计的。
该Webserver软件很有特色且开源,它具有各种各样的特性,包括支持活动服务页,嵌入Java描述语言,in-process CGI 形式,SSL,文摘访问认证,用户管理和标准CGI等等,这些全部在一个60K大小的存储脚本中。
这对于那些需要在基于浏览管理模式的设备上传递动态信息的系统管理开发人员来说,是非常有用和高效的。
GoAhead Webserver支持多种开发平台和操作系统,包括Windows NT/98/95、Windows CE、Embedded Linux、Linux、VxWorks、QNX、Lynx等等,因此具有很强大的移植特性。
GoAhead 网络服务器的发展同时也促进了嵌入式网络服务器的源代码的进化。
基于ARM-Linux的App Web+PHP+Sqlite嵌入式Web 服务器技术摘要:本文对Linux下的Web服务器技术进行了分析,选择了AppWeb+PHP+Sqlite的组合建立嵌入式Web服务器作为嵌入式设备生成动态的管理接口,并讨论嵌入式Web服务器在基于arm-linux平台上的移植。
关键词: ARM-linux AppWeb+PHP+Sqlite Web服务器1.引言用户需要通过嵌入式设备所提供的管理接口才能对其进行配置、管理和监控,因此管理接口的易用程度和效率成为衡量设备质量的重要标准之一。
在嵌入式设备中,加入HTTP服务能将其转化成Web Server,可以向Internet或内部网提供基于Web的图形化管理接口,用户可以使用浏览器作为接口来访问嵌入式设备。
这样不仅能够使设备的易用性大大提高,而且可以省去专用管理软件,从而方便地进行统一管理。
管理接口如果要收集和反馈用户信息就需要支持数据库。
目前,Linux系统广泛采用Apache+PHP+MySQL的组合来构建Web服务器,但Apache与MySQL占用的存储空间与运行时需要的系统资源很高,不适用于嵌入式设备Web服务器的构建。
因此需要选择对系统资源要求低且功能相当的Appweb与Sqlite分别代替Apache与MySQL。
2.Linux下常见的Web服务器技术分析2.1 Linux下常见的HTTP服务器技术分析HTTP服务器目前常见的有:Thttpd、Apache与AppWeb,优缺点分析如下:Thttpd:是一个简单、小型、可移植、快速的安全http服务器,还具有其它服务器目前不具有的十分有用的特点(URL-traffic-based throttling),但它不支持PHP。
Apache:具有安全、高效、可扩展及与当前http标准保持同步的特点,并能在现在常用的操作系统如Unix和Windows上运行。
但应用程序占很大的存储空间,运行时需要占用很多系统资源,且移植难度很大,不适用于嵌入式设备。
基于嵌入式的WEB服务器
2009嵌入式作业(4)计应1班王延龙嵌入式的WEB服务器php移植
开发板:PXA270-RP(Linux2.6.9)
宿主机:Centos6.0(linux2.6.32)
交叉编译器:arm-linux-gcc 3.4.6
1、下载php-5.2.17.tar.bz2
2、解压到/vptemp
#tar-jxv-f php-5.2.17.tar.bz2-C/vptemp
3、编译
#cd/vptemp/php-5.2.17
#CC=arm-linux-gcc./configure--host=arm-linux--prefix=/opt/php5--disable-all--enable-pdo --with-sqlite3--with-sqlite--with-pdo-sqlite--with-zlib--without-iconv
在做这个配置的时候出点问题,不知道为什么CC=arm-linux-gcc就是不对,配置出来的Makefile里面还是gcc,libtool也完全不对,气死了。
重启机子又折腾了半天,竟然不知道怎么弄的又可以起作用了。
#make
make的时候出现:undefined reference to dlopen、undefined reference to dlclose,解决方法:在makefile中EXTRA_LIBS之后加上-ldl
4、安装
#make install
将PHP源码包中php.ini-dist文件复制到/opt/php5/lib下并改名为php.ini,因为指定了prefix,PHP缺省会去/opt/php5/lib下找php.ini
5、下载到Tiny6410
#cd/opt
#tar-jcv-f php5-e.tar.bz2php5
将/opt/php5-e.tar.bz2文件件拷贝到arm板上的/opt目录下,解压:
#tar-jxv-f php5-e.tar.bz2-C/opt
6、配置BOA
要让BOA能够通过CGI执行PHP,修改/etc/boa/boa.conf,修改
CGIPath为:CGIPath/bin:/opt/php5/bin
最后添加一行:
AddType application/x-httpd-cgi php
7、测试
在/www建立test.php
#!/opt/php5/bin/php
<?php
echo"X-Powered-By:PHP/5.2.17\n";
echo"Content-type:text/html\n\n";
?>
<html>
<body>
Hello!
<?php
echo$_SERVER["QUERY_STRING"];
?>
</body>
</html>
在浏览器中可以打开!
我在编译是就遇到了一个问题,由于在makefile中EXTRA_LIBS之后加上-ldl时,我加错了地方,导致我半天找不到出错的原因,通过仔细查看makfile文件才知道加错了地方,在测试时,测试文件必须必须把#!/opt/php5/bin/php加上,不然就会提示502错误。
如果没有对测试文件设置权限也会导致502错误。