在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        在ARM Linux上使用Apache+PHP

        作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
        相信這篇文章同樣是國(guó)內(nèi)很難搜到的一個(gè)HOWTO(,截至到我寫出來(lái)之前),我的最初目的是在ARM上使用PHP,嘗試了Busybox的httpd,以及boa都沒(méi)有辦法很方便的和PHP接口,因此我狠下心來(lái),編譯了Apache。在ARM上使用PHP,好處僅僅是腳本比cgi好寫一些,付出的代價(jià)是速度和蝸牛一樣慢,不要指望很多人同時(shí)訪問(wèn)可以響應(yīng)得過(guò)來(lái)。
        另外說(shuō)件事,BLOG上的文章多了,經(jīng)常發(fā)現(xiàn)有人轉(zhuǎn)載,但是有的人卻不注出處……難道要我吧我的名字和郵件地址寫到文章的每一個(gè)部分嗎?也許國(guó)人就是這樣缺乏某種精神,在我看到的轉(zhuǎn)載我文章的BLOG中,基本都是網(wǎng)上各種ARM Linux文章的集合,不可否認(rèn)他們搜集的很好,但是看了這么多文章,連一點(diǎn)心得體會(huì)都沒(méi)有么,寫點(diǎn)原創(chuàng)的東西就這么難么?不管怎樣,我還是堅(jiān)持EE小站的風(fēng)格——原創(chuàng)性。下面開(kāi)始正題,本文分為三大部分,apache、php和配置。

        編譯apache
        下載apache 1.3.39(1.3.41有些bug,沒(méi)有辦法交叉編譯)
        下載地址http://apache.mirror.phpchina.com/httpd/apache_1.3.39.tar.bz2


        交叉編譯apache總體上需要兩個(gè)步驟:
        1.編譯本機(jī)代碼
        2.利用本機(jī)代碼進(jìn)行交叉編譯

        這是因?yàn)榫幾gapache時(shí),需要使用編譯生成的工具制作后續(xù)編譯使用的頭文件,交叉編譯的工具當(dāng)然沒(méi)有辦法在PC上運(yùn)行,因此,需要借用本機(jī)編譯生成的工具。假設(shè)為本機(jī)編譯的apache代碼已經(jīng)解壓縮到/home/lxz/apache-1.3.39-i586,為ARM編譯的apache代碼已經(jīng)解壓縮到/home/lxz/apache-1.3.39,交叉編譯器arm-linux-gcc已設(shè)缺省路徑,具體步驟還是用命令來(lái)說(shuō)明:

        # cd /home/lxz/apache-1.3.39-i586
        # ./configure

        因?yàn)閮H僅是借用下本機(jī)代碼,所以不用設(shè)置配置參數(shù),然后編譯

        # make

        等編譯完成后,就可以配置交叉編譯的apache了。apache的安裝位置為/usr/local/apache

        # cd /home/lxz/apache-1.3.39
        # CC=arm-linux-gcc ./configure --prefix=/usr/local/apache

        會(huì)出來(lái)這樣的提示,因?yàn)榻徊婢幾g的生成的testfunc這個(gè)工具不能在PC上執(zhí)行,但可以不理會(huì)它
        ./helpers/TestCompile: line 294: /home/lxz/apache-1.3.39/src/helpers/testfunc: cannot execute binary file
        打開(kāi)/home/lxz/apache-1.3.39/src/main/Makefile這個(gè)文件,找到這兩段代碼
        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
        /home/lxz/apache-1.3.39-i586/src/main/gen_uri_delims >uri_delims.h
        test_char.h: gen_test_char
        /home/lxz/apache-1.3.39-i586/src/main/gen_test_char >test_char.h
        這里借用了剛才編譯生成的本機(jī)代碼里的工具,然后

        # make

        這就編譯好了,下面是安裝。由于配置apache的時(shí)候“prefix”參數(shù)指定的安裝位置是/usr/local/apache,在PC上,訪問(wèn)/usr/local是需要有root權(quán)限的,需要切換到root用戶來(lái)進(jìn)行安裝。不建議將apache安裝到一個(gè)隨意的目錄然后拷貝,因?yàn)檫@樣會(huì)造成apache中的腳本調(diào)用位置的錯(cuò)誤。當(dāng)然,如果想要將apache安裝到一個(gè)PC和ARM Linux都能訪問(wèn)的固定位置,如/home/lxz/apache也可以。
        如果你不明白上面這段話在說(shuō)什么,那么請(qǐng)按照下面的步驟進(jìn)行操作。請(qǐng)確認(rèn)你的PC Linux上的/usr/local/apache這個(gè)目錄不存在PC上使用的apache,否則下面的步驟會(huì)使你PC Linux上的apache不可用。

        # su root

        輸入密碼

        # cd /home/lxz/apache-1.3.39/
        # make install
        # exit

        別忘了用exit退出root用戶模式,這樣,apache的文件就被安裝到PC上的/usr/local/apache了。接下來(lái)所要做的是將apache拷貝到ARM Linux根文件系統(tǒng),假設(shè)ARM Linux根文件系統(tǒng)在PC上的位置為/home/lxz/root,其中已經(jīng)有/usr/local這個(gè)目錄

        # cp -r /usr/local/apache /home/lxz/root/usr/local

        如果是一路看著我的BLOG建立起根文件系統(tǒng)的,接下來(lái)還必須建立nobody用戶和nogroup組,因?yàn)閍pache拒絕使用root用戶運(yùn)行。具體來(lái)說(shuō)就是在ARM Linux根文件系統(tǒng)上建立/etc/passwd和/etc/group兩個(gè)文件,怎么寫這兩個(gè)文件,可以google下。它們的內(nèi)容可以如下:

        /etc/passwd
        root::0:0:root:/:/bin/ash
        nobody::65534:65533:nobody:/:/bin/ash
        /etc/group
        nobody::65533:
        nogroup::65534:nobody
        root::0:
        users::100:
        當(dāng)然,如果你的ARM Linux根文件系統(tǒng)中有這兩個(gè)文件,那么你需要檢查一下是不是有nobody用戶和nogroup組。接下來(lái),可以制作文件系統(tǒng)映像并測(cè)試apache是否可以正常工作了,還是用命令來(lái)說(shuō)明。

        # mkfs.cramfs /home/lxz/root /home/lxz/root.img

        我一直用cramfs,SUSE 10.2自己就帶了mkfs.cramfs這個(gè)工具。燒寫或者加載文件系統(tǒng)映像的步驟我就不說(shuō)了,需要注意的是如果你使用了不可寫的文件系統(tǒng),如cramfs,需要把a(bǔ)pache的日志路徑掛載為臨時(shí)文件目錄,下面這幾條命令在ARM Linux上執(zhí)行。

        # mount -t tmpfs tmpfs /usr/local/apache/log

        然后就可以啟動(dòng)apache了

        # cd /usr/local/apache/bin
        # ./apachectl start

        假設(shè)ARM板的ip地址是192.168.5.118,在瀏覽器里輸入http://192.168.5.118:8080訪問(wèn)ARM板(不修改默認(rèn)配置,服務(wù)端口是8080)。apache的配置一會(huì)兒編譯了php再說(shuō)。

        編譯php
        首先下載php-4.4.8,下載地址:http://cn2.php.net/get/php-4.4.8.tar.bz2/from/this/mirror

        交叉編譯php同樣需要兩個(gè)步驟:
        1.編譯本機(jī)代碼
        2.利用本機(jī)代碼進(jìn)行交叉編譯

        原因我就不重復(fù)了,假設(shè)為本機(jī)編譯的php代碼已經(jīng)解壓縮到/home/lxz/php-4.4.8-i586,為ARM編譯的php代碼已經(jīng)解壓縮到/home/lxz/php-4.4.8,交叉編譯器arm-linux-gcc已設(shè)缺省路徑,具體步驟還是用命令來(lái)說(shuō)明:

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

        在編譯的同時(shí),可以打開(kāi)/home/lxz/php-4.4.8/configure這個(gè)文件,搜索“can not run test program while cross compiling”,會(huì)搜索到很多個(gè)這樣的結(jié)果:
        { 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; }
        這樣做的目的是直接無(wú)視交叉編譯測(cè)試程序錯(cuò)誤。另外,我使用的是arm-linux-gcc 3.4.1版,和代碼不太兼容。找到/home/lxz/php-4.4.8/Zend/zend_strtod.c的第238行
        #if defined(IEEE_LITTLE_ENDIAN) + defined(IEEE_BIG_ENDIAN) + defined(VAX) +
        defined(IBM) != 1
        Exactly one of IEEE_LITTLE_ENDIAN IEEE_BIG_ENDIAN, VAX, or
        IBM should be defined.
        #endif
        把這段改為
        #if defined(IEEE_LITTLE_ENDIAN) + defined(IEEE_BIG_ENDIAN) + defined(VAX) +
        defined(IBM) != 1
        //Exactly one of IEEE_LITTLE_ENDIAN IEEE_BIG_ENDIAN, VAX, or
        //IBM should be defined.
        #endif
        在本機(jī)php編譯完后,輸入如下命令

        # cd /home/lxz/php-4.4.8
        # CC=arm-linux-gcc ./configure --prefix=/usr/local/php --host=i586-suse-linux --target=arm-linux

        別以為可以編譯了,還有東西要修改,真汗啊……打開(kāi)/home/lxz/php-4.4.8/Makefile,找到這段
        install-pear-packages: $(top_builddir)/sapi/cli/php
        @$(top_builddir)/sapi/cli/php $(PEAR_INSTALL_FLAGS) /home/lxz/php-4.4.8/pear/install-pear.php -d "$(peardir)" -b "$(bindir)" /home/lxz/php-4.4.8/pear/packages/*.tar
        用上我們剛才編譯的本機(jī)php里的文件,把它改成
        install-pear-packages: /home/lxz/php-4.4.8-i586/sapi/cli/php
        @/home/lxz/php-4.4.8-i586/sapi/cli/php $(PEAR_INSTALL_FLAGS) /home/lxz/php-4.4.8/pear/install-pear.php -d "$(peardir)" -b "$(bindir)" /home/lxz/php-4.4.8/pear/packages/*.tar
        終于可以編譯了

        # make

        隨后和apache一樣,需要切換用戶,把php的文件安裝到/usr/local/php

        # su

        輸入密碼

        # cd /home/lxz/php-4.4.8
        # make install
        # exit

        這樣,php就編譯完成了。

        配置Apache和PHP
        接下來(lái)就需要修改配置文件,讓apache和php能夠鏈接起來(lái)工作。這個(gè)配置過(guò)程和Windows下使用apache+php的過(guò)程類似,因?yàn)槲也皇前補(bǔ)pache和php一起編譯的,只是讓apache認(rèn)識(shí)“.php”這個(gè)擴(kuò)展名,然后調(diào)用php。為了方便,直接給出apache的配置文件,配置文件的位置在ARM Linux文件系統(tǒng)的/usr/local/apache/conf/httpd.conf,其中紅色字是在默認(rèn)配置文件基礎(chǔ)上修改或添加的內(nèi)容。
        ServerType standalone
        ServerRoot "/usr/local/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 80
        User nobody
        Group nobody
        ServerAdmincosine@126.com
        DocumentRoot "/home/webroot"

        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/php/bin/"
        # 注意 "/usr/local/php/bin/" 中最后一個(gè)"/"不可少

        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

        php也有配置文件,但是修改起來(lái)比較簡(jiǎn)單,只需要把/home/lxz/php-4.4.8/php.ini-dist到ARM Linux文件系統(tǒng)的/usr/local/php/lib,并改名為php.ini,找到
        register_globals = Off
        修改為
        register_globals = On
        保存就可以了。
        如果你覺(jué)得上面的一切都很麻煩,可以在EE小站的SkyDrive下載我制作好的壓縮包,地址http://cid-4201fdc93932ddaf.skydrive.live.com/self.aspx/EE小站瑣碎文件/armv4-apache-php.tar.bz2,解壓縮到ARM Linux根文件系統(tǒng)的/。這個(gè)壓縮包包含apache 1.3.39和php 4.4.8,默認(rèn)的網(wǎng)頁(yè)服務(wù)器根目錄為/home/webroot,默認(rèn)監(jiān)聽(tīng)端口為80。


        關(guān)鍵詞: ARMLinuxApache+PH

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        ×

        “芯”朋友见面大会
        珠海|11.14|泰克“芯”朋友见面大会珠海站|泰克带您从测试角度看半导体的整条产业链,快来报名抢位吧>>