阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

APPWeb+PHP5+SQLite3在S3C6410上移植

424次阅读
没有评论

共计 13878 个字符,预计需要花费 35 分钟才能阅读完成。

相关支持库移植

主要包括 libiconv、zlib 以及加密服务组件 matrixssll。

下载 Embedthis 提供的第三方工具包,采用 gitGitHub获取 packages 软件包,命令如下。

gitclone http://github.com/embedthis/packages

如果下载失败,可以在直接在 https://github.com/embedthis/packages 中选择下载 ZIP 包,内容 包括:


APPWeb+PHP5+SQLite3 在 S3C6410 上移植

其中,libiconv-1.11zlibmatrixssl 中的 matrixssl1-8-8-open 被本次移植采用,php目录中的 PHP 版本较高,并且默认目标平台为 LinuxWindows平台,不支持交叉编译,编译时会出现诸多问题,本次移植并未采用。

1编译libiconv

libiconv库是编译 xmlrpc 必须的支持库,选择 libiconv-1.11 注意:最新版iocnv,编译时会可能会出现诸多问题,这里不建议采用。

首先设置 CCAR 等环境变量的路径(假设 arm-linux-gcc 工具安装在 /usr/local/arm/4.2.2-eabi/ 目录下),具体设置如下所示。

export CC=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc

export AR=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ar

export LD=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ld

export RANLIB=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ranlib

export STRIP=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-strip

export CC_FOR_BUILD=gcc

配置:

./configure –build=arm-linux –host=i686-linux –prefix=/usr/local/iconvarm

配置完成后,编译安装:

make

make install

–prefix参数指定 libconv 库安装的位置,在编译 PHP 时需要引用该位置。

2编译libz.so

zlibPHP 必须的支持库,这里采用的版本为 zlib-1.2.6 注意 CCAR 等环境变量选择为arm-linux-xx

./configure –prefix=/usr/local/zlib

配置成功之后,编译:

make clean

make

–prefix参数指定 libz 库安装的位置,编译 PHP 时,加入 –with-zlib-dir=/usr/local/zlib 编译参数。

3编译libxml2.so

源码包版本为 libxml2-2.7.4libxml2 库同样是 PHP 所必须的支持库。

./configure –build=arm-linux –host=i686-linux –disable-ipv6 –prefix=/usr/local/libxmlarm

配置成功之后,编译安装:

make

make install

 

编译 PHP

当上述支持库编译完成之后,进行 PHP 编译。注意 :上述编译得到的*.so 文件格式必须为如下形式:

libz.so.1.2.6: ELF 32-bit LSB shared object,ARM, version 1 (SYSV), dynamically linked, not stripped

另外,正常编译得到的库文件包含调试信息,可以使用 arm-linux-strip 工具去除不必要的调试信息,以减小文件体积。

PHP采用的版本为 PHP-5.2.17PHP-5.3.8 会出问题,如无法正常运行,服务器自动重启,建议采用此版本)。

PHP配置参数如下:

./configure –target=arm –host=arm-linux –disable-debug –disable-rpath –disable-cli–enable-bcmath –enable-calendar –disable-maintainer-zts  –enable-embed=shared –enable-ftp–enable-inline-optimization –enable-magic-quotes  –enable-safe-mode –enable-sockets  –enable-wddx –sysconfdir=/etc/appweb–with-pic –with-exec-dir=/etc/appweb/exec –with-regex=system –with-pear –with-xmlrpc  –with-zlib-dir=/usr/local/zlib  –with-libxml-dir=/usr/local/libxmlarm –with-iconv-dir=/usr/local/iconvarm/

注意 :在使能多线程模式,即附带参数–enable-maintainer-zts 编译时,报错信息如下:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

上述错误可以通过修改 configure 文件解决,修改内容如下:

{echo “configure: error: Your system seems to lack POSIXthreads.” 1>&2; exit 1;}
替换为:

