-----------------本文转载自 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. innobackupex 恢复实验

    [root@localhost backup]# pwd /backup [root@localhost backup]# ll 总用量 drwxr root root Jul : basebacku ...

  2. XCode4中的文本查找和文本替换功能

    转自:http://blog.csdn.net/zhuzhihai1988/article/details/7843186 1.如果是在打开的文档范围内:       查找: Command+ F   ...

  3. Python--动态类型

    函数的参数传递,本质上传递的是引用.比如说: def f(x): x = 100 print x a = 1 f(a) print a 输出结果为: 100 1 参数x是一个新的引用,指向a所指的对象 ...

  4. 关于消除MySQL输入错误后的警报声

    找到mysql安装目录中的 my.ini 配置文件,在[mysql]行的下面加入一行 no-beep 即可消除声音. [mysql] no-beep default-character-set=gb2 ...

  5. WPF 之 窗口间传参数

    有如下几种方式: 1) 声明个全局变量,就是App.xaml里面声明:在所有窗体里面都可以引用 Application.Current.Properties["ArgumentName&qu ...

  6. JS后退, JS返回上一页, JS返回下一页

    Javascript 返回上一页: 1. history.go(-1), 返回两个页面: history.go(-2); 2. history.back(). 3. window.history.fo ...

  7. js正则表达式验证账号手机号电话邮箱

    1.账号 规则:字母.数字.下划线组成,字母开头,4-16位. 表达式:/^[a-zA-z]\w{3,15}$/: 2.手机号 规则:11位数字,以1开头 表达式:/^1\d{10}$/ 3.电话号码 ...

  8. 1.6.9 UIMA Integration

    1. UIMA 集成 你可以使用solr集成Apache的非结构化信息管理架构(UIMA).UIMA可以让你定义自己的分析引擎通道,逐步添加元数据到文档的标注. 关于Solr UIMA的更多信息,参考 ...

  9. How to solve the SVDI SN Number Display Problem

    Yesterday we have learn how to find the SVDI Serial Number, today one of customer from UK look our a ...

  10. [Javascript] “||”和“&&”的灵活运用

    引用URL : http://my249645546.iteye.com/blog/1553202 你是否看到过这样的代码:a=a||""; 可能javascript初学者会对此感 ...