Nginx一键安装脚本
该脚本在联网状态下使用。
该脚本使用shell 爬取nginx官网获取版本号,在通过下载链接进行安装下载。
[root@VM-16-10-centos ~]# vim Install_NG.sh
#!/bin/bash
#选择nginx 版本自动安装
#------*FChao*------
#使用该脚本请保持联网环境
#-------爬取nginx官网页面--------------
yum -y install lynx &>/dev/null
#抓取页面
lynx -dump http://nginx.org/en/download.html | awk '{print $2 }' | egrep -o "(nginx-)(.*)(.tar.gz)" | awk '!x[$0]++' |cat -n >/tmp/Version.txt
Version=`cat /tmp/Version.txt`
#使用一下命令抓取下载链接
#lynx -dump http://nginx.org/en/download.html | sed -n '/nginx-.*.tar.gz/'p a.html | egrep -o "(http)(.*)(.tar.gz)" | awk '!x[$0]++' |cat -n
echo "nginx 版本有:
${Version}"
echo "**************"
echo "*默认回车即可*"
echo "**************"
echo "Nginx默认为1.20.2版本,默认安装路径为:/usr/local/"
read -p "请输入要安装的包名:" Nginx
if [ ! -n "$Nginx" ]
then
Nginx="nginx-1.20.2.tar.gz"
fi
read -p "请输入安装目录:" Dir
if [ ! -n "$Dir" ]
then
Dir="/usr/local/"
fi
TIME=[$(date +'%Y-%m-%d %H:%M:%S')]
#定义安装函数体
Install_Nginx(){
#-------关闭防火墙seliunx--------------
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#--------------------------------------
echo "${TIME}正在安装依赖包..................."
yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y &>/dev/null
echo "${TIME}正在下载软件包..................."
wget http://nginx.org/download/$Nginx &>/dev/null
echo "${TIME}正在解压软件包..................."
tar -zxvf $Nginx &>/dev/null
rm -rf $Nginx
mkdir /var/temp/nginx -p
echo "${TIME}正在安装Nginx..................."
nginx_dir=`ls | grep -v ".tar.gz"$ | grep nginx |awk 'NR==1'`
cd $nginx_dir/
./configure --prefix=${Dir}nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi > /tmp/install_log.txt
make &>/dev/null
make install &>/dev/null
ln -s ${Dir}nginx/sbin/nginx /usr/bin/nginx
naginx_dir=`tail -14 /tmp/install_log.txt`
echo "${TIME}Nginx安装完成..................."
echo "${TIME}Nginx文件路径为:
$naginx_dir"
#---------------------------------------
rm -rf /tmp/Version.txt
rm -rf /tmp/install_log.txt
}
Install_Nginx
#定义加入系统服务函数体
Nginx_service(){
cat << EOF >/usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=${Dir}nginx/sbin/nginx
ExecReload=${Dir}nginx/sbin/nginx -s reload
ExecStop=${Dir}nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
}
#--------------------------判断是否将nginx加入系统服务------
read -p "是否加入系统服务,默认不加入(y/n):" Ssm_service
if [ ! -n "$Ssm_service" ] || [ "$Ssm_service" != "y" ] || [ "$Ssm_service" != "Y" ] || [ "$Ssm_service" != "n" ] || [ "$Ssm_service" != "N" ]
then
if [ "$Ssm_service" = "y" ] || [ "$Ssm_service" = "Y" ];
then
Nginx_service
echo "${TIME}Nginx 已加入系统服务"
elif [ "$Ssm_service" = "n" ] || [ "$Ssm_service" = "N" ];
then
echo "${TIME}${Dir}nginx/sbin/nginx 为启动文件"
fi
fi
#--------------------------判断是否启动nginx------
read -p "是否启动Nginx(y/n):" start_no
if [ "$Ssm_service" = "y" ] || [ "$Ssm_service" = "Y" ];
then
if [ "$start_no" = "y" ] || [ "$start_no" = "Y" ];
then
systemctl start nginx
if [ $? -eq 0 ]
then
echo "${TIME}已经使用 systemctl start nginx 启动"
else
echo "${TIME}nginx 启动错误,排查是否端口冲突&&其他错误"
fi
elif [ "$start_no" = "n" ] || [ "$start_no" = "N" ];
then
echo "${TIME}nginx没有启动"
elif [ ! -n "$start_no" ] || [ "$start_no" != "y" ] || [ "$start_no" != "Y" ] || [ "$start_no" != "n" ] || [ "$start_no" != "N" ]
then
echo "${TIME}请输入正确的值(y/n)"
fi
elif [ "$Ssm_service" = "n" ] || [ "$Ssm_service" = "N" ];
then
if [ "$start_no" = "y" ] || [ "$start_no" = "Y" ];
then
${Dir}nginx/sbin/nginx
if [ $? -eq 0 ]
then
echo "${TIME}已经使用${Dir}nginx/sbin/nginx启动"
else
echo "${TIME}nginx 启动错误,排查是否端口冲突&&其他错误"
fi
elif [ "$start_no" = "n" ] || [ "$start_no" = "N" ];
then
echo "${TIME}nginx没有启动"
elif [ ! -n "$start_no" ] || [ "$start_no" != "y" ] || [ "$start_no" != "Y" ] || [ "$start_no" != "n" ] || [ "$start_no" != "N" ]
then
echo "${TIME}请输入正确的值(y/n)"
fi
fi
#---------------------------------