{echo”configure: error: Your system seems to lack POSIX threads.”1>&2;}#exit 1; }

 

在多线程与单线程模式下,PHP脚本运行性能对比(由雅黑 PHP 探针测得数据),如下表所示。

2 PHP 性能对比

 

 

性能参数

单线程模型

ARM11 667MHz

多线程模型

ARM11 667MHz

美国 IXwebhosting.com

4 x Xeon E5530 @ 2.40GHz

整数运算能力检测
(1+ 1 运算 300 万次)

7.439s

15.547s

0.535s

浮点运算能力检测
(圆周率开平方 300 万次)

42.599s

无法测出

1.607s

数据 I / O 能力检测
(读取 10K 文件 1 万次)

0.961

11.112s

0.058s

通过上述对比分析,在单线程模式下系统性能好于多线程模式,所以本移植中 PHP 配置为单线程模式,另外 AppWeb 也需要禁用多线程模式。

配置完成之后,需要检查生成的 Makefile 文件,确保 CCCPP等环境变量指向交叉编译链,即arm-linux-xx,以及相关库文件和头文件的路径是否正确,正确配置信息如下图所示:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

配置成功之后,系统提示如下信息:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

编译安装:

make clean

make

make install

编译时如果出现如下错误,表示编译 PHP 的工具链并不是 arm-linux-gcc 而是 gcc,所以需要重新设置CCAR 等环境变量指向 arm-linux-xx 交叉工具链。

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

编译成功,系统提示信息如下:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

注意 :编译完成后不可执行make test,因为PHP 编译的目标为网关(ARM平台),所以运行时会报错。直接运行 makeinstall 进行安装即可。

安装完成后,在 libs/ 目录下生成 libphp5.so 动态库文件,使用 file 命令查看文件信息,如下所示:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

在未使用 strip 工具去除调试信息之前,本次编译的库文件大小为 12.5M,执行arm-linux-strip 得到的库文件大小仅为3.8M

编译 PHP 加速器 eAccelerator

eAccelerator是一款开源 PHP 加速器,优化动态内容缓存,提高 php 脚本的缓存性能,使 PHP 脚本在编译的状态下,对服务器的开销几乎完全消除;另外,可以实现脚本优化,加快脚本执行速率,最终使 PHP 程序代码执行效率提高 110倍。

eAccelerator-0.9.5版本支持 PHP 进行交叉编译,但是该版本不支持动态模块加载方式,只能将 eaccelerator 编译进 libphp5.so 动态库中。

将解压得到的 eaccelerator-0.9.5 目录重命名为 eaccelerator,并复制到php-5.2.17/ext 目录下,进入该目录,使用 phpize 工具生成 configure 文件,phpize是安装 PHP 时自动生成的工具,默认安装于 /usr/local/bin 目录下。

/usr/local/bin/phpize

执行成功后,系统提示信息如下:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

php-5.2.17/ 目录下的 configure 文件删除,使用 buildconfig 工具重新生成包含 eaccelerator 编译选项的 configure 文件。首先,系统必须安装了 autoconf-2.13 工具,若未安装,可以通过 apt-get 工具自动安装。执行下述命令:

apt-getinstall autoconf-2.13

rm configure

./buildconf –force

生成的 configure 文件包含了 eaccelerator 的配置语句–enable-eaccelerator

重新执行 PHP 配置命令,并在最后加上 –enable-eaccelerator 参数。执行 make 时将出现如下错误:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

该错误可通过下述方法进行修改:

修改 eaccelerator 目录下 mm.c 文件,在文件开始处加入如下语句:

#defineMM_SEM_IPC 1

#defineMM_SHM_IPC 1

设置完成后,重新编译安装eAccelerator,问题解决。

要使 PHP 能够运行 eAccelerator,首先,需要修改php.ini 配置文件,并加入 eaccelerator 的配置信息,在该文件最后添加如下语句:

extension= eaccelerator.so

