• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 理科资料 > 正文

    【基于ARM-Linux的App,Web+PHP+Sqlite嵌入式Web服务器技术】嵌入式Linux应用开发完全手册

    时间:2019-02-03 03:17:38 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘 要: 本文对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上运行。但应用程序占很大的存储空间,运行时需要占用很多系统资源,且移植难度很大,不适用于嵌入式设备。
      Appweb:是第一个嵌入式Web服务器,它设计之初就包含安全的思想,具有十分快速、内存使用量小、基于标准的、可移植等特点,特别适用于嵌入式设备,同时支持PHP。
      2.2 Linux下常见的数据库技术分析
      基于Linux平台的数据库非常多,大型的商用数据库有Oracle、Sybase、Informix、IBM DB2等,常见的主要有PostgreSQL、MySQL、mSQL、Berkeley DB、SQLite等。
      SQLite支持绝大多数标准的SQL语句,采用单文件存放数据库,速度又比MySQL快上1―2倍,存储量也不是问题,在操作语句上更类似关系型数据库的使用,其版权允许无任何限制的应用,包括商业性的产品。由于具有这些优良特性,SQLite已集成至PHP中。
      2.3动态网页语言技术分析
      ASP全名Active Server Pages,是一个Web服务器端的开发环境,是Microsoft开发的动态网页语言,继承了微软产品的一贯传统,只能执行于微软的服务器产品上。
      JSP是Sun公司推出的新一代网站开发语言,JSP可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序,但ARM-Linux一般不支持JVM,即不能支持JSP。
      PHP是一种跨平台的服务器端的嵌入式脚本语言,能在Windows,Unix,Linux的Web服务器上正常执行。它大量地借用C、Java和Perl语言的语法,并耦合PHP自己的特性,使Web开发者能够快速地写出动态产生页面。它支持目前绝大多数数据库,包括Sqlite、Oracle、Sybase、Postgres、Mysql,等等。PHP是完全免费的,可以获得源码。
      通过上述分析,我选择AppWeb+PHP+Sqlite作为嵌入式Web服务器。
      3.Appweb+PHP+Qlite在ARM-Linux平台上的实现
      3.1编译环境的设置
      假如交叉编译工具链所在的目录为/usr/local/armv5b-linux-2.3.3-3.3.2,输出如下环境变量:
      export PATH=$PATH:/usr/local/armv5b-linux-2.3.3-3.3.2/bin
      export CC=″armv5b-linux-gcc″ export AR=″armv5b-linux-ar″
      export RANLIB=″armv5b-linux-ranlib″ export STRIP=″armv5b-linux-strip″
      export CC_FOR_BUILD=″/usr/bin/gcc″ export LD_FOR_BUILD
      =″/usr/bin/ld″
      3.2获得源代码
      Appweb、PHP与Sqlite都可以从网上获取源代码。
      3.3 Appweb+PHP+Sqlite的编译
      编译程序时建立xxx-build及xxx-install目录(xxx代表应该程序,分别为Appweb,PHP与Sqlite),build目录用于编译。这样,编译过程生成的文件单独保存在此目录下而不污染源代码目录,install目录用于安装头文件、库文件,以及执行程序等。
      3.3.1 Sqlite的编译
      3.3.1.1将Sqlite-2.8.18.tar.gz解压后将生成Sqlite目录。
      3.3.1.2不同体系结构的Linux,如x86和ARM,会有些差别,需要对sqlite/src/sqliteInt.h做一定的修改,以确保btree(B树)有正确的变量大小,如“ptr”和“char*”。对于ARM-Linux可以找到如下部分:
      # ifndef INTPTR_TYPE
      # if SQLITE_PTR_SZ==4
      在上面的代码前加上一句:
      # define SQLITE_PTR_SZ 4
      这样后面的“typedef INTPTR_TYPE ptr”就是定义的“int”类型,而不是“long”型。
      3.3.1.3使用Configure进行一些配置。修改Sqlite目录下的Configure使其不去检查交叉编译环境,注释掉相应代码行即可。
      3.3.1.4修改Makefile文件
      将代码行BCC=armv5b-linux-gcc-g-O2改成BCC=gcc-g-O2。另外,ARM-Linux的交叉编译工具不提供readline与ncures库,则继续修改Makefile,修改如下两行:
      READLINE_FLAGS=-DHAVE_READLINE=1-I/usr/include/readline→READLINE_FLAGS=LIBREADLINE=-lncurses→LIBREADLINE=
      3.3.2 PHP的编译过程
      3.3.2.1解压PHP-5.0.4.tar.gz后在当前工作目录下生成PHP-5.0.4目录。
      3.3.2.2修改PHP-5.0.4目录下的Configure文件使其不去检查交叉编译环境,另外,PHP需要版本不低于2.5.10的Libxml支持,但此版本的Libxml库文件的大小为1.2M字节,在嵌入式系统中使用如此大的文件不太合理,而Libexpat的大小只有0.2M字节,因此使用Libexpat代替Libxml进行比较简单的XML分析,详见如下的配置内容。
    本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文   3.3.2.3进入到PHP-Build目录,使用Configure进行配置,配置的内容为:
      ../PHP-5.0./configure--prefix=../PHP-install--host=armv5b-linux--build=i586-linux
      --enable-embed=shared--enable-maintainer-zts--with-sqlite--without-pear
      --disable-libxml--disable-dom--disable-simplexml--enable-xml--without-libxml-dir
      --with-libexpat-dir=/path/to/expat/install--with-sqlite=/path/to/sqlite/install
      3.3.2.4运行make生成PHP执行程序与LibPHP.so动态加载库。并运行make install安装头文件、库文件、执行程序,以及man文件到PHP-Install目录下。
      3.3.3 Appweb的编译
      3.3.3.1解压AppWeb-src-2.0.4-1.tar.gz后在当前工作目录下生成AppWeb-2.0.4目录。
      3.3.3.2进入到AppWeb-build目录,使用Configure进行配置,配置的内容为
      ../appWeb-2.0.4/configure--prefix/usr/local/appWeb--sbinDir=/usr/local/appWeb
      --type=RELEASE--host=arm-linux--enable-access-log--enable-assert
      --enable-config-parse--enable-log--with-PHP5=loadable--with-PHP5-libs=″PHP5 crypt
      resolv z″--with-PHP5-dir=/path/to/PHP/install--with-PHP5-flags=″-I$(BLD_TOP)/$(BLD_PHP5_DIR)-I$(BLD_TOP)/$(BLD_PHP5_DIR)/main-I$(BLD_TOP)/$(BLD_PHP5_DIR)/Zend-I$(BLD_TOP)/$(BLD_PHP5_DIR)/TSRM″
      3.3.3.3运行make生成AppWeb执行程序,并运行make install安装执行程序及配置的各组件库,如libauthModule.so等。
      4.在ARM-Linux平台上运行Web服务器
      修改AppWeb文件中ServerRoot与DocumentRoot指令,ServerRoot表示AppWeb各模块存放目录(/usr/local/appWeb),DocumentRoot主服务器文档存放目录。将各文档存放到DocumentRoot指向的目录。在/etc/rc.d/init.d目录下建立运行服务器的脚本AppWeb,运行service AppWeb start即可。
      
      参考文献:
      [1]魏忠,蔡勇,雷红卫.嵌入式开发详解.北京:电子工业出版社,2003.
      [2]李善平,刘文峰,王焕龙等.Linux与嵌入式系统.北京:清华大学出版社,2003.
      [3]Karim Yaghmour.Building Embedded Linux Systems.O’ReillyPublisher,2003.
      [4]Matthias Kalle Dalheimer.Running Linux(4th Edition).O’ReillyPublisher,2004.
      [5]Michael Owens.Embedding an SQL Database with SQLite.Linux Journal,2003,(6).
    本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

    推荐访问:嵌入式 服务器 技术 App

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章