首页 > 嵌入式 > 构建嵌入式Linux + web+sqlite +php5 平台
2020
01-07

构建嵌入式Linux + web+sqlite +php5 平台

Web和数据库技术在嵌入式技术中得到越来越广泛的应用,本专题我们来研究如何构建一个嵌入式Linux +web +php+sqlite 平台。

一、 工作软件平台配置

桌面Linux版本: Ubuntu10.04 – LTS

交叉编译器版本: arm-linux-gcc 4.4.3

 

设置好系统移植编译相关的环境变量,后面编译时用的到,设置方法如下:

 

#gedit /root/.bashrc  , 在.bashrc 增加如下内容:

 

export PATH=$PATH:/root/arm/4.4.3/bin


export CC=arm-linux-gcc

export AR=arm-linux-ar

export LD=arm-linux-ld

export RANLIB=arm-linux-ranlib

export STRIP=arm-linux-strip

export CC_FOR_BUILD=gcc

 

保存关闭,gedit ,重新打开命令行终端。

二、移植PHP5

1. 移植zlib库和libxml2库

由于php5需要zlib库和libxml2库的支持,我们首先交叉编译编译zlib库和libxml2库。

1.1    移植zlib库

 解压软件包 zlib-1.2.3.tar.bz2 到 zlib-1.2.3目录;

 进入到zlib-1.2.3目录,执行 ./configure --shared --prefix=/home/zlibarm 配置 zlib 库;

 执行make命令编译 zlib库

 执行make install 安装编译好的库

make install 执行完成后, 在/home/zlibarm目录下可以看到我们编译好的 zlib库和相关头文件;

1.2    移植libxml2库

解压软件包libxml2-2.7.8.tar.gz 到libxml2-2.7.8目录

进入到libxml2-2.7.8目录,执行 ./configure –-prefix=/home/libxmlarm –host=arm-linux 配置libxml2库;

执行make命令编译 libxml2库

执行make install 安装编译好的库

make install 执行完成后, 在/home/libxmlarm目录下可以看到我们编译好的 libxml库和相关头文件;

2. 移植PHP5.0软件包

要让我们的WEB服务器支持PHP语言,我们需要移植PHP软件包,PHP软件包我们选择php-5.2.17.tar.gz, PHP移植步骤如下:

解压软件包php-5.2.17.tar.gz到目录php-5.2.17

编写PHP配置脚本文件 elphpcfg.sh, 配置脚本文件内容如下:

---------------------------------------------------------------------------

#! /bin/sh

 

./configure --prefix=/mnt/disk/eappweb/phparm

--host=arm-linux

--with-sqlite=shared 

--with-pdo-sqlite=shared

--with-libxml-dir=/home/libxmlarm

--with-zlib-dir=/home/zlibarm

--disable-all

--enable-pdo=shared

--enable-embed=shared

--with-config-file-path=/mnt/disk/eappweb --with-config-file-scan-dir=/mnt/disk/eappweb


将脚本写成一行

#! /bin/sh


./configure --prefix=/mnt/disk/eappweb/phparm --host=arm-linux --with-sqlite=shared --with-pdo-sqlite=shared --with-libxml-dir=/home/libxmlarm --with-zlib-dir=/home/zlibarm --disable-all --enable-pdo=shared --enable-embed=shared --with-config-file-path=/mnt/disk/eappweb --with-config-file-scan-dir=/mnt/disk/eappweb

--------------------------------------------------------------------------

编辑完PHP配置脚本文件elphpcfg.sh ,把elphpcfg.sh复制到php-5.2.17目录;

进入php-5.2.17目录,执行 ./elphpcfg.sh配置PHP软件包;

执行make命令编译 PHP5软件包

执行make install 安装编译好的PHP5软件包

make install 执行完成后,在/mnt/disk/eappweb/phparm 目录下可以看到我们交叉编译好的PHP5 库文件及相关可执行文件;

 

注意: 编译过程中如果出现某些库文件找不到的错误信息,则把刚才编译好的一些库文件复制到编译器库文件所在路径。

 

三、 移植嵌入式数据库sqlite

Sqlite是嵌入式linux系统中常用的数据库,我们选择的sqlite软件包版本为sqlite-autoconf-3070701[1].tar.gz,Sqlite移植步骤如下:

解压软件包sqlite-autoconf-3070701[1].tar.gz到目录sqlite-autoconf-3070701

进入到sqlite-autoconf-3070701目录,执行./configure --host=arm-linux --prefix=/home/sqlitearm  --disable-tcl 配置sqlite数据库;

执行make命令编译 sqlite软件包

执行make install 安装编译好的sqlite软件包

make install 执行完成后,在/home/sqlitearm 目录下可以看到我们交叉编译好的sqlite 库文件及相关可执行文件;

 

四 、 移植web服务器appweb

Appweb是在嵌入式linux系统中常用的开源web服务器软件,我们选用的appweb 服务器软件版本为appweb-src-2.4.2-2.zip, appweb 移植步骤如下:

解压软件包appweb-src-2.4.2-2.zip到目录appweb-src-2.4.2;

创建appweb 配置脚本文件 appwebcfg.sh, 配置脚本文件内容如下:

------------------------------------------------------------------------------

#! /bin/sh

