logo资料库

Embedded Appweb移植 安装 应用.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
(一)appweb的简单功能介绍
(二)在Linux OS 下PC上的安装。
(三)CGI 应用介绍
(四)Basic and Digest Authentication 应用介绍
(五)httpPassword 的使用。
(六)将appweb2.4.2移植到s3c2440上
(七)关于一些错误的提示
Embedded Appweb 移植 安装 应用 (一)appweb 的简单功能介绍 网方网站:http://www.appwebserver.org/  主要功能特性(本文介绍下面彩色选项的简单应用)  Full HTTP/1.1 web server  Multi-threaded, event-driven core: fastest performance in its class  Dynamically loadable modules  Server-side JavaScript web framework  In-memory PHP module  In-process CGI as well as traditional CGI  Apache compatible configuration and logging  Basic and Digest Authentication  Secure Socket Layer (SSL/TLS)  Session state data management  HTTP Client program and library  ROMable web pages and configuration files  Cross-platform and portable  Embeddable in applications and devices (supports XIP)  Modular source code and documentation provided (二)在 Linux OS 下 PC 上的安装。 下载 http://www.appwebserver.org/products/appweb/doc.html appweb-src-2.4.2.tar.gz 源码包。解压,默认配置安装。 ./confiugure; make; make install 默认配置安装是支持 CGI 和 Authentication 功能模块的。默认安装路径为 /usr/local/ 配 置 文 件 所 在 路 径 为 /etc/appweb/ , appweb 默 认 主 页 路 径 /var/www/app-default 启动服务:/etc/init.d/appweb start
测试: 127.0.0.1:7777/ 或者 127.0.0.1:4443/ 出现缺省页面说明安装成功。(IP 也可 为机子实际 IP) 停止服务:/etc/init.d/appweb stop (三)CGI 应用介绍 Common gateway interface(CGI) 通用网关接口,一般用角本语言来写。Appweb 是 在配置文件中(缺省的是 appweb.conf 文件。也可以根据你的需要来定一个自己的配置文件) 通过 ScriptAlias 指令来指定一个 CGI 目录。如: ScriptAlias /cgi-bin/ $SERVER_ROOT/web/cgi-bin/ Note:web 为你放网页文件的根目录。假如在/cgi-bin 下有一个 CGI 文件名为 myCgi 你可以在浏览器中这样访问它 http://wwww.yourserver.com/cgi-bin/myCgi (wwww.yourserver.com 是你访问的这里只是一个样子 ) 下面是 CGI 配置文件中的信息说明。CGI 的配置常是这样 #加载 CGI 处理模块 LoadModule cgi libcgiModule #添加处理支持的角本扩展名 AddHandler cgiHandler .cgi .cgi-nph .bat .cmd .pl .py .sh #CGI 文件所在目录 ScriptAlias /cgi-bin/ "$DOCUMENT_ROOT/cgi-bin" #在扩展名与 mime type 这间形成一种对照映射关系 Action application/x-appweb-perl Action application/x-appweb-python Action application/x-appweb-sh /bin/sh /usr/bin/perl /usr/bin/python 在 Appweb 中 CGI 应用和书写的注意点 角本要遵守一定规则,不然 Appweb 的 CGI 解析器没法正确解析。 Bash perl 的一个小样例 #!/bin/bash echo "Content-Type: text/html" echo "Status: 200" echo "" echo "Sample CGI Output

CGI Appweb test

" exit 0 Perl 的样例 #!/usr/bin/perl #指定 server 与 broser 之间的 protocol,输出数据类型为 text/html,也就是 html 文件。
print "Content-type:text/html\n\n"; print ""; print ""; print "this is a test"; print ""; print "

OK ---appWeb CGI !"; print ""; #exit the program; Exit; 保证角本的可执行性,和其它的用户的可访问性。(可访问性对所有的 web 文件都应该 满足,不然当你在浏览器中访问时会出现你想不到的错误,还不知道是为什么。尤其在开 发板上应该注意这点),你可以先在 command line 上调试你的 CGI 脚本程序以保证它的正 确性和可执行性。 (四)Basic and Digest Authentication 应用介绍 Appweb 支持 basict 和 digest 两种类型的认证方式。 1) basic authentication 它使用纯文本文件传输用户名和密码,耗资源小。但极不安全,如果你的客户端支持 digest 认证,建议使用 digest 类型。 在配置文件中常常是这样: # 你要认证保护的目录 # 认证类型 AuthType digest(AuthType basic) 选一个即可 AuthType basic # 认证代号名,随便你取,在 httpPassword 时会用到 AuthName "TestAuth" # 储放用户名和密码的文件,可以是决对路径和相对路径 AuthUserFile users.db # 用户以什么方式生效,具体见官方文档说明 Require valid-user 2) Digest Authentication 它是一种较为理想的,取代 basic 类型的认证方式。它对用户和密码在传输中进行了一

