背景
由于客户机比较多,经常在不同客户服务器搭建运行环境,一套系统(数据库:Mysql、Oracle、PostGreSql、Redis;Windows环境下写bat批处理脚本运行springboot)下来要占用大半天的时间。
也有公司使用Docker容器来搭建服务,但是在生产上使用Docker运行数据库太扯,毕竟客户单位还是给提供的虚拟服务器,有些客户的服务器是十来年前的服务器,处理器核心虽然多,但再虚拟化之后性能很拉胯,在考虑客户和项目成本情况下,没办法要求用户更换服务器,再配合杀毒软件连跑个脚本文件都非常慢就,手工操作就可想而知了。
为了解放双手,遂编写了这个nginx服务编译、安装脚本文件,顺便分享出来,写的不好的地方还望理解,如有技术和创新较好的思想,望留言相互学习。
示例图
下载
包含所有的依赖包和安装.sh文件
点此:跳转到下载页面
脚本
#!/bin/bash
echo -e "\033[30m########################################################################\033[0m"
echo -e "\033[30m# 一键安装Nginx运行环境 #\033[0m"
echo -e "\033[30m########################################################################\033[0m"
#gcc依赖包目录名称
gcc_Install=gcc_Install
#pcre依赖包目录名称
nginx_pcre=nginx_pcre
#readline依赖包目录名称
readline_devel_Install=readline-devel_Install
#zlib依赖包目录名称
zlib_Install=zlib_Install/version-19
#openssl依赖包目录名称
opensslDir=openssl/openssl-rpm
#nginx安装包压缩文件
nginx_gz=nginx-1.23.1-updated.tar.gz
#nginx解压文件解压缩后的目录名称
nginxUnzipDir=nginx-1.23.1
#nginx安装主目录路径
nginxInsToDir=/usr/local/nginx
ins_gcc=`echo -e "\033[31m 安装gcc依赖 \033[0m"`
ins_pcre=`echo -e "\033[31m 安装pcre依赖 \033[0m"`
ins_readline=`echo -e "\033[31m 安装readline依赖 \033[0m"`
ins_zlib=`echo -e "\033[31m 安装zlib依赖 \033[0m"`
ins_openssl=`echo -e "\033[31m 安装openssl \033[0m"`
ins_nginx=`echo -e "\033[31m 安装nginx,安装路径[$nginxInsToDir] \033[0m"`
quit=`echo -e "\033[31m 退出安装 \033[0m"`
PS3="请输入数字序号执行安装:"
select run_ins_nginx in "$ins_gcc" "$ins_pcre" "$ins_readline" "$ins_zlib" "$ins_openssl" "$ins_nginx" "$quit"
do
case "$run_ins_nginx" in
#安装gcc依赖
"$ins_gcc")
echo -e "\033[32m 正在安装gcc依赖 \033[0m"
#授权运行权限
sudo chmod +x ./$gcc_Install/*.rpm
#执行安装
sudo rpm -Uvh ./$gcc_Install/*.rpm --nodeps --force
echo -e "\033[32m 安装命令执行结束 \033[0m"
;;
#安装pcre依赖
"$ins_pcre")
echo -e "\033[32m 正在安装pcre依赖 \033[0m"
#授权运行权限
sudo chmod +x ./$nginx_pcre/*.rpm
#执行安装
sudo rpm -Uvh ./$nginx_pcre/*.rpm --nodeps --force
echo -e "\033[32m 安装命令执行结束 \033[0m"
;;
#安装readline依赖
"$ins_readline")
echo -e "\033[32m 正在安装readline依赖 \033[0m"
#授权运行权限
sudo chmod +x ./$readline_devel_Install/*.rpm
#执行安装
sudo rpm -Uvh ./$readline_devel_Install/*.rpm --nodeps --force
echo -e "\033[32m 安装命令执行结束 \033[0m"
;;
#安装zlib依赖
"$ins_zlib")
echo -e "\033[32m 正在安装zlib依赖 \033[0m"
#授权运行权限
sudo chmod +x ./$zlib_Install/*.rpm
#执行安装
sudo rpm -Uvh ./$zlib_Install/*.rpm --nodeps --force
echo -e "\033[32m 安装命令执行结束 \033[0m"
;;
#安装ins_openssl依赖
"$ins_openssl")
echo -e "\033[32m 正在安装openssl依赖 \033[0m"
#授权运行权限
sudo chmod +x ./$opensslDir/*.rpm
#执行安装
sudo rpm -Uvh ./$opensslDir/*.rpm --nodeps --force
echo -e "\033[32m 安装命令执行结束 \033[0m"
;;
"$ins_nginx")
echo -e "\033[32m 开始安装nginx,安装路径[$nginxInsToDir] \033[0m"
#解压文件
sudo tar -xf $nginx_gz
#进入到解压缩出的nginx文件目录
cd $nginxUnzipDir
#创建安装目录
mkdir $nginxInsToDir
mkdir $nginxInsToDir/tmp/proxy/
mkdir $nginxInsToDir/tmp/fcgi/
mkdir $nginxInsToDir/tmp/client/
mkdir $nginxInsToDir/tmp/uwsgi_temp/
mkdir $nginxInsToDir/tmp/scgi_temp/
#预编译并验证二进制文件
./configure --prefix=$nginxInsToDir --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --http-proxy-temp-path=$nginxInsToDir/tmp/proxy/ --http-fastcgi-temp-path=$nginxInsToDir/tmp/fcgi/ --http-client-body-temp-path=$nginxInsToDir/tmp/client/ --http-proxy-temp-path=$nginxInsToDir/tmp/proxy/ --http-fastcgi-temp-path=$nginxInsToDir/tmp/fcgi/ --with-poll_module --with-file-aio --with-http_realip_module --with-http_addition_module --with-http_addition_module --with-http_random_index_module --with-http_stub_status_module --http-uwsgi-temp-path=$nginxInsToDir/uwsgi_temp --http-scgi-temp-path=$nginxInsToDir/scgi_temp --with-stream
#执行编译
make
#执行安装
make install
#删除解压缩的目录:递归删除目录文件
cd ../
sudo rm -rf $nginxUnzipDir
echo -e "\033[32m 安装命令执行结束 \033[0m"
;;
"$quit")
exit
echo -e "\033[32m 已退出安装 \033[0m"
;;
*)
echo -e "\033[31m 输入错误!请选择1~9的数字! \033[0m"
;;
esac
done