• Linux下源码安装并配置Nginx


    Linux下源码安装并配置Nginx

     

    实验环境

    1. 一台最小化安装的CentOS 7.3 虚拟机

    安装nginx

    安装nginx依赖包

    yum install -y pcre-devel zlib-devel openssl-devel wget gcc tree vim

    Nginx依赖于pcre、zlib、openssl,在编译前配置时如果有问题
    可以使用yum方式安装三个包(pcre-devel、zlib-devel、openssl-devel)

    从Nginx官网下载Nginx源码包

    wget http://nginx.org/download/nginx-1.12.2.tar.gz

    解压Nginx源码包到/root/nginx,并查看Nginx源文件结构

    tar -xzvf nginx-1.12.2.tar.gz

    /root/nginx目录进行编译前配置

    cd /root/nginx*
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module

    /root/nginx目录执行编译安装

    make && make install

    启动nginx

    关闭防火墙

    setenforce 0
    systemctl stop firewalld
    systemctl disable firewalld

    进入到安装目录/usr/local/nginx,查看目录结构

    cd /usr/local/nginx
    pwd
    ls

    启动Nginx

    /usr/local/nginx/sbin/nginx

    查看Nginx进程是否启动

    ps aux | grep nginx

    查看Nginx占用的端口号

    netstat -tlnp

    使用本地主机访问虚拟机上的Nginx服务器

    停止nginx

    停止Nginx的三种方式

    # 1. 立即停止Nginx服务
    /usr/local/nginx/sbin/nginx -s stop
    
    # 2.完成当前任务后停止
    /usr/local/nginx/sbin/nginx -s quit
    
    # 3.杀死Nginx进程
    killall nginx

    把nginx命令添加到环境变量

    使用软连接将nginx链接到/usr/local/sbin

    ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
    ll /usr/local/sbin/ | grep "nginx"

    显示当前环境变量PATH

    echo $PATH

    编辑.bash_profile文件

    vim ~/.bash_profile

    .bash_profile文件末尾加入以下内容

    export PATH=$PATH:/usr/local/nginx/sbin

    引用.bash_profile文件

    source ~/.bash_profile

    使用nginx命令

    # 启动nginx
    nginx
    # 停止nginx
    nginx -s quit

    nginx命令添加到系统服务

    创建并编辑文件/root/service-nginx.sh

    #!/bin/sh
    #
    # filename: service-nginx.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:      /etc/nginx/nginx.conf
    # config:      /etc/sysconfig/nginx
    # pidfile:     /var/run/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/sbin/nginx"
    nginx="/usr/local/sbin/nginx"
    prog=$(basename $nginx)
    
    #NGINX_CONF_FILE="/etc/nginx/nginx.conf"
    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:.*--user=" | sed 's/[^*]*--user=([^ ]*).*/1/g' -`
       if [ -n "$user" ]; then
          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
        fi
    }
    
    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
    # END

    /root/service-nginx.sh替换/etc/init.d/nginx

    mv /root/service-nginx.sh /etc/init.d/nginx

    赋予可执行限权

    chmod 755 /etc/init.d/nginx

    执行

    systemctl start nginx

    源码方式安装nginx,自动化安装脚本

    #!/bin/bash
    
    # installation configuration
    NGINX_VERSION=1.12.2
    NGINX_SRC_PATH=/root
    NGINX_BIN_PATH=/usr/local/nginx
    
    # disable firewall
    systemctl stop firewalld
    setenforce 0
    
    # installation dependence
    yum install -y pcre-devel zlib-devel openssl-devel wget gcc
    
    # download nginx source package
    cd ${NGINX_SRC_PATH}
    wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
    
    # unzip source package
    tar -xzvf nginx-${NGINX_VERSION}.tar.gz
    cd ./nginx-${NGINX_VERSION}
    
    # install nginx
    ./configure --prefix=${NGINX_BIN_PATH} --with-http_ssl_module
    make & make install
    
    # start nginx service
    cd ${NGINX_BIN_PATH}/sbin
    ./nginx
    
    # END

    本文链接:https://www.cnblogs.com/connect/p/nginx-install-src.html

  • 相关阅读:
    【排序】冒泡排序,C++实现
    【排序】选择排序,C++实现
    【排序】插入排序,C++实现
    【集成学习】 lightgbm原理
    leetcode1310
    leetcode1309
    leetcode1300
    leetcode1302
    leetcode1299
    leetcode1306
  • 原文地址:https://www.cnblogs.com/zengpeng/p/11557398.html
Copyright © 2020-2023  润新知