Nginx在嵌入式系统中的应用

1. 交叉编译PCRE库Nginx对PCRE库有依赖,PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括Perl 兼容的正则表达式库。这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的。

         下载: pcre-8.30.tar.bz2  (参考放置路劲:/home/fqheda/XT-linux/LXT5/Eweb/eweb-v3.0.3/)

         tar  -jxvf  pcre-8.30.tar.bz2

         chmod  -Rf  777 pcre-8.30

         cd pcre-8.30

         ./configure CC=arm-linux-gcc --host=arm-linux --prefix=/home/nginx

         make

         make install

      2. 交叉编译Nginx,Nginx不多做解释,假设"你懂的"。 
         下载: nginx-1.0.15.tar.gz  (参考放置路劲:/home/fqheda/XT-linux/LXT5/Eweb/eweb-v3.0.3/)

         tar  -zxvf  nginx-1.0.15.tar.gz

         chmod  -Rf  777 nginx-1.0.15

         cd nginx-1.0.15

      打补丁:

补丁a:nginx-1.0.15\auto\cc\conf

           case $NGX_CC_NAME in 
        arm-linux-gcc) 
            # Modify By XinTinG 
            # gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2

  补丁b-1:nginx-1.0.15\auto\types\sizeof

           ---------------------------------------- 
          checking for $ngx_type size 
          END 
         ## Modify By XinTinG 
         ngx_size=4

   补丁b-2:nginx-1.0.15\auto\types\sizeof

         ## Modify By XinTinG 
        ##ngx_test="CCCC_TEST_FLAGS CCAUXFLAGS ngxtest="gccCC_TEST_FLAGS CCAUXFLAGS oNGX_AUTOTEST NGXAUTOTEST.cNGX_LD_OPT ngx_feature_libs"             ##eval "ngx_test >> NGX_AUTOCONF_ERR 2>&1"             ##if [ -xNGX_AUTOTEST ]; then 
        ##   ngx_size= `NGX_AUTOTEST`             ##    echo "ngx_size bytes" 
        ##fi

  补丁c:nginx-1.0.15\auto\feature 
        yes) 
            # /bin/sh is used to intercept "Killed" or "Abort trap" messages 
            ##if /bin/sh -c NGXAUTOTEST>>NGX_AUTOCONF_ERR 2>&1; then 
                echo " found" 
                ngx_found=yes 
                if test -n "ngxfeaturename";thenhave=ngx_have_feature . auto/have 
                fi 
            ## Modify By XinTinG 
            ##else 
            ##    echo " found but is not working" 
            ##fi 
        ;;

补丁d:nginx-1.0.15\configure

        if test -z "$NGX_PLATFORM"; then 
            echo "checking for OS" 
           ##NGX_SYSTEM=`uname -s 2>/dev/null`    ## Modify By XinTinG 
           ##NGX_RELEASE=`uname -r 2>/dev/null` 
           ##NGX_MACHINE= "arm" ##`uname -m 2>/dev/null`

补丁e:nginx-1.0.15\src\os\unix\ngx_time.h

        #include <time.h>         // Modify By XinTinG 
        #include <ngx_config.h> 
        #include <ngx_core.h>

补丁f:nginx-1.0.15\src\os\unix\ngx_errno.h

        #define NGX_ECANCELED     ECANCELED 
        #define NGX_EILSEQ        EILSEQ 
        #define NGX_ENOMOREFILES  0 
        #define NGX_SYS_NERR      1       // Modify By XinTinG

     交叉编译:

       export CC=arm-linux-gcc 
       export LD=arm-linux-ld 
       export AR=arm-linux-ar 
       export NGX_SYSTEM=linux 
       export NGX_RELEASE=3.2-XT5 
       export NGX_MACHINE=arm

       cd nginx-1.0.15

       make clean

      ./configure --with-google_perftools_module --with-http_stub_status_module --prefix=/home/nginx --with-pcre=/home/fqheda/XT-linux/LXT5/Eweb/eweb-v3.0.3/pcre-8.30 --with-cc-opt="-O2 -Wall -Wpointer-arith -I/home/nginx/include" --with-ld-opt="-L/home/nginx/lib"

       make CPU=arm

       make install

     打安装包:

       cd /home

       tar -jcvf nginx.tar.bz2 nginx

    3. 安装运行Nginx (ARM板开发平台) 

      nginx.tar.bz2  解压到arm板linux shell控制台中home文件夹;

      定向nginx动态库位置 :  export LD_LIBRARY_PATH=/home/nginx/lib:$LD_LIBRARY_PATH

      启动nginx :  /home/nginx/sbin/nginx -c /home/nginx/conf/nginx.conf

        注:测试(http://arm_board_ip)前,请认真理解配置文件nginx.conf(可能需要修改),本移植已在全国各地近千台物联网(嵌入式)设备上良好运行(相当于每台设备安装了一个小型网站),不要轻易怀疑移植的正确性!

sitemap