zoukankan      html  css  js  c++  java
  • CentOS 7 源码编译安装 Nginx

    这里安装的是nginx 1.14版本

    1.下载源码

    #下载
    wget http://nginx.org/download/nginx-1.14.0.tar.gz
    #解压
    tar -xzf nginx-1.14.0.tar.gz
    cd nginx-1.14.0
    

    2.安装编译环境

    yum update
    yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
    

    3.编译安装

    #添加用户和组
    groupadd www
    useradd -g www www
    
    #配置
    ./configure 
    --user=www 
    --group=www 
    --prefix=/usr/local/nginx 
    --with-http_ssl_module 
    --with-http_stub_status_module 
    --with-http_realip_module 
    --with-threads
    
    #编译
    make
    
    #安装
    make install
    

    4.验证

    /usr/local/nginx/sbin/nginx -V
    

    输出如下:

    nginx version: nginx/1.14.0
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) 
    built with OpenSSL 1.0.2k-fips  26 Jan 2017
    TLS SNI support enabled
    configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads
    

    5.创建软链接

    ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
    

    6.开机自启动

    vim /etc/init.d/nginx
    

    输入如下内容

    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemon
    #
    # chkconfig:   - 85 15
    # description:  NGINX is an HTTP(S) server, HTTP(S) reverse 
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /usr/local/nginx/conf/nginx.conf
    # config:      /etc/sysconfig/nginx
    # pidfile:     /usr/local/nginx/logs/nginx.pid
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Source networking configuration.
    . /etc/sysconfig/network
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    nginx="/usr/local/nginx/sbin/nginx"
    prog=$(basename $nginx)
    NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
    [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
    lockfile=/var/lock/subsys/nginx
    make_dirs() {
       # make required directories
       user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=([^ ]*).*/1/g' -`
       if [ -z "`grep $user /etc/passwd`" ]; then
           useradd -M -s /bin/nologin $user
       fi
       options=`$nginx -V 2>&1 | grep 'configure arguments:'`
       for opt in $options; do
           if [ `echo $opt | grep '.*-temp-path'` ]; then
               value=`echo $opt | cut -d "=" -f 2`
               if [ ! -d "$value" ]; then
                   # echo "creating" $value
                   mkdir -p $value && chown -R $user $value
               fi
           fi
       done
    }
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        make_dirs
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
    restart() {
        configtest || return $?
        stop
        sleep 1
        start
    }
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
    force_reload() {
        restart
    }
    configtest() {
      $nginx -t -c $NGINX_CONF_FILE
    }
    rh_status() {
        status $prog
    }
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
                ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
    esac
    

    赋予脚本可执行权限

    chmod a+x /etc/init.d/nginx
    

    将nginx服务加入chkconfig管理列表

    chkconfig --add /etc/init.d/nginx
    chkconfig nginx on
    # 启动
    systemctl start nginx
    

    7.测试

    curl localhost:80
    

    会有如下输出

    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
        body {
             35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h1>Welcome to nginx!</h1>
    <p>If you see this page, the nginx web server is successfully installed and
    working. Further configuration is required.</p>
    
    <p>For online documentation and support please refer to
    <a href="http://nginx.org/">nginx.org</a>.<br/>
    Commercial support is available at
    <a href="http://nginx.com/">nginx.com</a>.</p>
    
    <p><em>Thank you for using nginx.</em></p>
    </body>
    </html>
    
    

    8.配置优化

    下列配置在nginx.conf里与http节点同级

    cd /usr/local/nginx/conf
    vim nginx.conf
    
    user  www www;
    worker_processes auto;
    worker_rlimit_nofile 51200;
    
    events
        {
            use epoll;
            worker_connections 51200;
            multi_accept on;
        }
    

    http节点下加入下列配置,将会从指定目录加载配置文件

    include /etc/nginx/*.conf;
    

    9.常用命令

    # 启动
    systemctl start nginx
    # 查看状态
    systemctl status nginx
    # 停止
    systemctl stop nginx
    
    # 重载配置
    nginx -s reload
    # 测试配置是否正确
    nginx -t
    

    参考资料

    https://www.cnblogs.com/visec479/p/5145624.html

    https://www.cnblogs.com/whatmiss/p/7091220.html

  • 相关阅读:
    高德地图iOS SDK限制地图的缩放比例
    c++如何遍历删除map/vector里面的元素
    cocos2d-x与UIKit混合编程实现半透明效果
    cocos2d-x中的坑
    [redis]-redis查看key的大小(方法一在centos亲测通过)
    openssl 从cer文件中提取公钥
    SSL证书去除rsa私钥密码保护(.pem)
    RHEL8 CentOS8 下安装 MySQL 8.0<亲测>
    centos7+nginx使用Certbot让网站拥有https
    idea将javaweb项目部署到tomcat
  • 原文地址:https://www.cnblogs.com/stulzq/p/9291223.html
Copyright © 2011-2022 走看看