些安全的处理。它的配置与 basic 唯一不同的是 AuthType 不一样。 (五)httpPassword 的使用。 httpPassword 用于在密码文件(users.db 上面配置文件中提到的)中创建用户名 密码,Digest 和 basic 授权认证都使用一个相同的授权文件,文件格式为: Enable/Disable: UserName: Realm: Password 字段说明 Enable/Disable: 字段值为 0 或 1 UserName:用户名 Realm:你要授权认证的作用域名,就是上面配置文件 AuthName 的名称。 Password: 用户密码,是用 MD5 加过密的。 下面是一个例子: 1:ZhangSan: TestAuth: 3cc654d84f2b4361fe45a0c92e3f0e0b 1)httpPassword 的命令行语法为: httpPassword [-c] [-p passWord] userFile realm username 创建密码文件 选项: -c -p passWord 使用一个具体的密码 -e -d 生效(缺省情况在密码文件 Enable/Disable 值为 1) 无效 (Enable/Disable 值为 0) userFile 为上在配置文件中定义的密码配置文件; Realm 就是配置文件中 authName 定义的名字; username 为用户名 -c 选项表示如果密码文件不存在就创建它,如果在就新建它,所以第一次用该命令时如果 用户密码文件不存在就要使用它,如果已经存在就要小心使用了。 -p 表示把用户密码一起输入。如 -p 123 就表示用户的密码为 123 如果没有-p 选项当你执行些命令时就会提示你输入用户名密码。 2)使用举例: httpPassword –p 123 /home/users.db authTest userA 就是用时创建的用户 userA 密码为 123 上面的命令等同 /home/users.db authTest userA $httpPassword $输入用户密码:123 $确认密码:123 (六)将 appweb2.4.2 移植到 s3c2440 上 一般编译 1) 写脚本指定交叉编译器 compileArm.sh
#!/bin/bash export CC="/usr/local/arm/3.4.1/bin/arm-linux-gcc" export AR="/usr/local/arm/3.4.1/bin/arm-linux-ar" export LD="/usr/local/arm/3.4.1/bin/arm-linux-ld" export RANLIB="/usr/local/arm/3.4.1/bin/arm-linux-ranlib" export STRIP="/usr/local/arm/3.4.1/bin/arm-linux-strip" export CC_FOR_BUILD="gcc" echo "@have done!" 执行上面的脚本。 为你 PC 上的 gcc 2) 进入源码包目录 ./configure --host=arm-s3c2440-linux --build=i686-pc-linux --enable-multi-thread --disable-shared --disable-shared-libc --enable-static --disable-ejs --disable-test --disable-access-log --disable-modules --with-cgi=builtin --with-auth=builtin --with-ssl=builtin --disable-samples --disable-log Make ; 3) 在 appweb 目录下有需要的配置文件和 web 目录下的缺省页面文件 在主目录 bin 下 arm-s3c2440-linux 下会生成一些可执行文件如 appweb,httpPassword groups.db server.crt server.key.pem 等。 将 appweb 目 录 下 appweb.conf mime.types 和 arm-s3c2440-linux 下的 appweb httpPassword(为了减小大小最好把你的可执行程序在 PC 在用 arm-linux-strip 处理一下 即:arm-linux-strip appweb)下载到目标板上,这里假 设下载到/home/appweb 下。将你的页面文件放在你指令的目录,如/var/www/web/ 修改 appweb.conf 配置文件。比如你的页面文件路径要改成你上面指定的路径 在/home/appweb 下执行如: 运行 ./appweb –f appweb.conf 启动服务 保持你的板子和 PC 机网络畅通,可以先用 ping 测试。 在 PC 机的浏览器中输入 http://板子 IP:7777/ 就可以看到缺省的主页文件了 关于 appweb 更具体的应用请见官方应用文档。 http://板子 IP:4443/ server.key users.db or (七)关于一些错误的提示 如果在应用中出现问题可以从以下几方面去考虑 1 是否有对该文件或目录的访问权限 2 配置文件是否正确 3 是否有运行的条件,比如一些必要的库 4 如果是 CGI 还要保证它的可执行性和书写的正确性。 一些常见的错误 Can not get the file list (可能就是没有访问权限) Can not run CGI process(可访问性,执行性,语法正确性是否满足)
分享到:
收藏