;eAccelerator

eaccelerator.shm_size= “16”

eaccelerator.cache_dir= “/tmp/eaccelerator”

eaccelerator.enable= “1”

eaccelerator.optimizer= “1”

eaccelerator.check_mtime= “1”

eaccelerator.debug= “0”

eaccelerator.filter= “”

eaccelerator.shm_max= “0”

eaccelerator.shm_ttl= “0”

eaccelerator.prune_period= “0”

eaccelerator.shm_only= “0”

eaccelerator.compress= “1”

eaccelerator.compress_level= “9”

最后,在网关 /tmp/ 目录下创建用于存放 eAccelerator 缓存文件的目录eaccelerator,并修改该目录权限为777

4 PHP外部 C 扩展

使用 PHP 的外部 C 扩展 将实现与外部库(C 库)的交互,另外,可以改善 PHP 脚本执行效率的问题。通常采用以下 3 种方式实现 C 扩展:

l  Built-in Modules   编译进 PHP

  好处:(1)不需要动态加载,模块在 php 脚本里面可以直接使用.

        (2)不需要将模块编译成.so 共享库,因为直接编译进 PHP。

  缺点:(1)对模块的改变都需要重新编译 PHP

        (2)因为编译进 PHP,所以 PHP 二进制文件较大,而且多占点内存

l  External Modules 外部模块,也就是编译成共享库,用 dl()函数动态加载。

  好处:(1)不需要重新编译 PHP

(2)PHP 体积小,因为不需要编译进 PHP

  缺点:(1)每次 *.php 脚本执行都需要用 dl()去加载,效率较低

(2)每次都要调用 dl()

l  The Zend Engine       Zend 核心里实现

下面介绍第一种 C 扩展方式 Built-in Modules。

创建 C 扩展框架

PHP 本身提供一个创建扩展框架的工具 ext_skel,该工具会生成 PHP 扩展必须的基本代码,位于 PHP 源码的 ext/ 目录下。创建一个名为 test 的扩展库,完成之后,将会生成 config.m4、test.c、php_test.h 等文件。

cd/home/username/share/php-5.2.17/ext/

./ext_skel–extname=test

cdtest

修改扩展库

修改 config.m4 文件,该文件是一个宏解释工具,将输入文件中的宏展开到输出文件,是 PHP 扩展框架所必须的,用来生成扩展所需的 makefile 文件。

将源码文件中的如下代码:

dnlPHP_ARG_ENABLE(test, whether to enable test support,

 dnl Make sure that the comment is aligned:

 dnl [–enable-test          Enabletest support])

替换为(dnl 在 m4 文件中起注释作用,即取消上述代码注释)

 PHP_ARG_ENABLE(test, whether to enable testsupport,

  Make sure that the comment is aligned:

  [–enable-test          Enabletest support])

注意:不要使用 PHP_ARG_WITH,可能会出现问题(提示 C 函数未定义)

修改 php_test.h 文件,在 PHP_FUNCTION(confirm_mysqlc_compiled); 语句下追加下述语句:(PHP_FUNCTION 是一个 Zend Macro,作用是声明一个 C 函数,使它在 PHP 脚本中可用,参数是函数的名字)

PHP_FUNCTION(test);

修改 test.c 文件,该文件为主程序文件,包含了 C 代码实现。首先,在 zend_function_entrytest_functions 函数中增加如下语句:

PHP_FE(test,NULL)

在文件最后,增加函数实现:

PHP_FUNCTION(test){

    long int a, b;

    long int result;

    if (zend_parse_parameters(ZEND_NUM_ARGS()TSRMLS_CC, “ll”, &a, &b) == FAILURE) {

        return;

    }

    result = hello_add(a, b);

    RETURN_LONG(result);

}

test 就是在 PHP 脚本中调用的函数名(不需与扩展库名相同),hello_add 函数包含在动态库 hello.so(需事先准备好)中,Linux 下打包.so 文件的 GCC 命令如下:

arm-linux-gcc-fPIC -O -c -o test.o test.c

arm-linux-gcc-shared -o libtest.so test.o

注意:需将生成的动态库置于交叉编译器的 Lib 目录下,或者放置于当前目录。zend_parse_parameters 的功能是从 PHP 脚本向该函数传递参数(类似于 scanf 函数),符号“ll”说明参数的数据类型。

重新编译 PHP

使用 buildconf 工具重新生成 configure 文件,实现包含 –enable-test 参数选项。

注意:由于使用了外部.so 动态库,在执行./configure 后,需要修改生成的 Makefile 文件,在 EXTRA_LIBS 中增加 -ltest 选项。

编译完成后,将 libs/ 目录下的 libphp5.so(使用 strip 工具瘦身)拷贝到网关 WEB 服务器配置目录下的 lib 子目录中。

最后,必须重新启动 AppWeb 服务器,使 PHP 内核加载自定义的扩展库。可以编写一个 PHP 脚本测试是否调用成功。

<?php

  echo test(3,9);

?>

相关支持库移植

主要包括 libiconv、zlib 以及加密服务组件 matrixssll。

下载 Embedthis 提供的第三方工具包,采用 gitGitHub获取 packages 软件包,命令如下。

gitclone http://github.com/embedthis/packages

如果下载失败,可以在直接在 https://github.com/embedthis/packages 中选择下载 ZIP 包,内容 包括:


APPWeb+PHP5+SQLite3 在 S3C6410 上移植

其中,libiconv-1.11zlibmatrixssl 中的 matrixssl1-8-8-open 被本次移植采用,php目录中的 PHP 版本较高,并且默认目标平台为 LinuxWindows平台,不支持交叉编译,编译时会出现诸多问题,本次移植并未采用。

1编译libiconv

libiconv库是编译 xmlrpc 必须的支持库,选择 libiconv-1.11 注意:最新版iocnv,编译时会可能会出现诸多问题,这里不建议采用。

首先设置 CCAR 等环境变量的路径(假设 arm-linux-gcc 工具安装在 /usr/local/arm/4.2.2-eabi/ 目录下),具体设置如下所示。

export CC=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc

export AR=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ar

export LD=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ld

export RANLIB=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-ranlib

export STRIP=/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-strip

export CC_FOR_BUILD=gcc

配置:

./configure –build=arm-linux –host=i686-linux –prefix=/usr/local/iconvarm

配置完成后,编译安装:

make

make install

–prefix参数指定 libconv 库安装的位置,在编译 PHP 时需要引用该位置。

2编译libz.so

zlibPHP 必须的支持库,这里采用的版本为 zlib-1.2.6 注意 CCAR 等环境变量选择为arm-linux-xx

./configure –prefix=/usr/local/zlib

配置成功之后,编译:

make clean

make

–prefix参数指定 libz 库安装的位置,编译 PHP 时,加入 –with-zlib-dir=/usr/local/zlib 编译参数。

3编译libxml2.so

源码包版本为 libxml2-2.7.4libxml2 库同样是 PHP 所必须的支持库。

./configure –build=arm-linux –host=i686-linux –disable-ipv6 –prefix=/usr/local/libxmlarm

配置成功之后,编译安装:

make

make install

 

编译 PHP

当上述支持库编译完成之后,进行 PHP 编译。注意 :上述编译得到的*.so 文件格式必须为如下形式:

libz.so.1.2.6: ELF 32-bit LSB shared object,ARM, version 1 (SYSV), dynamically linked, not stripped

另外,正常编译得到的库文件包含调试信息,可以使用 arm-linux-strip 工具去除不必要的调试信息,以减小文件体积。

PHP采用的版本为 PHP-5.2.17PHP-5.3.8 会出问题,如无法正常运行,服务器自动重启,建议采用此版本)。

PHP配置参数如下:

