#!/bin/bash
#
#********************************************************************
#Author: chenjiahao
#QQ: 1938191576
#Date: 2022-08-18
#FileName: install_nginx.sh
#URL: https://www.placjh.com
#Description: The deploy script
#Copyright (C): 2022 All rights reserved
#********************************************************************
NGINX=nginx-1.18.0
DIRE=/apps/nginx
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
. /etc/os-release
dependence(){
echo "安装依赖包"
if [ $ID = "centos" -o $ID = "rocky" ];then
yum -y install tar wget make gcc pcre-devel openssl-devel zlib-devel &> /dev/null
elif [ $ID = "ubuntu" ];then
apt update
apt -y install make gcc libpcre3 libpcre3-dev openssl libssl-dev zlib1g zlib1g-dev &>/dev/null
else
color 不支持的OS
fi
}
user(){
echo 创建启动账号,创建安装目录
useradd -s /sbin/nologin nginx &>/dev/null
mkdir /apps/nginx -p
}
download(){
echo "检查源码包"
if [ ! -f $NGINX.tar.gz ];then
echo "下载资源"
wget http://nginx.org/download/$NGINX.tar.gz &> /dev/null
if [ ! $? -eq 0 ];then
color 下载失败 1
rm -rf $NGINX.tar.gz
exit
fi
fi
echo "解压资源"
tar xf $NGINX.tar.gz &> /dev/null
color 完毕 0
}
install(){
echo "编译安装"
cd $NGINX/
./configure --prefix=$DIRE --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module &> /dev/null
make &> /dev/null && make install &> /dev/null
if [ ! $? -eq 0 ];then
color 安装失败,请排查编译安装步骤 1
exit
fi
}
prepare(){
echo "准备"
ln -s /apps/nginx/sbin/nginx /usr/local/bin/ &>/dev/null
chown -R nginx.nginx $DIRE
echo "创建service文件"
cat > /lib/systemd/system/nginx.service <<-EOF
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.tatget nss-lookup.target
[Service]
Type=forking
PPIDFile=$DIRE/logs/nginx.pid
ExecStartPre=/bin/rm -f $DIRE/logs/nginx.pid
ExecStartPre=$DIRE/sbin/nginx -t
ExecStart=$DIRE/sbin/nginx
ExecReload=/bin/kill -s HUB \$MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
EOF
color 完毕 0
}
start_nginx(){
echo "启动nginx"
systemctl daemon-reload
systemctl enable --now nginx
if [ $? -eq 0 ];then
color 启动成功 0
else
color 启动失败,请查看journalctl -xe 2
fi
}
dependence
user
download
install
prepare
start_nginx