mini6410下移植apache+php

来源:互联网 发布:南京中国软件谷街道 编辑:程序博客网 时间:2024/06/05 14:15

一、apache的移植

1. 从http://www.apache.org/ 上下载apache_1.3.39.tar.gz,然后解压缩两次,两个目录命名为apache_1.3.39_x86和apache_1.3.39_arm。
2.进入apache_1.3.39_x86 运行:./configure
3. make 完成后不用make install
问题: htpasswd.c定义的静态函数和库函数类型冲突,可能是gcc版本太高的原因,既然是静态的把htpasswd.c的getline改成sgetline,只有一处调用该函数。

htpasswd.c:101:12: 错误:与‘getline’类型冲突
/usr/include/stdio.h:673:18: 附注:‘getline’的上一个声明在此
make[2]: *** [htpasswd.o] 错误 1
make[2]: 离开目录“/opt/FriendlyARM/mini6410/apache_1.3.39_x86/src/support”
make[1]: *** [build-support] 错误 1
make[1]: 离开目录“/opt/FriendlyARM/mini6410/apache_1.3.39_x86”
make: *** [build] 错误 2

同样的改htdigest.c 和logresolve.c

4.进入apache_1.3.39_arm
运行:
export CC="arm-linux-gcc"
./configure --prefix=/apachebin/ --without-execstrip --enable-module=so
make
然后运行make 命令,这时编译会在apache_1.3.39/src/main/gen_test_char处失败,因为arm版本该程序无法在本地机器运行,需要把前面编译的x86版本的apache_1.3.39/src/main/gen_test_char拷贝到这里,然后修改main下的Makefile,注释掉关于生成gen_test_char的命令。同样的把x86编译出来的gen_uri_delims考到main下,注释掉关于生成 gen_uri_delims的命令
,uri_delims.h和test_charh也考过来并注释掉其生成代码


继续make 出现 getline’类型冲突,解决方法和x86编译一样。
make install

ok了

还需要配置apache/conf/httpd.conf 来设置服务器的功能,见下面。

移植到rootfs中,由于配置apache的时候“prefix”参数指定的安装位置是/usr/local/apache_arm,所以制作好的文件在/usr/local/apache_arm中,将apache拷贝到rootfs中的usr/local/中


       将/apachebin文件夹拷至开发板

     # cp /usr/local/apache_arm  /nfsroot/rootfs/usr/local/apache_arm / -rf

二、PHP的安装

交叉编译php同样需要两个步骤:1.编译本机代码;2.利用本机代码进行交叉编译。原因我就不重复了,假设为本机编译的php代码已经解压缩到/home/sg131971/php-4.4.8-i586,为ARM编译的php代码已经解压缩到/home/ sg131971/php-4.4.8,交叉编译器arm-linux-gcc已设缺省路径,具体步骤还是用命令来说明:

# cd /home/sg131971/php-4.4.8-i586
# ./configure
# make

在编译的同时,可以打开/home/ sg131971/php-4.4.8/configure这个文件,搜索“can not run test program while cross compiling”,会搜索到很多个这样的结果:

{echo "configure: error: can not runtest program while cross compiling" 1>&2;exit 1;}

把它们都改为

{ echo "configure: error: can not runtest program while cross compiling" 1>&2; }

这样做的目的是直接无视交叉编译测试程序错误。

cd /home/sg131971/php-4.4.8
#CC=arm-linux-gcc ./configure--prefix=/usr/local/php_arm --host=arm-linux --target=arm-linux  --enable-sockets 

别以为可以编译了,还有东西要修改,打开/home/sg131971/php-4.4.8/Makefile,找到这段

