您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

centos7 shell脚本一键安装nginx

时间:2020-12-24 13:43:41  来源:  作者:

相信大家在网上一搜,就能搜出很多这样的文章,但我这个不一样哦,我在脚本里加了些自定义的东西(如关闭版本号,修改Nginx版本头信息,nginx性能优化等等),可以不用修改直接就可以使用.
系统:centos 7.x(64位)

脚本内容:
cat /root/soft_shell/auto_install_nginx.sh

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin:~/bin
export PATH
 
# Check if user is root
if [ $(id -u) != "0" ]
then
    echo -e "Error: You must be root to run this script, please use root to install……"
    exit 1
fi
 
# Check the network status
NET_NUM=$(ping -c 4 www.baidu.com |awk '/packet loss/{print $6}' |sed -e 's/%//')
if [ -z "$NET_NUM" ] || [ $NET_NUM -ne 0 ]
then
    echo -e "Error: Please check your internet……"
    exit 1
fi
 
# Check if selinux is Enforcing
selinux_status=$(getenforce)
if [ $selinux_status == "Enforcing" ]
then
  sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config
  setenforce 0
fi
 
check_rpm=`rpm -qa wget|awk -F "-" '{print $1}'`
if [ -z $check_rpm ];then
    yum -y install wget
fi
 
file_path=`pwd`
nginx_version="1.14.2"
read -p "Please input nginx display version infomation :" nginx_version
if [ "$nginx_version" = "" ];then
    nginx_version="1.14.2"
fi
 
read -p "Please input display "server-name" infomation :"  nginx_name
 
user_nginx=$(cat /etc/passwd |grep nginx|awk '{print $1}')
if [ -z "$user_nginx" ];then
    useradd -M -r -s /sbin/nologin nginx
else
    echo -e "33[31m user nginx already exists! 33[0m "
fi
 
if [ -s nginx-$nginx_version.tar.gz ];then
    echo -e "33[31m nginx-$nginx_version.tar.gz find! 33[0m"
else
    wget http://nginx.org/download/nginx-$nginx_version.tar.gz
fi
 
if [ -s jemalloc-4.5.0.tar.bz2 ];then
    echo -e "33[31m jemalloc [found]33[0m"
else
    wget http://download.slogra.com/tcmalloc/jemalloc-4.5.0.tar.bz2
fi
 
yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel perl-ExtUtils-Embed GeoIP-devel libxslt libxslt-devel
 
if [ ! -s /usr/local/bin/jemalloc.sh ];then
    tar jxf jemalloc-4.5.0.tar.bz2
    cd jemalloc-4.5.0
    ./configure
    make -j4 && make install
 
    echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
    ldconfig
fi
 
cd $file_path
 
if [ ! -d ngx_brotli ];then
    git clone https://github.com/google/ngx_brotli
    cd ngx_brotli/
    git submodule update --init
    cd -
else
    echo -e "33[31m brotli [found]33[0m"
    cd ngx_brotli/
    git submodule update --init
    cd -
fi
 
cd $file_path
tar zxf nginx-$nginx_version.tar.gz
cd nginx-$nginx_version
 
sed -i "/#define NGINX_VERSION/c #define NGINX_VERSION     "${nginx_version}"" ./src/core/nginx.h
sed -i "/#define NGINX_VER          "nginx/" NGINX_VERSION/c #define NGINX_VER          "${nginx_name}/" NGINX_VERSION" ./src/core/nginx.h
sed -i "/static u_char ngx_http_server_string[] = "Server: nginx" CRLF;/c static u_char ngx_http_server_string[] = "Server: ${nginx_name} " CRLF;" ./src/http/ngx_http_header_filter_module.c
error_footer_len=$(expr $(grep -n "static u_char ngx_http_error_tail[] =" ./src/http/ngx_http_special_response.c|awk -F: '{print $1}') + 1 )
sed -i "${error_footer_len}d" ./src/http/ngx_http_special_response.c
sed -i "/static u_char ngx_http_error_tail[] =/a "<hr><center>${nginx_name}</center>" CRLF" ./src/http/ngx_http_special_response.c
 
export CFLAGS="-Werror"
./configure --user=nginx --group=nginx --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --add-module=../ngx_brotli --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --pid-path=/var/run/nginx.pid --with-ld-opt=-ljemalloc --lock-path=/var/lock/subsys/nginx --with-http_secure_link_module --with-http_random_index_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_perl_module --with-http_geoip_module --with-mail --with-mail_ssl_module --with-cc-opt=-O3 --with-cpu-opt=pentium --with-ld-opt="-Wl,-E"
 
make && make install
 
mkdir -p /etc/nginx/conf.d
mkdir -p /var/lib/nginx/tmp
 
echo '[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
 
 
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
 
[Install]
WantedBy=multi-user.target' > /usr/lib/systemd/system/nginx.service
 
cat > /etc/nginx/nginx.conf <<-EOF
user nginx nginx;
#worker_processes  $cpu_number;
worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;
 
error_log   /var/log/nginx/error.log;
 
pid        /var/run/nginx.pid;
 