./configure –target=arm –host=arm-linux –disable-debug –disable-rpath –disable-cli–enable-bcmath –enable-calendar –disable-maintainer-zts  –enable-embed=shared –enable-ftp–enable-inline-optimization –enable-magic-quotes  –enable-safe-mode –enable-sockets  –enable-wddx –sysconfdir=/etc/appweb–with-pic –with-exec-dir=/etc/appweb/exec –with-regex=system –with-pear –with-xmlrpc  –with-zlib-dir=/usr/local/zlib  –with-libxml-dir=/usr/local/libxmlarm –with-iconv-dir=/usr/local/iconvarm/

注意 :在使能多线程模式,即附带参数–enable-maintainer-zts 编译时,报错信息如下:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

上述错误可以通过修改 configure 文件解决,修改内容如下:

{echo “configure: error: Your system seems to lack POSIXthreads.” 1>&2; exit 1;}
替换为:

{echo”configure: error: Your system seems to lack POSIX threads.”1>&2;}#exit 1; }

 

在多线程与单线程模式下,PHP脚本运行性能对比(由雅黑 PHP 探针测得数据),如下表所示。

2 PHP 性能对比

 

 

性能参数

单线程模型

ARM11 667MHz

多线程模型

ARM11 667MHz

美国 IXwebhosting.com

4 x Xeon E5530 @ 2.40GHz

整数运算能力检测
(1+ 1 运算 300 万次)

7.439s

15.547s

0.535s

浮点运算能力检测
(圆周率开平方 300 万次)

42.599s

无法测出

1.607s

数据 I / O 能力检测
(读取 10K 文件 1 万次)

0.961

11.112s

0.058s

通过上述对比分析,在单线程模式下系统性能好于多线程模式,所以本移植中 PHP 配置为单线程模式,另外 AppWeb 也需要禁用多线程模式。

配置完成之后,需要检查生成的 Makefile 文件,确保 CCCPP等环境变量指向交叉编译链,即arm-linux-xx,以及相关库文件和头文件的路径是否正确,正确配置信息如下图所示:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

配置成功之后,系统提示如下信息:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

编译安装:

make clean

make

make install

编译时如果出现如下错误,表示编译 PHP 的工具链并不是 arm-linux-gcc 而是 gcc,所以需要重新设置CCAR 等环境变量指向 arm-linux-xx 交叉工具链。

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

编译成功,系统提示信息如下:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

注意 :编译完成后不可执行make test,因为PHP 编译的目标为网关(ARM平台),所以运行时会报错。直接运行 makeinstall 进行安装即可。

安装完成后,在 libs/ 目录下生成 libphp5.so 动态库文件,使用 file 命令查看文件信息,如下所示:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

在未使用 strip 工具去除调试信息之前,本次编译的库文件大小为 12.5M,执行arm-linux-strip 得到的库文件大小仅为3.8M

数据库 SQLite3 移植

PHP5.2.27内部 SQLite 版本 v2,为了获得更多功能支持,采用外部 SQLite3 版本 sqlite3.7.11(通过PDO 方式访问)。

1 编译 SQLite3

首先,在源码 目录 下建立 build/ 目录,并进入

usrname@Ubuntu:~/sqlite3.7.11/sqlite3.6.1/$mkdirbuild

usename@ubuntu:~/sqlite3.7.11/sqlite3.7.11/$cdbuild

usename@ubuntu:~/sqlite3.7.11/ sqlite3.7.11/build/$ ../configure –host=arm-linux–prefix=$(pwd) –disable-tcl

usrname@ubuntu:~/sqlite3.7.11/ sqlite3.7.11/build/$make

usename@ubuntu:~/sqlite3.7.11/ sqlite3.7.11/build/$make install

使用 strip 工具去除动态库中的调试信息

usename@ubuntu:~/sqlite3.7.11/ sqlite3.7.11/build/$cd lib

