• Nginx编译安装脚本


      Nginx是高性能的web服务器和反向代理服务器,在互联网公司中被广泛使用。以下是Nginx在centos7系统下的一键编译安装脚本,仅供参考,具体编译参数选项请结合实际生产环境需求进行选择,脚本代码如下:

    #!/bin/bash
    #
    #********************************************************************
    #Author:        Eddie.Peng
    #URL:           https://www.cnblogs.com/eddie1127/
    #Date:          2019-11-08
    #FileName:      nginx_install.sh
    #Description:   The script for install Nginx web server
    #********************************************************************
    #Set colour
    COLORBEG="33[1;31m"
    COLOREND="33[0m"
    
    # Check if user is root
    if [ $(id -u) !=0 ];then
    	echo -e "${COLORBEG} Error! You must be root to run this script,please use root to install. ${COLOREND}"
    	exit 10
    fi
    
    clear
    echo "========================================================================"
    echo " "
    echo "The script for install Nginx web server"
    echo " "
    echo "========================================================================"
    
    # Modify system and kernel args
    ulimit -SHn 65535
    cat >>/etc/security/limits.conf << EOF
    * soft nproc 
    * hard nproc 65535
    * soft nofile 65535
    * hard nofile 65535
    EOF
    
    cat >> /etc/sysctl.conf << EOF
    fs.file-max = 6553560
    net.ipv4.ip_forward = 1
    net.ipv4.ip_nonlocal_bind = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_keepalive_time = 600
    net.ipv4.tcp_keepalive_intvl = 15
    net.ipv4.tcp_keepalive_probes = 3
    net.ipv4.tcp_fin_timeout = 30
    net.ipv4.tcp_syncookies = 1
    net.core.netdev_max_backlog = 8096
    net.core.somaxconn = 65535
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    net.ipv4.icmp_ignore_bogus_error_responses = 1
    EOF
    sysctl -p
    
    
    # Install dependent software packge
    yum -y install epel-release gcc pcre-devel openssl-devel zlib-devel GeoIP GeoIP-devel GeoIP-data
    
    # Check files if exists
    echo "=================================== Check files ==========================================="
    CUR_DIR=$(pwd)
    NAME=nginx-1.16.1
    FULL_NAME=${CUR_DIR}/${NAME}.tar.gz
    INSTALL_PATH=/usr/local/nginx
    
    cd $CUR_DIR
    if [ -s $FULL_NAME ];then
    	echo "$FULL_NAME [found]"
    else
    	echo -e "${COLORBEG} $FULL_NAME not found! download now... ${COLOREND}"
    	wget -c https://nginx.org/download/$NAME.tar.gz
    fi
    
    echo "====================================== Install ============================================"
    # Create run user for nginx service
    id -u nginx
    if [ $? -eq 0 ];then
    	echo -e "${COLORBEG} user nginx already exist,skip... ${COLOREND}"
    else
    	groupadd -g 80 nginx
    	useradd -u 80 -r -g nginx -s /sbin/nologin nginx
    	echo -e "33[1;32m user nginx has been created. 33[0m"
    fi
    
    # Install nginx web server
    cd $CUR_DIR
    tar xf $FULL_NAME -C /usr/local/src
    cd /usr/local/src/$NAME
    ./configure --prefix=$INSTALL_PATH 
    --user=nginx --group=nginx 
    --pid-path=/var/run/nginx.pid 
    --lock-path=/var/run/nginx.lock 
    --with-http_ssl_module 
    --with-http_v2_module 
    --with-http_realip_module 
    --with-http_dav_module 
    --with-http_flv_module 
    --with-http_mp4_module 
    --with-http_stub_status_module 
    --with-threads 
    --with-file-aio 
    --with-http_geoip_module 
    --with-http_gzip_static_module 
    --with-http_slice_module 
    --with-stream 
    --with-stream_ssl_module 
    --with-stream_realip_module 
    
    make -j $(nproc) && make install
    
    echo "========================= Check install =============================================="
    clear
    INSTALL=""
    
    echo "Checking..."
    if [ -s "$INSTALL_PATH"/sbin/nginx ] && [ -s "$INSTALL_PATH"/conf/nginx.conf ];then
    	echo -e "33[1;32m nginx install OK 33[0m"
    	INSTALL="OK"
    else
    	echo -e "${COLORBEG} Error! "$INSTALL_PATH"/sbin/nginx not found!Nginx install failed,please check. ${COLOREND}"
    fi
    
    if [ "$INSTALL" = "OK" ];then
    	echo -e "33[1;32m Congratulation!Nginx install completed! Enjoy it. 33[0m"
    	echo "===================================================================================="
    	echo "The path of some dirs:"
    	echo "nginx_exec_dir: $INSTALL_PATH/sbin"
    	echo "nginx config : $INSTALL_PATH/conf"
    	echo "===================================================================================="
    else
    	echo -e "${COLORBEG} Sorry,Nginx install Failed! Please check and reinstall. ${COLOREND}"
    	exit 20
    fi
    
    # Add links
    ln -s $INSTALL_PATH/sbin/nginx /usr/sbin/
    
    #Add nginx service on startup
    
    cat > /usr/lib/systemd/system/nginx.service << EOF
    [Unit]
    Description=The nginx HTTP and reverse proxy server
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/var/run/nginx.pid
    ExecStartPre=/usr/bin/rm -f /var/run/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/bin/kill -s HUP $MAINPID
    KillSignal=SIGQUIT
    TimeoutStopSec=5
    KillMode=process
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    systemctl daemon-reload
    systemctl enable --now nginx.service
    
    # Check start up
    if [ $? -eq 0 ];then 
    	echo -e "33[1;32m Nginx start successful. 33[0m"
    else
    	echo -e "${COLORBEG} Nginx start failed!please check. ${COLOREND}"
    fi
    
    
  • 相关阅读:
    RIO包 健壮的I/O函数代码
    Upgrading WebLogic Application Environments --官方文档
    JAVA的静态代理与动态代理比较--转载
    指向函数的指针--转
    c之指针与数组(1)
    weblogic 异常常见处理方法
    Redis: under the hood---转载
    A GDB Tutorial with Examples--转
    The best career advice I’ve received --转载
    redis 大数据插入
  • 原文地址:https://www.cnblogs.com/eddie1127/p/11819691.html
Copyright © 2020-2023  润新知