zoukankan      html  css  js  c++  java
  • Nginx在嵌入式系统中的应用

    -----------------本文转载自 http://blog.csdn.net/xteda/article/details/39708009 ----------------------------

    Technorati 标签:

    (作者 冯青华  信庭嵌入式工作室(www.xteda.com)- CEO Blog:http://blog.csdn.net/fqheda )

                                    <转载请注名来路>

    本文作为老技术人对国庆(2014.10.01)的献礼,有限开放,属于本工作室5A级保密文件,不提供技术咨询:

           Nginx("Engine X")作为世界第三大Web服务器,如果能应用到嵌入式系统中是多么美好的事情,如下将告诉你实现的可能, 实现(通过验证)最小硬件配置(300Mhz ARM9,128MB内存)。

    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.15autoccconf

               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.15auto ypessizeof

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

       补丁b-2:nginx-1.0.15auto ypessizeof

             ## Modify By XinTinG
            ##ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS
            ngx_test="gcc $CC_TEST_FLAGS $CC_AUX_FLAGS
                               -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
            ##eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
            ##if [ -x $NGX_AUTOTEST ]; then
            ##   ngx_size= `$NGX_AUTOTEST`
            ##    echo " $ngx_size bytes"
            ##fi

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

    补丁d:nginx-1.0.15configure

            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.15srcosunix gx_time.h

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

    补丁f:nginx-1.0.15srcosunix gx_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(可能需要修改),本移植已在全国各地近千台物联网(嵌入式)设备上良好运行(相当于每台设备安装了一个小型网站),不要轻易怀疑移植的正确性!

           (作者 冯青华  信庭嵌入式工作室(www.xteda.com)- CEO Blog:http://blog.csdn.net/fqheda )

                                    <转载请注名来路>

  • 相关阅读:
    洛谷-P1591 阶乘数码
    洛谷-P1328 生活大爆炸版石头剪刀布
    git的使用
    docker下载命令
    springboot学习笔记
    内部类被实例化才会被加载进内存测试
    springboot环境搭建遇到的问题
    Java多线程的锁机制
    spring JdbcTemplate学习
    多线程循环注意
  • 原文地址:https://www.cnblogs.com/cherishui/p/4229294.html
Copyright © 2011-2022 走看看