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="\033[1;31m"
COLOREND="\033[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 "\033[1;32m user nginx has been created. \033[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 "\033[1;32m nginx install OK \033[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 "\033[1;32m Congratulation!Nginx install completed! Enjoy it. \033[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 "\033[1;32m Nginx start successful. \033[0m"
else
	echo -e "${COLORBEG} Nginx start failed!please check. ${COLOREND}"
fi

posted @ 2019-11-08 13:45  Eddie·Peng  阅读(272)  评论(0编辑  收藏  举报