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

Technorati 标签: nginx ARM

(作者 冯青华  信庭嵌入式工作室(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.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="$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.15\auto\feature
        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.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(可能需要修改),本移植已在全国各地近千台物联网(嵌入式)设备上良好运行(相当于每台设备安装了一个小型网站),不要轻易怀疑移植的正确性!

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

                                <转载请注名来路>

Nginx在嵌入式系统中的应用的更多相关文章

  1. 用crontab、crond在嵌入式系统中添加定时任务

    在嵌入式系统中,定时任务通过crond和cronttab两个系统命令来联合执行. 其中crond是定时任务的守护进程,系统开始时是没有开启的.crontab主要作用是管理用户的crontab file ...

  2. nginx在windows系统中如何启动、重启、停止

    nginx在windows系统中如何启动.重启.停止   查看nginx的版本号:nginx -v 启动nginx:start nginx 快速停止或关闭nginx:nginx -s stop 正常停 ...

  3. volatile在嵌入式系统中的用法

    今天参加一家公司的嵌入式C语言笔试,其中有道主观题谈到在嵌入式系统中volatile变量的用法.平时学习C语言没怎么用到,只用到过static和extern的变量,很惭愧没答上来.嵌入式C语言笔试经常 ...

  4. 搭建属于你的家庭网络实时监控–HTML5在嵌入式系统中的应用&#183;高级篇

    *本文已刊登在<无线电>2014年第6期 <搭建属于你的在线实时採集系统>中已经对HTML5平台有了初步的认识,并基于此向大家展示了怎样将採集到的数据上传至网络.实现实时观測. ...

  5. linux kernel系列四:嵌入式系统中的文件系统以及MTD

    本节介绍File System和MTD技术 一 FS 熟知的FS有ext2,3,4.但是这些都是针对磁盘设备的.而ES中一般的存储设备为Flash,由于Flash的特殊性: Flash存储按照Bloc ...

  6. nginx在windows系统中启动、重启、停止,常用命令

    cmd终端在进入到nginx的安装目录下使用对应命令 查看nginx的版本号:nginx -v 启动nginx:start nginx 快速停止或关闭nginx:nginx -s stop 正常停止或 ...

  7. 嵌入式Linux驱动学习之路(一)嵌入式系统的软硬件架构

    硬件资料: 操作系统:(非虚拟机) zws@z-pc:~$ lsb_release -aNo LSB modules are available.Distributor ID: Ubuntu Desc ...

  8. Linux嵌入式系统与硬件平台的关系

    一. Linux嵌入式系统 操作系统是一种在计算机上运行的软件,它的主要任务是管理计算机上的系统资源,为用户提供使用计算机及其外部设备的接口.它存在的目的是为了管理所有硬件资源,并且提供应用软件一个合 ...

  9. 嵌入式系统图形库GUI核心模块介绍

    本文转载自:http://blog.csdn.net/xteda/article/details/6575278 (作者 冯青华 信庭嵌入式工作室(www.xteda.com)- CEO Blog:h ...

随机推荐

  1. linux 文件系统的管理 (硬盘) 工作原理

    一.系统在初始化时如何识别硬盘 1.系统初始时根据MBR的信息来识别硬盘,其中包括了一些执行文件就来载入系统,这些执行文件就是MBR里前面446bytes里的boot loader 程式,而后面的16 ...

  2. Linux下的Libsvm使用历程录

    原文:http://blog.csdn.net/meredith_leaf/article/details/6714144 Linux下的Libsvm使用历程录 首先下载Libsvm.Python和G ...

  3. 1.5.8 语言分析器(Analyzer)

    语言分析器(Analyzer) 这部分包含了分词器(tokenizer)和过滤器(filter)关于字符转换和使用指定语言的相关信息.对于欧洲语言来说,tokenizer是相当直接的,Tokens被空 ...

  4. solr 竞价排行

    在理想的情况下,搜索引擎只返回与用户查询相关的文档.而在现实的查询中,编辑(没发现更合适的表达)通常需要指定特定文档在搜索结果中的特定位置.这样做有很多原因.或许 “置顶” 的文档就是最好的查询结果. ...

  5. JD轮播图代码

    <!DOCTYPE html>   <html>   <head>   <title>jd网站的轮播图效果</title>   <me ...

  6. 不停服务情况下升级nginx

    第三方支付平台因安全问题对nginx做了升级操作,为了不影响业务,整个操作过程都不能停服务,因此对升级方法做出了要求.以下为我整理的生产环境实际操作方法,已在第三方支付平台上成功应用,希望对即将或者可 ...

  7. VMware系统运维(十九)部署虚拟化桌面 Horizon View 5.2 通过手持设备进行连接测试

    1.打开连接程序View,设置连接服务器的IP地址,点击连接,在这里输入连接的用户名密码,点击"连接" 2.正在载入桌面中...... 3.连接成功,个人建议,手机支持OTG的可以 ...

  8. oracle PL/SQL(procedure language/SQL)程序设计

    PL/SQL(procedure language/SQL)语言是Oracle对SQL语言的过程化扩充,是一个完整的编程语言.PL/SQL实现了过程化语句(如分支.循环等)与SQL语句的无缝连接,将过 ...

  9. Spring Data Jpa 详解 (配置篇)

    前言: JPA全称Java Persistence API,即Java持久化API,它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据,结合其他ORM的使用,能达到简化开发 ...

  10. CentOS里下载百度网盘 / 360 网盘资源的方法

    wget -c --referer=引用地址 -O 文件名 "真实下载地址" 例如,我下载资源原在的页面为http://pan.baidu.com/s/1cfJXZ ,实际下载地址 ...