首页 基于ARM11嵌入式WEB开发环境的搭建

基于ARM11嵌入式WEB开发环境的搭建

举报
开通vip

基于ARM11嵌入式WEB开发环境的搭建重邮东电·硬件部 2009-6-25 文件编号: CYDD-WEBJM 受控状态: 受控 程序版本: 受控期限: 永久 起草人: 起草日期: 审核人: 审核日期: 批准人: 批准日期: 分发号: CYDD-110303 分发日期: 密级: 机密 文档控制记录 序号 修改状态 修...

基于ARM11嵌入式WEB开发环境的搭建
重邮东电·硬件部 2009-6-25 文件编号: CYDD-WEBJM 受控状态: 受控 程序版本: 受控期限: 永久 起草人: 起草日期: 审核人: 审核日期: 批准人: 批准日期: 分发号: CYDD-110303 分发日期: 密级: 机密 文档控制记录 序号 修改状态 修改 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 修改人 完成时间 V1.0 创建文档 2011-11-11 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 2文档控制记录 31、引言 52、主机web开发环境搭建 52.1、安装开发包 52.1.1安装apache-1.3.39 52.1.2安装php-4.4.8 52.2、配置httpd.conf与php.ini文件 62.2.1 配置httpd.conf 102.2.2 配置php.ini文件 102.3、联机调试 113、基于ARM11嵌入式web开发环境的搭建 113.1配置ARM11的交叉编译环境 133.2、安装开发包 133.1.1交叉编译apache-1.3.39 163.1.2交叉编译PHP 213.2、配置httpd.conf与php.ini文件 213.2.1配置httpd.conf 253.2.2配置php.ini 253.3、联机调试 294、Apache与php文件结构 294.1、Apache文件结构 304.2、PHP文件结构 1、引言 目的:本文档旨在讲述如何在ARM11平台上搭建WEB开发环境的详细过程,主要是针对嵌入式下的WEB开发环境的搭建。 对象:嵌入式WEB开发环境搭建人员、界面 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 人员、PHP库接口封装人员 参考文档: 《基于Linux下的WEB设计学习文档(20110728).doc》- 《基于ARM11 嵌入式web开发环境的搭建(20110521).doc》- 《StmAtmV3.0嵌入式WEB PHP扩展库设计(20110727).doc》- 《Tiny6410刷机指南-20110810.pdf》 文档 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 : 对主机WEB开发环境的搭建,主要有以下几个用处: · 单独进行界面设计时,通过主机平台进行HTML、PHP开发代;主要原因:HTML、PHP语言并不依赖开发环境; · 在ARM11嵌入式WEB开发环境下,需要依赖主机WEB开发环境中的某些编译通过后的代码;其主要原因是:交叉编译时有些代码在主机上编不过,借助主机编译通过的一些二进制文件便迎刃而解。 对基于ARM11嵌入式WEB开发环境的搭建,本文档给出每个步骤可能出现的错误提示和解决方案;如果有一些新出现的问题,可以通过网上搜索解决方法解决。 2、主机web开发环境搭建 主机WEB环境搭建需要如下开发工具:(熟悉搭建的基本原理及相关配置) · 开发平台:Fedora + Linux 2.6 · 编译环境:gcc · 服务器开发包:apache-1.3.39 获取方式:http://www.apache.org/ · Php开发包:php-4.4.8 获取方式:http://php.net/downloads.php 2.1、安装开发包 假设开发包apache-1.3.39与php-4.4.8已拷贝到/usr/local/目录下。其中,apache服务器安装目录/usr/local/apache_test/apache,php安装目录/usr/local/apache_test/php (对安装目录用户可自定义指定,此处只是给出参考目录)。运行以下linux命令: [yanghong@yanghong stm_atm]$ cd /usr/local/ [yanghong@yanghonglocal]$ mkdir apache_test //创建安装目录 2.1.1安装apache-1.3.39 [yanghong@yanghong local] $tar xvf apache_1.3.39.tar.gz //解压缩安装apache开发包 [yanghong@yanghong local] $ cd apache_1.3.39 [yanghong@yanghong apache_1.3.39]$./configure --prefix=/usr/local/apache_test/apache --enable -module=so //apache安装配置,主要是指定apache安装路径 [yanghong@yanghong apache_1.3.39]$ make [yanghong@yanghong apache_1.3.39]$ make install 2.1.2安装php-4.4.8 [yanghong@yanghong apache_1.3.39]$cd /usr/local/ [yanghong@yanghong local]$ tar -jxvf php-4.4.8.tar.bz2 //解压缩安装php开发包 [yanghong@yanghong local]$cd php-4.4.8 [yanghong@yanghong php-4.4.8]$./configure --prefix=/usr/local/apache_test/php --with-apxs=/us/local /apache_test/apache/bin/apxs //php安装配置,主要是指定php安装路径,并指定apache与php的依赖关系 [yanghong@yanghong php-4.4.8]$ make [yanghong@yanghong php-4.4.8]$ make install 2.2、配置httpd.conf与php.ini文件 Apache服务器的配置工作,主要是体现在httpd.conf文件中,它将指定apache服务器的文件路径及其相互的依赖关系,以及如何与PHP解析器相关联;php的配置工作,其中在本项目中,最主要体现在php.ini文件中,指定php扩展库的路径。 注:对每次更新配置,需要重新启动服务器进程(./apachectl start)。 2.2.1 配置httpd.conf 1、打开目录 /usr/local/apache_test/apache/conf 2、打开httpd.conf文件进行如下配置:(其中1111标识为需要添加的部分) ServerType standalone #Root服务所在目录 ServerRoot "/usr/local/apache_test/apache" PidFile /usr/local/apache/logs/httpd.pid ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 MinSpareServers 5 MaxSpareServers 10 StartServers 5 MaxClients 150 MaxRequestsPerChild 0 #登陆服务器的端口号与用户名 Port 8080 User nobody Group nobody ServerAdmin yanghong_63@163.com #网站根目录 DocumentRoot "/usr/local/apache_test/apache/htdocs" Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all UserDir public_html #apache支持php解析 DirectoryIndex index.html DirectoryIndex index.php DirectoryIndex index.php3 DirectoryIndex index.phtml AccessFileName .htaccess Order allow,deny Deny from all Satisfy All UseCanonicalName On TypesConfig /usr/local/apache/conf/mime.types DefaultType text/plain MIMEMagicFile /usr/local/apache/conf/magic HostnameLookups Off ErrorLog /usr/local/apache/logs/error_log LogLevel warn LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent CustomLog /usr/local/apache/logs/access_log common ServerSignature On Alias /icons/ "/usr/local/apache/icons/" Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all Alias /manual/ "/usr/local/apache/htdocs/manual/" Options Indexes FollowSymlinks MultiViews AllowOverride None Order allow,deny Allow from all # 指定php解析器的路径及类型 ScriptAlias /cgi-bin/ "/usr/local/apache-test/apache/cgi-bin/" ScriptAlias /php4/ "/usr/local/apache_test/php/bin/" # 注意 "/usr/local/apache-test/php/bin/" 中最后一个"/"不可少 AllowOverride None Options None Order allow,deny Allow from all IndexOptions FancyIndexing AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip AddIconByType (TXT,/icons/text.gif) text/* AddIconByType (IMG,/icons/image2.gif) image/* AddIconByType (SND,/icons/sound2.gif) audio/* AddIconByType (VID,/icons/movie.gif) video/* AddIcon /icons/binary.gif .bin .exe AddIcon /icons/binhex.gif .hqx AddIcon /icons/tar.gif .tar AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip AddIcon /icons/a.gif .ps .ai .eps AddIcon /icons/layout.gif .html .shtml .htm .pdf AddIcon /icons/text.gif .txt AddIcon /icons/c.gif .c AddIcon /icons/p.gif .pl .py AddIcon /icons/f.gif .for AddIcon /icons/dvi.gif .dvi AddIcon /icons/uuencoded.gif .uu AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl AddIcon /icons/tex.gif .tex AddIcon /icons/bomb.gif core AddIcon /icons/back.gif .. AddIcon /icons/hand.right.gif README AddIcon /icons/folder.gif ^^DIRECTORY^^ AddIcon /icons/blank.gif ^^BLANKICON^^ DefaultIcon /icons/unknown.gif ReadmeName README.html HeaderName HEADER.html IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t AddLanguage da .dk AddLanguage nl .nl AddLanguage en .en AddLanguage et .ee AddLanguage fr .fr AddLanguage de .de AddLanguage el .el AddLanguage he .he AddCharset ISO-8859-8 .iso8859-8 AddLanguage it .it AddLanguage ja .ja AddCharset ISO-2022-JP .jis AddLanguage kr .kr AddCharset ISO-2022-KR .iso-kr AddLanguage nn .nn AddLanguage no .no AddLanguage pl .po AddCharset ISO-8859-2 .iso-pl AddLanguage pt .pt AddLanguage pt-br .pt-br AddLanguage ltz .lu AddLanguage ca .ca AddLanguage es .es AddLanguage sv .sv AddLanguage cs .cz .cs AddLanguage ru .ru AddLanguage zh-TW .zh-tw AddCharset Big5 .Big5 .big5 AddCharset WINDOWS-1251 .cp-1251 AddCharset CP866 .cp866 AddCharset ISO-8859-5 .iso-ru AddCharset KOI8-R .koi8-r AddCharset UCS-2 .ucs2 AddCharset UCS-4 .ucs4 AddCharset UTF-8 .utf8 LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw AddType application/x-tar .tgz AddType application/x-httpd-php .php3 AddType application/x-httpd-php .php AddType application/x-httpd-php .phtml AddEncoding x-compress .Z AddEncoding x-gzip .gz .tgz Action application/x-httpd-php "/php4/php" BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 2.2.2 配置php.ini文件 把/usr/local/php-4.4.8/php.ini-dist复制到/usr/local/apache_test/php/lib,并改名为php.ini,找到 register_globals = Off 修改为 register_globals = On 保存就可以了。 2.3、联机调试 [yanghong@yanghong bin]$ ./apachectl start [Tue May 17 11:08:49 2011] [alert] httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName ./apachectl start: httpd started 错误提示:需要修改httpd.conf文件中的Servername 解决方法:去掉其注释符#即可 Apache 1.3.39与PHP-4.4.8在PC机上测试已通过,且apache能解析PHP代码。其测试结果如下图所示。 3、基于ARM11嵌入式web开发环境的搭建 主机WEB环境搭建需要如下开发工具: · 开发平台 ARM11+Linux2.6 · 交叉编译环境arm-linux-gcc //需安装交叉编译环境 · 操作系统服务器开发包 apache-1.3.39 · Php开发包 php-4.4.8 3.1配置ARM11的交叉编译环境 1、交叉编译工具包:arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz 2、配置步骤: · [root@localhost local]# cd /tmp · [root@localhost tmp]# tar xvf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz -C / · [root@localhost /]# cd /opt/FriendlyARM/toolschain/4.5.1/ · [root@localhost 4.5.1]# pwd · 复制路径:/opt/FriendlyARM/toolschain/4.5.1 · 然后把编译器的路径加入系统环境变量: · [root@localhost 4.5.1]# vim /root/.bashrc · 编辑/root/.bashrc文件,在最后一行添加编译器路径:export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin/;如下图所示: · · 使环境变量生效 · root@localhost 4.5.1]# source /root/.bashrc · [root@localhost 4.5.1]# arm-linux-gcc –v 检查编译器是否成功,出现以下界面则按照成功: · · 到这步就完全安装完arm-linux-gcc 交叉编译器了! 3.2、安装开发包 3.1.1交叉编译apache-1.3.39 对嵌入式web的开发需要进行交叉编译,交叉编译apache总体上需要两个步骤: 1.编译本机代码; 2.交叉编译能在ARM11上运行的APACHE和PHP。 这是因为编译apache时,需要使用本机编译生成的工具(可执行二进制文件)作为交叉编译时使用,交叉编译的工具不能在PC上运行(可执行程序的环境不同)。因此,需要借用本机编译生成的工具。 假设为本机编译的apache代码已经解压缩到/usr/local/apache-pc/apache_1.3.39,为ARM11编译的apache代码已经解压缩到/usr/local/apache-ARM11/apache_1.3.39,交叉编译器arm-linux-gcc已设缺省路径,具体步骤还是用命令来说明: · 本机编译apache [yanghong@yanghong local]$ cd apache-pc/apache_1.3.39 [yanghong@yanghong apache_1.3.39]$ ./configure 因为仅仅是借用本机代码,所以不用设置configure配置参数 [yanghong@yanghong apache_1.3.39]$make · 交叉编译apache 交叉编译apache的安装位置为/usr/local/apache-ARM11/apache [yanghong@yanghong apache_1.3.39]$ cd /usr/local/apache-ARM11/apache_1.3.39 [yanghong@yanghong apache_1.3.39]$ CC=arm-linux-gcc ./configure --prefix=/usr/local/apache-arm 11/apache --enable-module=so 注1:会出来如下错误提示,因为交叉编译的生成的testfunc这个工具不能在PC上执行,可以不理会它。 错误提示: 解决方法1:(注意此处先修改Makefile的使用权限,不然修改无效) 打开/usr/local/apache-ARM11/apache_1.3.39/src/main/Makefile这个文件,找到这两段代码 uri_delims.h: gen_uri_delims ./gen_uri_delims >uri_delims.h test_char.h: gen_test_char ./gen_test_char >test_char.h 修改为 uri_delims.h: gen_uri_delims /usr/local/apache-pc/apache_1.3.39/src/main/gen_uri_delims >uri_delims.h test_char.h: gen_test_char /usr/local/apache-pc/apache_1.3.39/src/main/gen_test_char >test_char.h 这里借用了刚才编译生成的本机代码里的工具 解决方法2: [root@localhost main]# cd /usr/local/apache-pc/apache_1.3.39/src/main [root@localhost main]# cp gen_test_char gen_uri_delims /usr/local/apache-arm11/apache_1.3.39/src/main 接下来执行: [yanghong@yanghongapache_1.3.39]$make 出现以下错误: 解决办法: 根据提示找到arm-linux-gcc相关文件下的getline 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 所在地方,进行必要的注释,保证APACHE部分的getline函数处能够成功编译通过。 Apache-1.3.39已编译好,下面是安装。 [yanghong@yanghong apache_1.3.39] make install 这样apache的文件就被安装到PC上的/usr/local/apache-arm11/apache文件夹下面了,安装成功结果如下图: 3.1.2交叉编译PHP 交叉编译php同样需要两个步骤: 1.编译本机代码; 2.利用本机代码进行交叉编译; 原因不再重复,假设为本机编译的php代码已经解压缩到/usr/local/apache-pc/php-4.4.8,为ARM11编译的php代码已经解压缩到/usr/local/apache-ARM11/php-4.4.8,交叉编译器arm-linux-gcc已设缺省路径,具体步骤还是用命令来说明: · 本机编译php-4.4.8 [yanghong@yanghong php-4.4.8]$ cd /usr/local/apache-pc/php-4.4.8 [yanghong@yanghong php-4.4.8]$ ./configure [yanghong@yanghong php-4.4.8]$ make · 交叉编译php [yanghong@yanghong php-4.4.8]$ cd /usr/local/apache-ARM11/php-4.4.8 [yanghong@yanghong php-4.4.8]$CC=arm-linux-gcc ./configure --prefix=/usr/local/apache-arm11/php --with-apxs=/usr/local/apache-arm11/apache/bin/apxs 提示错误1: 解决方法1:打开脚本/usr/local/apache-ARM11/php-4.4.8/configure,搜索“checking for Apache 1.x module support via DS0 through APXS”进行如下代码的注释。 继续配置: [yanghong@yanghong php-4.4.8]$CC=arm-linux-gcc ./configure --prefix=/usr/local/apache-arm11/php --with-apxs=/usr/local/apache-arm11/apache/bin/apxs 错误提示2: 打开/usr/local/apache-ARM11/php-4.4.8/configure文件,搜索“can not run test program while cross compiling”,会搜索到很多个这样的结果: { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } 把它们都改为 { echo "configure: error: can not run test program while cross compiling" 1>&2; } 这样做的目的是直接无视交叉编译测试程序错误。 接下来进行编译: [yanghong@yanghong php-4.4.8]$ make 错误提示3: 此处会依次报出好几个缺少头文件的错误,经过仔细寻找,终于发现在/usr/local/apache-arm11/apache/include目录下。 解决办法:3: 根据错误提示,找到相关文件错误的位置,修改提示缺少文件出的绝对路径位置。 编译通过后,会出现以下界面,表示编译完成: 最后进行安装php: [yanghong@yanghong php-4.4.8]$make install 错误提示4:(此处原因不详,解决办法其实是试出来的) 解决办法4:(居然用最先测试时候搭建的apache目录下得httpd可以在此处通过) [root@localhost bin]# cd /usr/local/apache_test/apache/bin [root@localhost bin]# cp httpd /usr/local/apache-arm11/apache/bin/ cp:是否覆盖“/usr/local/apache-arm11/apache/bin/httpd”? y 继续:make install 错误提示5: 解决方法5: 打开/usr/local/apache-arm11/php-4.4.8/Makefile,找到这段 install-pear-packages: $(top_builddir)/sapi/cli/php @$(top_builddir)/sapi/cli/php $(PEAR_INSTALL_FLAGS) /usr/local/apache-ARM11/ php-4.4.8/pear/install-pear.php -d "$(peardir)" -b "$(bindir)" /usr/local/apache-ARM11/php-4.4.8/ pear/packages/*.tar 利用刚本机编译的php文件,修改代码为 install-pear-packages: /usr/local/apache-pc/php-4.4.8/sapi/cli/php @/usr/local/apache-pc/php-4.4.8/sapi/cli/php $(PEAR_INSTALL_FLAGS) /usr/local/ php-ARM11/php-4.4.8/pear/install-pear.php -d "$(peardir)" -b "$(bindir)" /usr/local/ php-ARM11/php-4.4.8/pear/packages/*.tar 继续安装: [yanghong@yanghong php-4.4.8]$make install 出现以下界面安装成功: 3.2、配置httpd.conf与php.ini文件 需要修改配置文件,让apache和php能够链接起来工作。因为我不是把apache和php一起编译的,需要让apache认识“.php”这个扩展名,然后调用php。 3.2.1配置httpd.conf 执行命令[yanghong@yanghong php-4.4.8]$cd /usr/local/apache-arm11/apache/conf 打开目录/usr/local/apache-arm11/apache/conf配置文件httpd.conf,并将其修改为: ServerType standalone #Root服务所在目录 ServerRoot "/usr/local/apache-arm11/apache" PidFile /usr/local/apache/logs/httpd.pid ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 MinSpareServers 5 MaxSpareServers 10 StartServers 5 MaxClients 150 MaxRequestsPerChild 0 Port 8080 User nobody Group nobody ServerAdmin yanghong_63@163.com #网站根目录 DocumentRoot "/usr/local/apache-arm11/apache/htdocs" Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all UserDir public_html DirectoryIndex index.html DirectoryIndex index.php DirectoryIndex index.php3 DirectoryIndex index.phtml AccessFileName .htaccess Order allow,deny Deny from all Satisfy All UseCanonicalName On TypesConfig /usr/local/apache/conf/mime.types DefaultType text/plain MIMEMagicFile /usr/local/apache/conf/magic HostnameLookups Off ErrorLog /usr/local/apache/logs/error_log LogLevel warn LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent CustomLog /usr/local/apache/logs/access_log common ServerSignature On Alias /icons/ "/usr/local/apache/icons/" Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all Alias /manual/ "/usr/local/apache/htdocs/manual/" Options Indexes FollowSymlinks MultiViews AllowOverride None Order allow,deny Allow from all ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" ScriptAlias /php4/ "/usr/local/apache-arm11/php/bin/" # 注意 "/usr/local/apache-arm11/php/bin/" 中最后一个"/"不可少 # LoadModule foo_module libexec/mod_foo.so LoadModule php4_module libexec/libphp4.so AllowOverride None Options None Order allow,deny Allow from all IndexOptions FancyIndexing AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip AddIconByType (TXT,/icons/text.gif) text/* AddIconByType (IMG,/icons/image2.gif) image/* AddIconByType (SND,/icons/sound2.gif) audio/* AddIconByType (VID,/icons/movie.gif) video/* AddIcon /icons/binary.gif .bin .exe AddIcon /icons/binhex.gif .hqx AddIcon /icons/tar.gif .tar AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip AddIcon /icons/a.gif .ps .ai .eps AddIcon /icons/layout.gif .html .shtml .htm .pdf AddIcon /icons/text.gif .txt AddIcon /icons/c.gif .c AddIcon /icons/p.gif .pl .py AddIcon /icons/f.gif .for AddIcon /icons/dvi.gif .dvi AddIcon /icons/uuencoded.gif .uu AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl AddIcon /icons/tex.gif .tex AddIcon /icons/bomb.gif core AddIcon /icons/back.gif .. AddIcon /icons/hand.right.gif README AddIcon /icons/folder.gif ^^DIRECTORY^^ AddIcon /icons/blank.gif ^^BLANKICON^^ DefaultIcon /icons/unknown.gif ReadmeName README.html HeaderName HEADER.html IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t AddLanguage da .dk AddLanguage nl .nl AddLanguage en .en AddLanguage et .ee AddLanguage fr .fr AddLanguage de .de AddLanguage el .el AddLanguage he .he AddCharset ISO-8859-8 .iso8859-8 AddLanguage it .it AddLanguage ja .ja AddCharset ISO-2022-JP .jis AddLanguage kr .kr AddCharset ISO-2022-KR .iso-kr AddLanguage nn .nn AddLanguage no .no AddLanguage pl .po AddCharset ISO-8859-2 .iso-pl AddLanguage pt .pt AddLanguage pt-br .pt-br AddLanguage ltz .lu AddLanguage ca .ca AddLanguage es .es AddLanguage sv .sv AddLanguage cs .cz .cs AddLanguage ru .ru AddLanguage zh-TW .zh-tw AddCharset Big5 .Big5 .big5 AddCharset WINDOWS-1251 .cp-1251 AddCharset CP866 .cp866 AddCharset ISO-8859-5 .iso-ru AddCharset KOI8-R .koi8-r AddCharset UCS-2 .ucs2 AddCharset UCS-4 .ucs4 AddCharset UTF-8 .utf8 LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw AddType application/x-tar .tgz AddType application/x-httpd-php .php3 AddType application/x-httpd-php .php AddType application/x-httpd-php .phtml AddEncoding x-compress .Z AddEncoding x-gzip .gz .tgz Action application/x-httpd-php "/php4/php" BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 3.2.2配置php.ini 将/usr/local/apache-ARM11/php-4.4.8/php.ini-dist复制到/usr/ local/apache-arm11/php/lib,并改名为php.ini,找到 register_globals = Off 修改为 register_globals = On 3.3、联机调试 第一步:将搭配好的apache和php打包: [root@localhost local]# tar cjvf apache-arm11.tar.bz2 apache-arm11 第二步:通过U盘或者SD卡: 拷贝至已经移植好操作系统的ARM11开发板的对应文件夹下(/usr/local/),已经移植好得操作系统能够支持USB和SD卡驱动读写了,具体的ARM11如何移植操作系统详见《Tiny6410刷机指南-20110810.pdf》 第三步:然后通过串口调试,切换至开发板终端文件目录下: [root@FriendlyARM /udisk]# cd /usr/local/ [root@FriendlyARM local]# tar xvf apache-arm11.tar.bz2 //解压文件夹 [root@FriendlyARM bin]# cd /apache-arm11/apache/bin/ [root@FriendlyARM bin]# ./apachectl start 提示出现以下错误: (此问题相关解决的方法原理不清楚,只是根据错误提示修改) 错误提示:可执行文件httpd运行时,可能会出现一个比较常见的问题: httpd: bad user name nobody。 解决方法:根据错误提示,修改源代码。 通过 id nobody 先找到nobody用户的uid、gid、groups 找到提示这个错误的位置是: /usr/local/apache-ARM11/apache_1.3.39/src/main/ util.c API_EXPORT(uid_t) ap_uname2id(const char *name) { #if defined(WIN32) || defined(NETWARE) return (1); #else struct passwd *ent; if (name[0] == '#') return (atoi(&name[1])); if (!(ent = getpwnam(name))) { fprintf(stderr, "%s: %s\n", ap_server_argv0, name); exit(1); } return (ent->pw_uid); #endif } 搜索getpwnam函数,/os/win32目录下的passwd.c找到该函数,由源码可知:此函数在不定义为WIN32时是不会被编译的(参见/os/win32/passwd.c),将上面的代码修改为: API_EXPORT(uid_t) ap_uname2id(const char *name) { #if defined(WIN32) || defined(NETWARE) return (1); #else struct passwd *ent; static struct passwd pw; if (name[0] == '#') return (atoi(&name[1])); if (!(ent = &pw)) { // if (!(ent = getpwnam(name))) { fprintf(stderr, "%s: bad user name %s\n", ap_server_argv0, name); exit(1); } ent->pw_uid = 99; return (ent->pw_uid); #endif } 同理,代码 ap_gname2id按照上面的方法修改为: API_EXPORT(gid_t) ap_gname2id(const char *name) { #if defined(WIN32) || defined(NETWARE) return (1); #else struct group *ent; static struct group gr; if (name[0] == '#') return (atoi(&name[1])); // if (!(ent = getgrnam(name))) { if (!(ent = &gr)) { fprintf(stderr, "%s: bad group name %s\n", ap_server_argv0, name); exit(1); } ent->gr_gid = 99; return (ent->gr_gid); #endif } 注:uid和gid必须和你新增的用户nobody的uid和gid保持一致,笔者此处uid=99、gid=99(此值用户可以根据需要自行设定)。经运行测试,一般是先创建nobody用户,再安装apache,否则无法识别用户nobody。 有关nobody用户的命令说明:adduser、useradd、id nobody 尽管这个方法治标不治本,但如果你不需要在nobody之外的其他用户使用,这个方法值得一试。 然后再回到:/usr/local/apache-arm11/apache_1.3.39目录下,从新编译、安装apache即可。 第四步:然后重复上述步骤重新打包,通过U盘或者SD卡转存到根文件系统目录下,从新运行即可。 最后,通过/etc/init.d/rcS文档可以把apache设置为开机启动…… 测试成功界面如下: 4、Apache与php文件结构 本章节主要是对NFS文件系统下的apache服务器、php解析器各文件目录的介绍及使用。对文件结构的理解,有助于我们对整个web开发过程中,各子页面文件的布局。 4.1、Apache文件结构 Apache服务器的主要文件结构如图4-1-1所示。 图 4-1-1 apache服务器文件结构 以下部分对各子目录进行详细的说明: · bin文件夹中存放可执行文件,我们主要关注的为脚本apachectl、可执行文件httpd以及apxs。 · cgi-bin文件夹中存放*.cgi文件,浏览器会到此文件夹找到相应的*.cgi代码执行。也就是说,我们进行cgi程序代码的开发时,应将不同功能模块(功能与HTTP界面关联)放到cgi-bin文件夹下自定义相应的目录下。在httpd.conf文件中,我们已配置其支持cgi功能。 · conf文件夹中存放配置文件,其中有我们非常关注的httpd.conf · htdocs文件夹中存放开发的*.htm与*.php文件。在此文件夹中,我们需要根据HTTP界面的功能模块建立相应的子目录,这样有利于我们的开发,对子目录的建立此处不作介绍,可参考相关文档。 · icons文件夹中主要是一些静态图片,用来构造页面。 · include文件夹中存放一些系统头文件*.h。 · libexec文件夹中存放共享库*.so · logs文件夹中存放如下文件,其主要文件如图4-1-2所示。 图 4-1-2 logs文件结构 其中,error_log为错误日记文件,在apache服务器出现报错时,均可到此文件下查找相应的原因,方便问题的解决。 4.2、PHP文件结构 Php解析器文件结构如图4-2-1所示。 图 4-2-1 php文件结构 · bin文件夹中存放可执行文件,我们主要关注的可执行文件php。 · include文件夹中存放一些php依赖模块的头文件*.h。 · lib文件夹中存放共享库。 · man文件夹为help帮助文档。 由此可见,对php文件夹,我们不需要进行相关的操作。在apache服务器中的httpd.conf配置文件中已经指定了依赖可执行文件php的目录,apache会自动加载php执行文件对*.php代码进行解析。 基于ARM11嵌入式WEB开发环境的搭建 ©版权所有 不得复制 术有限公司书面许可,任何人不得复制或泄露这些信息给其他未经授权的人。 北京沃泰丰通信技术有限公司 第 2 页 共 1页
本文档为【基于ARM11嵌入式WEB开发环境的搭建】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
北溟愚鱼
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:30
分类:工学
上传时间:2018-09-22
浏览量:8