./configure --prefix=/home/appwebarm --host=arm-linux --build=i686-pc-linux --disable-shared --disable-shared-libc --enable-static --port=80 --disable-multi-thread --type=RELEASE --disable-test --disable-samples --with-php5=builtin --with-php5-libs=php5 --with-php5-dir=/home/zgdz/php-5.2.17 --with-php5-libpath=/home/zgdz/php-5.2.17/libs --with-php5-iflags="-I/home/zgdz/php-5.2.17  -I/home/zgdz/php-5.2.17/main -I/home/zgdz/php-5.2.17/Zend  -I/home/zgdz/php-5.2.17/TSRM"

------------------------------------------------------------------------------

保存appweb配置脚本文件appwebcfg.sh,并复制到appweb-src-2.4.2目录下;

进入appweb-src-2.4.2目录,执./appwebcfg.sh 配置appweb服务器;

执行make 编译appweb软件包;

执行make install 安装编译好的 appweb软件包;

 

Make install执行完成后,在/home/appwebarm 目录下可以看到我们交叉编译好的appweb应用软件及相关配置文档。

 

这样构建嵌入式web服务器 + PHP5 + Sqlite所需用的库文件和软件包都交叉编译完成了,接下来我们开始在嵌入式ARM11开发板 飞凌OK6410上部署嵌入式web服务器 + PHP5 + Sqlite平台。

 

五、部署嵌入式web PHP5 数据库平台

目标平台为飞凌OK6410开发板,在飞凌OK6410开发板上部署嵌入式Linux + appweb + PHP5.0 + sqlite数据库平台步骤如下:

 建立 /mnt/disk/eappweb 目录

 将appweb、PHP、sqlite相关库文件和配置文件复制到/mnt/disk/eappweb目录下,如下图所示:

构建嵌入式Linux + web+sqlite +php5.0 平台 - lihom_1987@126 - 王老板的博客

 

其中appweb.conf 是appweb的配置文件,根据实际情况进行配置,这里我们用默认配置即可。Php.ini为 PHP配置文件,修改php.ini文件,设置如下配置参数:

--------------------------------------------------------------------------

short_open_tag = On,

extension_dir = "/mnt/disk/eappweb/"

extension=pdo.so

extension=pdo_sqlite.so

extension=sqlite.so

enable_dl = On

---------------------------------------------------------------------------

   设置环境变量LD_LIBRARY_PATH= /mnt/disk/eappweb

   运行appweb服务器,执行appweb服务器命令如下:

 ./appweb –f appweb.conf –r /mnt/disk/eappweb

    这样开发板上就运行了appweb服务器。将电脑和开发板用网线连接起来,打开电脑浏览器输入:http://192.168.2.232/test.php 就可以看到PHP测试网页,说明PHP功能测试成功。

 

六、验证数据 sqlite支持功能

1. 测试数据库加载功能:

编写PHP脚本文件,phptest2.php,内容如下所示:

-------------------------------------------------------------------------------

<?php

if (extension_loaded('sqlite')) {

echo 'ok';

}else{

 

if(!dl('sqlite'))

{

echo 'sorry';

}

else

{

    echo 'ok';

}

}

?>

-----------------------------------------------------------------------------

在浏览器地址栏输入:http://192.168.2.232/phptest2.php,显示OK,说明sqlite库加载成功。

2. 测试sqlite数据库操作功能:

编写脚本文件phptest.php, 内容如下:

--------------------------------------------------------------------------

<?php

$dbname="1.db";

 

if (!file_exists($dbname))

{

$fp = fopen($dbname, "w+") or die("创建数据库失败!");

fclose($fp);

$db = sqlite_open($dbname) or die("打开数据库失败");

sqlite_query($db, "CREATE TABLE liuyan (id integer primary key,name varchar(10),content text )") or die("建表失败!");;

 

}

 

$db = sqlite_open($dbname) or die("打开数据库失败");

if($_POST['postdata'])

{

$name=$_POST['name'];

$content=$_POST['content'];

sqlite_query($db, "INSERT INTO liuyan VALUES (NULL,'".$name."','".$content."')") or die("插入数据失败");

}

 

$result = sqlite_query($db, 'select name,content from liuyan');

 

while($data=sqlite_fetch_array($result))

$list[]=$data;

 

?>

 

<div>

<?php

if(is_array($list))

foreach($list as $key=>$listdata)

echo $listdata['name']. "说:".$listdata['content']."<br />";

?>

 

</div>

<form action="" method="post">

姓名:<input name="name" type="text" id="name" size="27" /><br />

俺说: <textarea name="content" cols="25" rows="4" id="content"></textarea><br />

<input name="postdata" type="submit" id="postdata" value="提交" />

</form>

------------------------------------------------------------------------------

 

在浏览器地址栏输入:http://192.168.2.232/phptest.php,显示一个简单的留言板功能。留言后,在开发板的/mnt/disk/eappweb/web目录下可以看到生成的1.db数据库文件。

到这里,我们的嵌入式Linux + web+sqlite +php5.0 平台就构建并且验证完成了。

希望这篇文章对大家移植嵌入式WEB服务器有所帮助。


作者:admin
admin
TTF的家园-www.ttfde.top 个人博客以便写写东西,欢迎喜欢互联网的朋友一起交流!

本文》有 0 条评论

留下一个回复