• Tengine安装(阿里baba的)-Nginx


    在先前的文章中介绍过Tengine,先前只是使用了运维人员配置好的内容,未自己进行过安装配置。周末闲来无事,对于Tengine进行了尝试性的安装。记录下面方便以后再做改进。

    Tengine官网上有个非常简单的教程,中间并未涉及到一些常用的设置,所以仅供参考。一下午为本人的安装步骤及过程。

    1、安装必要的编译环境好

    由于Tengine安装需要使用源代码自行编译,所以在安装前需要安装必要的编译工具:

     

    # yum update
    # yum install gcc gcc-c++ autoconf automake

    2、安装需要的组件

    A、PCRE

    PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx rewrite依赖于PCRE库,所以在安装Tengine前一定要先安装PCRE,最新版本的PCRE可在官网(http://www.pcre.org/)获取。具体安装流程为:

    :

    cd /usr/local/src
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
    tar zxvf pcre-8.36.tar.gz
    cd pcre-8.36
    ./configure --prefix=/usr/local/pcre
    make && make install

    附加信息:

    :

    源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。
    Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。其中–prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。
    如果配置–prefix,如:./configure –prefix=/usr/local/test,可以把所有资源文件放在/usr/local/test的路径中,不会杂乱。
    用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是make文件指定过uninstall。

    B、OpenSSL

    OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。,安装OpenSSL(http://www.openssl.org/source/)主要是为了让tengine支持Https的访问请求。具体是否安装看需求。

    复制代码 代码如下:

    cd /usr/local/src
    wget http://www.openssl.org/source/openssl-1.0.2.tar.gz
    tar zxvf openssl-1.0.2.tar.gz
    cd openssl-1.0.2.tar.gz
    ./configure --prefix=/usr/local/openssl
    make && make install

    C、Zlib

    Zlib是提供资料压缩之用的函式库,当Tengine想启用GZIP压缩的时候就需要使用到Zlib(http://www.zlib.net/)。

     

    cd /usr/local/src
    wget http://zlib.net/zlib-1.2.8.tar.gz
    tar zxvf zlib-1.2.8.tar.gz
    cd zlib-1.2.8.tar.gz
    ./configure --prefix=/usr/local/zlib
    make && make install

    D、jemalloc

    jemalloc(http://www.canonware.com/jemalloc/)是一个更好的内存管理工具,使用jemalloc可以更好的优化Tengine的内存管理。

    :

    cd /usr/local/src
    wget http://www.canonware.com/download/jemalloc/jemalloc-3.6.0.tar.bz2
    tar jxvf jemalloc-3.6.0.tar.bz2
    cd jemalloc-3.6.0.tar.bz2
    ./configure --prefix=/usr/local/jemalloc
    make && make install

    3、安装Tengine

    在主要核心的组件安装完毕以后就可以安装Tegine了,最新版本的Tegine可从官网(http://tengine.taobao.org/)获取。
    在编译安装前还需要做的一件事是添加一个专门的用户来执行Tengine。当然你也可以用root(不建议)。

    复制代码 代码如下:

    groupadd www-data
    useradd -s /sbin/nologin -g www-data www-data

    接下来才是进行安装:

     

    cd /usr/local/src
    wget http://tengine.taobao.org/download/tengine-2.1.0.tar.gz
    tar -zxvf tengine-2.1.0.tar.gz
    cd tengine-2.1.0
    ./configure --prefix=/usr/local/nginx
    --user=www-data
    --group=www-data
    --with-pcre=/usr/local/src/pcre-8.36
    --with-openssl=/usr/local/src/openssl-1.0.2
    --with-jemalloc=/usr/local/src/jemalloc-3.6.0
    --with-http_gzip_static_module
    --with-http_realip_module
    --with-http_stub_status_module
    --with-http_concat_module
    --with-zlib=/usr/local/src/zlib-1.2.8
    make && make install

    注意配置的时候 –with-pcre 、–with-openssl、–with-jemalloc、–with-zlib的路径为源文件的路径。

    4、配置Tengine,设置tengine自动启动

     
    #vim /etc/rc.d/init.d/nginx 
    #编辑启动文件添加下面内容
    #!/bin/bash
    # nginx Startup script for the Nginx HTTP Server
    # it is v.0.0.2 version.
    # chkconfig: - 85 15
    # description: Nginx is a high-performance web and proxy server.
    # It has a lot of features, but it's not for everyone.
    # processname: nginx
    # pidfile: /var/run/nginx.pid
    # config: /usr/local/nginx/conf/nginx.conf
    nginxd=/usr/local/nginx/sbin/nginx
    nginx_config=/usr/local/nginx/conf/nginx.conf
    nginx_pid=/usr/local/nginx/logs/nginx.pid
    RETVAL=0
    prog="nginx"
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Source networking configuration.
    . /etc/sysconfig/network
    # Check that networking is up.
    [ ${NETWORKING} = "no" ] && exit 0
    [ -x $nginxd ] || exit 0
    # Start nginx daemons functions.
    start() {
    if [ -e $nginx_pid ];then
    echo "nginx already running...."
    exit 1
    fi
    echo -n $"Starting $prog: "
    daemon $nginxd -c ${nginx_config}
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
    return $RETVAL
    }
    # Stop nginx daemons functions.
    stop() {
    echo -n $"Stopping $prog: "
    killproc $nginxd
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
    }
    reload() {
    echo -n $"Reloading $prog: "
    #kill -HUP `cat ${nginx_pid}`
    killproc $nginxd -HUP
    RETVAL=$?
    echo
    }
    # See how we were called.
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    reload)
    reload
    ;;
    restart)
    stop
    start
    ;;
    status)
    status $prog
    RETVAL=$?
    ;;
    *)
    echo $"Usage: $prog {start|stop|restart|reload|status|help}"
    exit 1
    esac
    exit $RETVAL

    保存退出

    复制代码 代码如下:

    chmod 775 /etc/rc.d/init.d/nginx #赋予文件执行权限
    chkconfig nginx on #设置开机启动
    service nginx restart #启动服务

     

     

     

     

     

     

     

     

     

    //-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    简介

    Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫网等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

    Tengine完全兼容Nginx,因此可以参照Nginx的方式来配置Tengine。


    一、获取安装包

    wget http://tengine.taobao.org/download/tengine-2.2.0.tar.gz

    二、安装依赖包

    yum install pcre pcre-devel zlib zlib-devel open openssl-devel gcc gcc-c++

    三、配置Nginx

       ./configure 
        --prefix=/usr/local/nginx 
        --pid-path=/usr/local/nginx/logs/nginx.pid 
        --error-log-path=/usr/local/logs/error.log 
        --http-log-path=/usr/local/logs/access.log 
        --with-http_gzip_static_module 
        --http-client-body-temp-path=/var/temp/nginx/client 
        --http-proxy-temp-path=/var/temp/nginx/proxy 
        --http-fastcgi-temp-path=/var/temp/nginx/fastcgi 
        --http-uwsgi-temp-path=/var/temp/nginx/uwsgi 
        --http-scgi-temp-path=/var/temp/nginx/scgi 
        --prefix=/usr/local/nginx 
        --pid-path=/usr/local/nginx/logs/nginx.pid 
        --error-log-path=/usr/local/logs/error.log 
        --http-log-path=/usr/local/logs/access.log 
        --with-http_gzip_static_module 
    部分模块配置安装在/var/temp/nginx,所以事先要在创建/var/temp/nginx目录
    

     

    四、编译&安装

    make;make install

    五、启动,停止,重新加载配置文件命令

    1.启动:直接运行nginx执行文件

    [root@localhost]/usr/local/nginx/sbin# ./nginx 
    [root@localhost]/usr/local/nginx/sbin# ps -aux|grep nginx
    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
    root      38247  0.0  0.1  46836  1124 ?        Ss   13:40   0:00 nginx: master process ./nginx
    nobody    38248  0.0  0.1  47276  1768 ?        S    13:40   0:00 nginx: worker process
    root      38251  0.0  0.0 103260   848 pts/1    S+   13:40   0:00 grep nginx
    

      

    启动时可以使用 -c 指定配置文件

    [root@localhost]/usr/local/nginx# sbin/nginx -c conf/nginx.conf
    [root@localhost]/usr/local/nginx# ps -aux|grep nginx
    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
    root      38450  0.0  0.1  46836  1124 ?        Ss   14:02   0:00 nginx: master process sbin/nginx -c conf/nginx.conf
    nobody    38451  0.0  0.1  47276  1768 ?        S    14:02   0:00 nginx: worker process        
    root      38453  0.0  0.0 103260   848 pts/1    S+   14:02   0:00 grep nginx
    

     

    2.平缓停止:./nginx -s quit 待当前工作做完再停止

    [root@localhost]/usr/local/nginx/sbin# ./nginx -s quit
    [root@localhost]/usr/local/nginx/sbin# ps -aux|grep nginx
    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
    root      38258  0.0  0.0 103260   844 pts/1    S+   13:43   0:00 grep nginx
    

     

    3.暴力停止:./nginx -s stop 或者直接 kill nginxPid nginxPid为nginx的进程号,可在nginx/logs/nginx.pid中查看

    [root@localhost]/usr/local/nginx/sbin# ./nginx -s stop
    [root@localhost]/usr/local/nginx/sbin# ps -aux |grep nginx
    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
    root      38272  0.0  0.0 103260   848 pts/1    S+   13:46   0:00 grep nginx
    [root@localhost]/usr/local/nginx/sbin# 
    [root@localhost]/usr/local/nginx/logs# ps -aux|grep nginx
    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
    root      38287  0.0  0.1  46836  1124 ?        Ss   13:47   0:00 nginx: master process ../sbin/nginx
    nobody    38288  0.0  0.1  47276  1768 ?        S    13:47   0:00 nginx: worker process
    root      38294  0.0  0.0 103260   848 pts/1    S+   13:48   0:00 grep nginx
    [root@localhost]/usr/local/nginx/logs# kill $(cat nginx.pid)
    [root@localhost]/usr/local/nginx/logs# ps -ef|grep nginx
    root      38298   2255  0 13:48 pts/1    00:00:00 grep nginx
    

     

    4.重新加载配置

    [root@localhost]/usr/local/nginx/sbin# ./nginx -s reload

    六、设置开机启动

    1. vi /etc/init.d/nginx (输入下面的代码)

    #!/bin/bash
    # nginx Startup script for the Nginx HTTP  Server
    # it is v.0.0.2 version.
    # chkconfig: - 85 15
    # description: Nginx is a  high-performance web and proxy server.
    #              It has a lot of features, but  it's not for everyone.
    # processname: nginx
    # pidfile: /var/run/nginx.pid
    # config:  /usr/local/nginx/conf/nginx.conf
    nginxd=/usr/local/nginx/sbin/nginx
    nginx_config=/usr/local/nginx/conf/nginx.conf
    nginx_pid=/usr/local/nginx/logs/nginx.pid
    RETVAL=0
    prog="nginx"
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Source networking configuration.
    . /etc/sysconfig/network
    # Check that networking is up.
    [ ${NETWORKING} = "no" ]  && exit 0
    [ -x $nginxd ] || exit 0
    # Start nginx daemons functions.
    start() {
    if [ -e $nginx_pid ];then
        echo "nginx already running...."
        exit 1
    fi
        echo -n $"Starting $prog: "
        daemon $nginxd -c ${nginx_config}
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
        return $RETVAL
    }
    # Stop nginx daemons functions.
    stop() {
             echo -n $"Stopping $prog: "
             killproc $nginxd
             RETVAL=$?
             echo
             [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx  /var/run/nginx.pid
    }
    # reload nginx service functions.
    reload() {
         echo -n $"Reloading $prog: "
         #kill -HUP `cat ${nginx_pid}`
         killproc $nginxd -HUP
         RETVAL=$?
         echo
    }
    # See how we were called.
    case "$1" in
    start)
             start
             ;;
    stop)
             stop
             ;;
    reload)
             reload
             ;;
    restart)
             stop
             start
             ;;
    status)
             status $prog
             RETVAL=$?
             ;;
    *)
             echo $"Usage: $prog {start|stop|restart|reload|status|help}"
             exit 1
    esac
    exit $RETVAL
    

     

    2. 更改执行权限

    chmod a+x /etc/init.d/nginx(a+x ==> all user can execute 所有用户可执行)

    3.加入到/etc/rc.local中,实现开机自启动

    vi /etc/rc.local 
    任意行加入:/etc/init.d/nginx start 
    保存退出: wq

    4.控制台操作方法

    [root@localhost]/usr/local/nginx# service nginx start
    正在启动 nginx:                                           [确定]
    [root@localhost]/usr/local/nginx# service nginx restart
    停止 nginx:                                               [确定]
    正在启动 nginx:                                           [确定]
    [root@localhost]/usr/local/nginx# service nginx reload
    重新载入 nginx:                                           [确定]
    [root@localhost]/usr/local/nginx# service nginx stop
    停止 nginx:                                               [确定]
    

      

    原文链接:http://blog.csdn.net/KingBoyWorld/article/details/62888918

  • 相关阅读:
    javaweb大文件上传
    java+大文件分段上传
    php文件断点上传
    java+断点续传
    .net断点续传
    PHP检测每一段代码执行时间
    javaScript阻止浏览器F5刷新
    PHP动态修改配置文件
    eval()计算某个字符串,js和jquery都可以使用
    php 访问java接口数据
  • 原文地址:https://www.cnblogs.com/chenjian/p/7628311.html
Copyright © 2020-2023  润新知