共计 13878 个字符,预计需要花费 35 分钟才能阅读完成。
相关支持库移植
主要包括 libiconv、zlib 以及加密服务组件 matrixssll。
下载 Embedthis 提供的第三方工具包,采用 git 从GitHub获取 packages 软件包,命令如下。
gitclone http://github.com/embedthis/packages
如果下载失败,可以在直接在 https://github.com/embedthis/packages 中选择下载 ZIP 包,内容 包括:
其中,libiconv-1.11、zlib和 matrixssl 中的 matrixssl1-8-8-open 被本次移植采用,php目录中的 PHP 版本较高,并且默认目标平台为 Linux 和Windows平台,不支持交叉编译,编译时会出现诸多问题,本次移植并未采用。
1编译libiconv
libiconv库是编译 xmlrpc 必须的支持库,选择 libiconv-1.11, 注意:最新版iocnv,编译时会可能会出现诸多问题,这里不建议采用。
首先设置 CC、AR 等环境变量的路径(假设 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
zlib是 PHP 必须的支持库,这里采用的版本为 zlib-1.2.6。 注意 :CC、AR 等环境变量选择为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.4,libxml2 库同样是 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.17(PHP-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 编译时,报错信息如下:
上述错误可以通过修改 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 |
整数运算能力检测 | 7.439s | 15.547s | 0.535s |
浮点运算能力检测 | 42.599s | 无法测出 | 1.607s |
数据 I / O 能力检测 | 0.961 | 11.112s | 0.058s |
通过上述对比分析,在单线程模式下系统性能好于多线程模式,所以本移植中 PHP 配置为单线程模式,另外 AppWeb 也需要禁用多线程模式。
配置完成之后,需要检查生成的 Makefile 文件,确保 CC 和CPP等环境变量指向交叉编译链,即arm-linux-xx,以及相关库文件和头文件的路径是否正确,正确配置信息如下图所示:
配置成功之后,系统提示如下信息:
编译安装:
make clean
make
make install
编译时如果出现如下错误,表示编译 PHP 的工具链并不是 arm-linux-gcc 而是 gcc,所以需要重新设置CC、AR 等环境变量指向 arm-linux-xx 交叉工具链。
编译成功,系统提示信息如下:
注意 :编译完成后不可执行make test,因为PHP 编译的目标为网关(ARM平台),所以运行时会报错。直接运行 makeinstall 进行安装即可。
安装完成后,在 libs/ 目录下生成 libphp5.so 动态库文件,使用 file 命令查看文件信息,如下所示:
编译 PHP 加速器 eAccelerator
eAccelerator是一款开源 PHP 加速器,优化动态内容缓存,提高 php 脚本的缓存性能,使 PHP 脚本在编译的状态下,对服务器的开销几乎完全消除;另外,可以实现脚本优化,加快脚本执行速率,最终使 PHP 程序代码执行效率提高 1 至10倍。
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
执行成功后,系统提示信息如下:
将 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 时将出现如下错误:
该错误可通过下述方法进行修改:
修改 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 提供的第三方工具包,采用 git 从GitHub获取 packages 软件包,命令如下。
gitclone http://github.com/embedthis/packages
如果下载失败,可以在直接在 https://github.com/embedthis/packages 中选择下载 ZIP 包,内容 包括:
其中,libiconv-1.11、zlib和 matrixssl 中的 matrixssl1-8-8-open 被本次移植采用,php目录中的 PHP 版本较高,并且默认目标平台为 Linux 和Windows平台,不支持交叉编译,编译时会出现诸多问题,本次移植并未采用。
1编译libiconv
libiconv库是编译 xmlrpc 必须的支持库,选择 libiconv-1.11, 注意:最新版iocnv,编译时会可能会出现诸多问题,这里不建议采用。
首先设置 CC、AR 等环境变量的路径(假设 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
zlib是 PHP 必须的支持库,这里采用的版本为 zlib-1.2.6。 注意 :CC、AR 等环境变量选择为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.4,libxml2 库同样是 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.17(PHP-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 编译时,报错信息如下:
上述错误可以通过修改 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 |
整数运算能力检测 | 7.439s | 15.547s | 0.535s |
浮点运算能力检测 | 42.599s | 无法测出 | 1.607s |
数据 I / O 能力检测 | 0.961 | 11.112s | 0.058s |
通过上述对比分析,在单线程模式下系统性能好于多线程模式,所以本移植中 PHP 配置为单线程模式,另外 AppWeb 也需要禁用多线程模式。
配置完成之后,需要检查生成的 Makefile 文件,确保 CC 和CPP等环境变量指向交叉编译链,即arm-linux-xx,以及相关库文件和头文件的路径是否正确,正确配置信息如下图所示:
配置成功之后,系统提示如下信息:
编译安装:
make clean
make
make install
编译时如果出现如下错误,表示编译 PHP 的工具链并不是 arm-linux-gcc 而是 gcc,所以需要重新设置CC、AR 等环境变量指向 arm-linux-xx 交叉工具链。
编译成功,系统提示信息如下:
注意 :编译完成后不可执行make test,因为PHP 编译的目标为网关(ARM平台),所以运行时会报错。直接运行 makeinstall 进行安装即可。
安装完成后,在 libs/ 目录下生成 libphp5.so 动态库文件,使用 file 命令查看文件信息,如下所示:
数据库 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
正确运行结果如下所示:
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.2(4.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 目录下的 bin、lib、modules 子目录中 生成 arm-s3c6410-linux 文件夹,该目录中包含生成的可执行文件、库文件及模块。
执行 make install 命令进行安装,安装完成,将生成 /WebServer/appweb 配置文件夹、/WebServer /lib/appweb脚本文件,更多文件信息可参考 /WebServer /lib/appweb 目录下的 fileList.txt 文件。
3 将 AppWeb 移植至网关
将生成的 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.conf 中Groupnogroup语句,否则运行时将报错。
配置 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 访问时,出现如下安全提示:
选择 “继续浏览网站” 忽略该提示即可。
配置 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 服务器,页面如下图所示。
图 6 AppWeb 主页