install-pear-packages:$(top_builddir)/sapi/cli/php @$(top_builddir)/sapi/cli/php$(PEAR_INSTALL_FLAGS) /home/sg131971/php-4.4.8/pear/install-pear.php-d "$(peardir)" -b "$(bindir)" /home/sg131971/php-4.4.8/pear/packages/*.tar

用上我们刚才编译的本机php里的文件,把它改成

install-pear-packages: /home/sg131971/php-4.4.8-i586/sapi/cli/php @/home/sg131971/php-4.4.8-i586/sapi/cli/php$(PEAR_INSTALL_FLAGS) /home/sg131971/php-4.4.8/pear/install-pear.php -d"$(peardir)" -b "$(bindir)" /home/sg131971/php-4.4.8/pear/packages/*.tar

现在终于可以编译了

# cd /home/sg131971/php-4.4.8

# make
# make install
# exit

这样php就编译完成了。

Apache与PHP的配置

需要修改/nfsroot/rootfs/usr/local/apache_arm/conf/httpd.conf文件,此处我就直接将该文件贴出来来了!O(∩_∩)O~

[html]
  1. ServerType standalone  
  2. ServerRoot "/usr/local/apache_arm"  
  3. PidFile /usr/local/apache_arm/logs/httpd.pid  
  4. ScoreBoardFile /usr/local/apache_arm/logs/httpd.scoreboard  
  5. Timeout 300  
  6. KeepAlive On  
  7. MaxKeepAliveRequests 100  
  8. KeepAliveTimeout 15  
  9. MinSpareServers 5  
  10. MaxSpareServers 10  
  11. StartServers 5  
  12. MaxClients 150  
  13. MaxRequestsPerChild 0  
  14. User nobody  
  15. Group nobody  
  16. ServerAdmin sg131971@qq.com  
  17. ServerName www.whut.edu.cn  
  18. DocumentRoot "/usr/local/apache_arm/htdocs"  
  19. <Directory />  
  20.     Options FollowSymLinks  
  21.     AllowOverride None  
  22. </Directory>  
  23. <Directory "/usr/local/apache_arm/htdocs">  
  24.     Options Indexes FollowSymLinks MultiViews  
  25.     AllowOverride None  
  26.     Order allow,deny  
  27.     Allow from all  
  28. </Directory>  
  29. <IfModule mod_userdir.c>  
  30.     UserDir public_html  
  31. </IfModule>  
  32. <IfModule mod_dir.c>  
  33.     DirectoryIndex index.html  
  34.     DirectoryIndex index.php  
  35.     DirectoryIndex index.php3  
  36.     DirectoryIndex index.phtml  
  37. </IfModule>  
  38. AccessFileName .htaccess  
  39. <Files ~ "^\.ht">  
  40.     Order allow,deny  
  41.     Deny from all  
  42.     Satisfy All  
  43. </Files>  
  44. UseCanonicalName On  
  45. <IfModule mod_mime.c>  
  46.     TypesConfig /usr/local/apache_arm/conf/mime.types  
  47. </IfModule>  
  48. DefaultType text/plain  
  49. <IfModule mod_mime_magic.c>  
  50.     MIMEMagicFile /usr/local/apache_arm/conf/magic  
  51. </IfModule>  
  52. HostnameLookups Off  
  53. ErrorLog /usr/local/apache_arm/logs/error_log  
  54. LogLevel warn  
  55. LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined  
  56. LogFormat "%h %l %u %t \"%r\" %>s %b" common  
  57. LogFormat "%{Referer}i -> %U" referer  
  58. LogFormat "%{User-agent}i" agent  
  59. CustomLog /usr/local/apache_arm/logs/access_log common  
  60. ServerSignature On  
  61. <IfModule mod_alias.c>  
  62.     Alias /icons/ "/usr/local/apache_arm/icons/"  
  63.     <Directory "/usr/local/apache_arm/icons">  
  64.         Options Indexes MultiViews  
  65.         AllowOverride None  
  66.         Order allow,deny  
  67.         Allow from all  
  68.     </Directory>  
  69.     Alias /manual/ "/usr/local/apache_arm/htdocs/manual/"  
  70.     <Directory "/usr/local/apache_arm/htdocs/manual">  
  71.         Options Indexes FollowSymlinks MultiViews  
  72.         AllowOverride None  
  73.         Order allow,deny  
  74.         Allow from all  
  75.     </Directory>  
  76.     ScriptAlias /cgi-bin/ "/usr/local/apache_arm/cgi-bin/"  
  77.     ScriptAlias /php4/ "/usr/local/php_arm/bin/"  
  78.     <Directory "/usr/local/apache_arm/cgi-bin">  
  79.         AllowOverride None  
  80.         Options None  
  81.         Order allow,deny  
  82.         Allow from all  
  83.     </Directory>  
  84. </IfModule>  
  85. <IfModule mod_autoindex.c>  
  86.     IndexOptions FancyIndexing  
  87.     AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip  
  88.   
  89.     AddIconByType (TXT,/icons/text.gif) text/*  
  90.     AddIconByType (IMG,/icons/image2.gif) image/*  
  91.     AddIconByType (SND,/icons/sound2.gif) audio/*  
  92.     AddIconByType (VID,/icons/movie.gif) video/*  
  93.     AddIcon /icons/binary.gif .bin .exe  
  94.     AddIcon /icons/binhex.gif .hqx  
  95.     AddIcon /icons/tar.gif .tar  
  96.     AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv  
  97.     AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip  
  98.     AddIcon /icons/a.gif .ps .ai .eps  
  99.     AddIcon /icons/layout.gif .html .shtml .htm .pdf  
  100.     AddIcon /icons/text.gif .txt  
  101.     AddIcon /icons/c.gif .c  
  102.     AddIcon /icons/p.gif .pl .py  
  103.     AddIcon /icons/f.gif .for  
  104.     AddIcon /icons/dvi.gif .dvi  
  105.     AddIcon /icons/uuencoded.gif .uu  
  106.     AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl  
  107.     AddIcon /icons/tex.gif .tex  
  108.     AddIcon /icons/bomb.gif core  
  109.     AddIcon /icons/back.gif ..  
  110.     AddIcon /icons/hand.right.gif README  
  111.     AddIcon /icons/folder.gif ^^DIRECTORY^^  
  112.     AddIcon /icons/blank.gif ^^BLANKICON^^  
  113.     DefaultIcon /icons/unknown.gif  
  114.     ReadmeName README.html  
  115.     HeaderName HEADER.html  
  116.     IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t  
  117.   
  118. </IfModule>  
  119. <IfModule mod_mime.c>  
  120.     AddLanguage da .dk  
  121.     AddLanguage nl .nl  
  122.     AddLanguage en .en  
  123.     AddLanguage et .ee  
  124.     AddLanguage fr .fr  
  125.     AddLanguage de .de  
  126.     AddLanguage el .el  
  127.     AddLanguage he .he  
  128.     AddCharset ISO-8859-8 .iso8859-8  
  129.     AddLanguage it .it  
  130.     AddLanguage ja .ja  
  131.     AddCharset ISO-2022-JP .jis  
  132.     AddLanguage kr .kr  
  133.     AddCharset ISO-2022-KR .iso-kr  
  134.     AddLanguage nn .nn  
  135.     AddLanguage no .no  
  136.     AddLanguage pl .po  
  137.     AddCharset ISO-8859-2 .iso-pl  
  138.     AddLanguage pt .pt  
  139.     AddLanguage pt-br .pt-br  
  140.     AddLanguage ltz .lu  
  141.     AddLanguage ca .ca  
  142.     AddLanguage es .es  
  143.     AddLanguage sv .sv  
  144.     AddLanguage cs .cz .cs  
  145.     AddLanguage ru .ru  
  146.     AddLanguage zh-TW .zh-tw  
  147.     AddCharset Big5         .Big5    .big5  
  148.     AddCharset WINDOWS-1251 .cp-1251  
  149.     AddCharset CP866        .cp866  
  150.     AddCharset ISO-8859-5   .iso-ru  
  151.     AddCharset KOI8-R       .koi8-r  
  152.     AddCharset UCS-2        .ucs2  
  153.     AddCharset UCS-4        .ucs4  
  154.     AddCharset UTF-8        .utf8  
  155.     <IfModule mod_negotiation.c>  
  156.         LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw  
  157.     </IfModule>  
  158.     AddType application/x-tar .tgz  
  159.     AddType application/x-httpd-php .php3  
  160.     AddType application/x-httpd-php .php  
  161.     AddType application/x-httpd-php .phtml  
  162.     AddEncoding x-compress .Z  
  163.     AddEncoding x-gzip .gz .tgz  
  164. </IfModule>  
  165. Action application/x-httpd-php "/php4/php"  
  166. <IfModule mod_setenvif.c>  
  167.     BrowserMatch "Mozilla/2" nokeepalive  
  168.     BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0  
  169.     BrowserMatch "RealPlayer 4\.0" force-response-1.0  
  170.     BrowserMatch "Java/1\.0" force-response-1.0  
  171.     BrowserMatch "JDK/1\.0" force-response-1.0  
  172. </IfModule>  

然后还需要添加用户,修改开机启动文件。具体过程如下

[cpp] 
  1. kwrite /nfsroot/rootfs/etc/passwd   
  2.     /* 在最后添加以下内容 */  
  3.     root::0:0:root:/:/bin/ash   
  4.     nobody::65534:65533:nobody:/:/bin/ash  
  5. kwrite /nfsroot/rootfs/etc/group  
  6.     /* 在最后添加以下内容 */  
  7.     nobody::65533:  
  8.     nogroup::65534:nobody  
  9.     root::0:  
  10.     users::100:  
  11. /* 添加开机启动 */          
  12. kwrite /nfsroot/rootfs/etc/init.d/rcS  
  13.     /* 在最后添加以下内容 */  
  14.     cd /usr/local/apache_arm/bin  
  15.     ./apachectl start  
  16.     echo "                        " > /dev/tty1  
  17.     echo "Starting Apache..." > /dev/tty1  
  18.     sleep 1  

进入板子apachebin/bin文件夹,执行./httpd
测试主机 http://192.168.2.230:80    看是否能打开网页,会提示安装成功!

0 0