usename@ubuntu:~/sqlite3.7.11/ sqlite3.7.11/build/lib/$ arm-linux-strip libsqlite3.so.0.8.6

2 拷贝文件至网关

将 lib 目录下的文件拷贝到网关 /usr/lib 目录中,并将 /bin 目录下的 sqlite3 拷贝至网关的 /usr/bin 目录下。

在网关运行 sqlite3

[root@urbetter/]# ./usr/bin/sqlite3

正确运行结果如下所示:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

3 应用程序编译

应用程序中使用 sqlite 接口时,首先必须包含相应的头文件“sqlite3.h”,另外,在编译应用程序时必须在编译参数中加入 sqlite 动态库的路径,如下所示。

$arm-linux-gcc -o test test.c -L/home/username/temp/ sqlite3.7.11/\

sqlite3.7.11/build/lib-I/home/hwwr/ sqlite-3.7.11\

sqlite3.7.11/build/include-Wall

另外,可以将动态库文件放入到所使用的交叉编译链的路径中:

$ sudocp -rP sqlite3.7.11/build/lib/libsqlite3.* /usr/local/\

arm/4.2.2-eabi/lib/

$ sudocp sqlite3.7.11/build/include/* /usr/local/arm/4.2.2-eabi/\

include/

完成上述配置后,编译应用程序时可使用如下编译参数。

$arm-linux-gcc -o test test.c -lsqlite3 –I/ usr/local/arm/4.2.2-eabi/\include

4 在 PHP 中添加 sqlite3 支持

编译安装完 SQLite,将在build 目录下生成相关的头文件以及库文件,所以,可以在编译 PHP 时加入 SQLite 的路径。使用 PDO 方式访问 sqlite 数据库,并且使 sqlite 采用 UTF-8 编码方式,具体配置参数如下所示。

–with-sqlite=shared

–enable-sqlite-utf8

–with-pdo-sqlite=/home/hwwr/share/sqlite-3.7.11/

AppWeb 服务器移植

AppWeb 是一个开源的,针对 安全性 要求较高的 HTTP Web 服务器。其主要特点有:

l 很小的内存消耗,快速响应,每秒可以处理超过 50 个页面请求。

l 支持 CGI;支持动态 WEB 页面,如 PHP 页面;支持嵌入式的 JavaScript;支持安全的通信,如 SSL(OpenSSL 或 MatrixSSL)

l 支持单线程和多线程运行模式。

1 修改配置参数

Appweb采用 稳定版本 appweb-src-3.3.24.0 版本编译时可能会出现问题)。AppWeb的配置参数如下:

./configure–host=arm-s3c6410-linux –build=i686-pc-linux –port=80 –type=RELEASE  –disable-multi-thread  –disable-access-log –disable-test –with-cgi=builtin –with-copy=builtin –with-auth=builtin–with-esp=builtin –with-upload=builtin –webDir=/www  –with-ejs=builtin–with-php=/home/hwwr/share/php-5.2.17/–with-matrixssl=/home/hwwr/share/ssl/matrixssl/matrixssl-1-8-8-open/–sysconfdir=/WebServer –prefix=/WebServer

注意 :由于PHP 被编译为单线程模式,所以 AppWeb 必须禁用多线程模式,即加入配置参数–disable-multi-thread

以上配置 产生 用于编译的 Makefile 文件,并生成相关服务程序、动态库以及模块;如果只需要静态文件则可加入–disable-shared –enable-static,编译后生成的服务程序较大,只生成静态库,没有模块,所以推荐生成动态版本。

选项 –webDir 用于指定网站的存放位置,webDir默认值为 /var/www/appweb-default。通过上述配置,服务器的网站根目录为/www,默认http 端口号为80

选项 –sysconfdir 用于设置配置文件的安装位置,–prefix指定 AppWeb 可执行文件和相关库的安装 位置 。另外,AppWeb 可执行文件被复制到 /etc/init.d 目录下。

2 编译AppWeb

Configure执行成功后,生成 Makefile 文件,此时直接在终端运行 make 命令进行编译,编译完成之后,将在 appweb-3.3.2 目录下的 binlibmodules 子目录中 生成 arm-s3c6410-linux 文件夹,该目录中包含生成的可执行文件、库文件及模块。

执行 make install 命令进行安装,安装完成,将生成 /WebServer/appweb 配置文件夹、/WebServer /lib/appweb脚本文件,更多文件信息可参考 /WebServer /lib/appweb 目录下的 fileList.txt 文件。

3AppWeb 移植至网关

将生成的 WebServer 目录复制到网关根目录下,打开 / WebServer /appweb 中的配置文件appweb.conf,并确认如下信息是否正确。

Listen80

DocumentRoot”/www”

DirectoryIndexindex.html

LoadModulePath”/ WebServer /lib/appweb/modules”

以上信息与 编译 时的配置参数相关,参数 DirectoryIndex 用于设置默认起始页。

将主机 /etc/init.d/appweb 目录复制到网关 /etc/init.d 目录下。

4 配置AppWeb

首先,注销(删除)配置文件 /WebServer /appweb/appweb.confGroupnogroup语句,否则运行时将报错。

配置 matrixssl 加密服务支持。修改 /WebServer /appweb/appweb.conf 文件,在 Include conf/modules/* 语句之后(对模块的定义必须在该标记之后)增加如下语句:

<ifSSL_MODULE>

    Listen 443    # SSL – dont remove comment

    LoadModule sslModule mod_ssl

    <VirtualHost *:443>

        DocumentRoot “/www”

        SSLEngine on

        # SSLCipherSuiteALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

        # SSLCipherSuite HIGH:RC4+SHA

        # Use an RC4-SHA cipher to mitigate theBEAST attack

        SSLCipherSuite HIGH:RC4+SHA

        SSLProtocol ALL -SSLV2

        SSLCertificateFile “/ WebServer/appweb/ssl/server.crt”

        SSLCertificateKeyFile “/ WebServer/appweb/ssl/server.key.pem”

    </VirtualHost>                                 

</if>

设置 https 监听 443 端口(即浏览器默认安全端口),SSL证书位于 /WebServer /appweb/ssl 目录下,注意 :该证书已经过期,所在使用https 访问时,出现如下安全提示:

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

选择 “继续浏览网站” 忽略该提示即可。

配置 error log(日志消息) 在调试 期间 ,配置appweb 应允许记录系统运行日志,如需取消则在 ./configure 时加入 –disable-log 配置参数。

修改 /WebServer /appweb/conf 目录下的 log.conf 文件,配置如下:

ErrorLog“/log/appweb/error.log”

LogLevel4

即配置日志保存于 /log/appweb 下的 error.log 文件,所以必须在网关根目录下创建 /log/appweb/error.log 文件。

配置 doc(在线文档),在开发阶段可以使用此功能。修改/ WebServer /appweb/conf 目录下的 doc.conf 文件,配置如下:

<ifDOC>

    Alias /doc/ “$DOCUMENT_ROOT/doc/”

</if>

doc 目录定位于网站根目录下。

配置 CGI,修改/ WebServer/appweb/conf/modules 目录下的 cgi.conf 文件,配置如下:

LoadModulecgiHandler mod_cgi

AddHandlercgiHandler .exe .cgi .cgi-nph .out .bat .cmd .pl .py

 

<Directory”$DOCUMENT_ROOT/cgi-bin”>

</Directory>

 

ScriptAlias/cgi-bin/ “$DOCUMENT_ROOT/cgi-bin”

配置完成之后 运行 Appweb 服务器:

/etc/init.d/appwebstart

通过浏览器访问网关 WEB 服务器,页面如下图所示。

APPWeb+PHP5+SQLite3 在 S3C6410 上移植

 

图 6 AppWeb 主页

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计13878字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7960423
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...