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

原文地址:https://www.cnblogs.com/eddie1127/p/11819691.html