events {
    use epoll;
    accept_mutex off;
    worker_connections  65535;
    multi_accept on;
}
 
http {
    include       mime.types;
    default_type  Application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" "$request_time"';
 
    access_log  /var/log/nginx/access.log  main;
 
    server_names_hash_bucket_size 128;
    client_header_buffer_size 16k;
    large_client_header_buffers 4 32k;
    client_body_in_file_only clean;
    client_max_body_size 8m;
 
    sendfile        on;
    tcp_nopush      on;
 
    keepalive_timeout  60;
    tcp_nodelay on;
    server_tokens   off;
 
    fastcgi_connect_timeout 300s;
    fastcgi_send_timeout 300s;
    fastcgi_read_timeout 300s;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 8 128k;#8 128
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_intercept_errors on;
 
    #hiden php version
    fastcgi_hide_header X-Powered-By;
 
    proxy_connect_timeout    300;
    proxy_read_timeout       300;
    proxy_send_timeout       300;
 
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 16 64k;
    gzip_http_version 1.0;
    #gzip_disable "MSIE [1-5].";
    gzip_comp_level 4;
    gzip_types text/plain application/x-JAVAscript text/css application/xml image/gif image/jpg image/jpeg image/png;
    gzip_vary on;
    #proxy_hide_header Vary;
 
    brotli on;
    brotli_types text/xml text/plain application/json text/css image/svg application/font-woff application/vnd.ms-fontobject application/vnd.apple.mpegurl application/JavaScript image/x-icon image/jpeg image/gif image/png;
    brotli_static on;
    brotli_comp_level 6;
    brotli_buffers 16 10k;
    brotli_window 512k;
    brotli_min_length 20;
 
    server {
        listen    80 default;
        server_name  _;
        return 500;
    }
 
        include /etc/nginx/conf.d/*.conf;
}
EOF
 
cat > /etc/logrotate.d/nginx << EOF
/var/log/nginx/*log {
    create 0644 nginx nginx
    daily
    rotate 7
    missingok
    notifempty
    nocompress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}
EOF
 
systemctl daemon-reload
systemctl enable nginx
systemctl start nginx
echo -e "33[31m Install nginx success! 33[0m "

安装完后效果图如下:

centos7 shell脚本一键安装nginx

nginx安装完后效果图

好了,大家有兴趣的可以拿去试试.



Tags:nginx   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  Tags: nginx  点击:(7)  评论:(0)  加入收藏
前言Nginx是前后端开发工程师必须掌握的神器。该神器有很多使用场景,比如反向代理、负载均衡、动静分离、跨域等等。把 Nginx下载下来,打开conf文件夹的nginx.conf文件,Nginx服...【详细内容】
2021-12-08  Tags: nginx  点击:(18)  评论:(0)  加入收藏
最近客户有个新需求,就是想查看网站的访问情况,由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的页...【详细内容】
2021-10-09  Tags: nginx  点击:(48)  评论:(0)  加入收藏
安全服务器是只允许所需数量的服务器。理想情况下,我们将通过单独启用其他功能来基于最小系统构建服务器。进行最少的配置也有助于调试。如果该错误在最小系统中不可用,则分别...【详细内容】
2021-09-26  Tags: nginx  点击:(60)  评论:(0)  加入收藏
在今年的NGINX Sprint 2.0虚拟大会上,NGINX(来自流行的开源web服务器/负载均衡器和反向代理背后的公司F5),发布了NGINX现代应用参考架构(MARA)。该公司在一篇博客文章中说,这将帮...【详细内容】
2021-09-26  Tags: nginx  点击:(60)  评论:(0)  加入收藏
Ubuntu下安装Nginx一、系统基本信息查看1、查看Ubuntu版本信息:使用命令:cat /proc/version 查看~$ cat /proc/versionLinux version 4.15.0-106-generic (buildd@lcy01-amd6...【详细内容】
2021-09-16  Tags: nginx  点击:(60)  评论:(0)  加入收藏
出于安全审查或者对于系统安全性的要求,都要求我们生产环境部署的系统需要做一定的权限控制。那么如何简单快速地部署满足安全要求的权限系统呢?其实可以通过nginx的相关功能...【详细内容】
2021-09-07  Tags: nginx  点击:(69)  评论:(0)  加入收藏
什么是NginxNginx(engine x)是一个高性能的HTTP和反向代理服务器,具有内存少,高并发特点强。1、处理静态文件,索引文件以及自动检索打开文件描述符缓冲2、无缓冲的反向代理加速...【详细内容】
2021-09-02  Tags: nginx  点击:(70)  评论:(0)  加入收藏
本文适用于 php7.4+NGINX环境,适用于运行 wordpress 环境一、更新服务器sudo apt update二、命令快捷缩写设置通过ssh登录服务器,在用户目录下执行以下命令sudo nano .bashrca...【详细内容】
2021-08-31  Tags: nginx  点击:(87)  评论:(0)  加入收藏
一、nginx正向代理介绍及配置(需要在客户端配置代理服务器进行指定网站访问)#模块 ngx_http_proxy_module: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy...【详细内容】
2021-08-16  Tags: nginx  点击:(75)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(8)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条