• Nginx详解(一) 从零开始编译安装


    本测试环境为:CentOS Linux release 8.2.2004 (Core)

    Step1:安装编译所需的软件包:

    [root@LFS ~]# yum install gcc-c++ make automake
    [root@LFS ~]# yum install -y pcre pcre-devel
    [root@LFS ~]# yum install -y zlib zlib-devel
    [root@LFS ~]# yum install -y openssl openssl-devel 

    Step2:下载源代码包:

    [root@LFS lfs]# wget http://nginx.org/download/nginx-1.19.2.tar.gz

    [root@LFS lfs]# tar zxvf nginx-1.19.2.tar.gz

    [root@LFS lfs]# cd nginx-1.19.2

    Step3:编译安装:

    [root@LFS lfs]# cd nginx-1.19.2
    [root@LFS nginx-1.19.2]# ./configure --prefix=/usr/local/nginx 

    --conf-path=/usr/local/nginx/etc/nginx.conf
    --user=nginx --group=nginx
    --error-log-path=/usr/local/nginx/nginxlog/error.log
    --http-log-path=/usr/local/nginx/nginxlog/access.log
    --pid-path=/usr/local/nginx/pids/nginx.pid
    --lock-path=/usr/local/nginx/locks/nginx.lock
    --with-http_ssl_module
    --with-http_stub_status_module
    --with-http_gzip_static_module
    --http-client-body-temp-path=/usr/local/nginx/tmp/client
    --http-proxy-temp-path=/usr/local/nginx/tmp/proxy
    --http-fastcgi-temp-path=/usr/local/nginx/tmp/fastcgi
    --http-uwsgi-temp-path=/usr/local/nginx/tmp/uwsgi
    --http-scgi-temp-path=/usr/local/nginx/tmp/scgi

    [root@LFS nginx-1.19.2]# mkdir -pv /usr/local/nginx/tmp/{client,proxy,fastcgi,uwsgi,scgi}
    mkdir: created directory '/usr/local/nginx/tmp'
    mkdir: created directory '/usr/local/nginx/tmp/client'
    mkdir: created directory '/usr/local/nginx/tmp/proxy'
    mkdir: created directory '/usr/local/nginx/tmp/fastcgi'
    mkdir: created directory '/usr/local/nginx/tmp/uwsgi'
    mkdir: created directory '/usr/local/nginx/tmp/scgi'

    Step4:启动服务:

    [root@LFS nginx-1.19.2]# /usr/local/nginx/sbin/nginx
    nginx: [emerg] getpwnam("nginx") failed

    解决方法:

    [root@LFS nginx-1.19.2]# useradd -s /sbin/nologin -M nginx

    Step5:配置开机启动:

    [root@LFS nginx-1.19.2]# vim /etc/init.d/nginx

    #!/bin/bash
    # nginx     This shell script takes care of starting and stopping
    #           nginx
    #
    # chkconfig: - 13 68
    # description: nginx is a web server
    ### BEGIN INIT INFO
    # Provides: $named
    # Short-Description: start|stop|status|restart|configtest
    ### END INIT INFO
    #variables
    NGINX_BIN="/usr/local/nginx/sbin/nginx"
    NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
    NGINX_PID="/usr/local/nginx/logs/nginx.pid"
    NETSTAT="/bin/netstat"
    alter=$1
    prog=nginx
    #load system function
    . /etc/rc.d/init.d/functions
    #function:echo ok or error
    function if_no {
    if [ $2 == 0 ]; then
    echo -n $"$1 ${prog}:" && success && echo
    else
    echo -n $"$1 ${prog}:" && failure && echo
    fi
    }
    #start nginx
    function start {
    rm -f ${NGINX_PID} 2>/dev/null
    if [ -s ${NGINX_PID} ]; then
    echo "nginx already running"
    else
    if [ `${NETSTAT} -tnpl | grep nginx | wc -l` -eq 0 ]; then
    rm -f ${NGINX_PID} 2>/dev/null
    ${NGINX_BIN} -c ${NGINX_CONF}
    if_no start $?
            else
    ${NETSTAT} -tnpl | grep nginx | awk '{ print $7}' | cut -d '/' -f 1 > ${NGINX_PID}
    if_no start $?
    fi
    fi
    }
    #stp nginx
    function stop {
    if [ -s ${NGINX_PID} ]; then
    cat ${NGINX_PID} | xargs kill -QUIT
    if_no stop $?
    else
            if [ `${NETSTAT} -tnpl | grep nginx | wc -l` -eq 0 ]; then
    rm -f ${NGINX_PID} 2>/dev/null
    if_no stop 0
    else
    rm -f ${NGINX_PID} 2>/dev/null
    kill `${NETSTAT} -tnpl | grep nginx | awk '{ print $7}' | cut -d '/' -f 1`
    if_no stop $?
    fi
    fi
    }
    function restart {
    if [ -s ${NGINX_PID} ]; then
    cat ${NGINX_PID} | xargs kill -HUP
    if_no restart $?
    else
    stop
    sleep 1
    #!/bin/bash
    # nginx     This shell script takes care of starting and stopping
    #           nginx
    #
    # chkconfig: - 13 68
    # description: nginx is a web server
    ### BEGIN INIT INFO
    # Provides: $named
    # Short-Description: start|stop|status|restart|configtest
    ### END INIT INFO
    #variables
    NGINX_BIN="/usr/local/nginx/sbin/nginx"
    NGINX_CONF="/usr/local/nginx/etc/nginx.conf"
    NGINX_PID="/usr/local/nginx/pids/nginx.pid"
    NETSTAT="/bin/netstat"
    alter=$1
    prog=nginx
    #load system function
    . /etc/rc.d/init.d/functions
    #function:echo ok or error
    function if_no {
    if [ $2 == 0 ]; then
    echo -n $"$1 ${prog}:" && success && echo
    else
    echo -n $"$1 ${prog}:" && failure && echo
    fi
    }
    #start nginx
    function start {
    rm -f ${NGINX_PID} 2>/dev/null

     Step6:修改启动项

    [root@LFS nginx-1.19.2]# chmod +x /etc/init.d/nginx
    [root@LFS nginx-1.19.2]# chkconfig --add nginx
    [root@LFS nginx-1.19.2]# chkconfig --level 35 nginx on

    执行启动、状态、关闭、重启操作

    [root@LFS nginx-1.19.2]#systemctl start nginx.service
    [root@LFS nginx-1.19.2]#systemctl status nginx.service
    [root@LFS nginx-1.19.2]#systemctl stop nginx.service
    [root@LFS nginx-1.19.2]#systemctl restart nginx.service

  • 相关阅读:
    修改docker+jenkins挂载目录
    Kunbernetes从私有仓库nexus拉取镜像
    kubernetes忘记token或者token过期怎么加入k8s集群
    kubernetes命令详情
    一些缩短树莓派学习曲线的书籍、课程和网站
    如何在Linux 中获取硬盘分区或文件系统的UUID?
    介绍Kubernetes监控Heapster
    对比剖析Swarm Kubernetes Marathon编排引擎
    Linux高效数据统计命令wc
    linux中make的有关规则的特性
  • 原文地址:https://www.cnblogs.com/networking/p/13637414.html
Copyright © 2020-2023  润新知