93 lines
4.3 KiB
Bash
93 lines
4.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
Upgrade_Nginx()
|
|
{
|
|
Cur_Nginx_Version=`/usr/local/nginx/sbin/nginx -v 2>&1 | cut -c22-`
|
|
|
|
if [ -s /usr/local/include/jemalloc/jemalloc.h ] && /usr/local/nginx/sbin/nginx -V 2>&1|grep -Eqi 'ljemalloc'; then
|
|
NginxMAOpt="--with-ld-opt='-ljemalloc'"
|
|
elif [ -s /usr/local/include/gperftools/tcmalloc.h ] && grep -Eqi "google_perftools_profiles" /usr/local/nginx/conf/nginx.conf; then
|
|
NginxMAOpt='--with-google_perftools_module'
|
|
else
|
|
NginxMAOpt=""
|
|
fi
|
|
|
|
Nginx_Version=""
|
|
echo "Current Nginx Version:${Cur_Nginx_Version}"
|
|
echo "You can get version number from http://nginx.org/en/download.html"
|
|
read -p "Please enter nginx version you want, (example: 1.18.0): " Nginx_Version
|
|
if [ "${Nginx_Version}" = "" ]; then
|
|
echo "Error: You must enter a nginx version!!"
|
|
exit 1
|
|
fi
|
|
echo "+---------------------------------------------------------+"
|
|
echo "| You will upgrade nginx version to ${Nginx_Version}"
|
|
echo "+---------------------------------------------------------+"
|
|
|
|
Press_Start
|
|
|
|
echo "============================check files=================================="
|
|
cd ${cur_dir}/src
|
|
if [ -s nginx-${Nginx_Version}.tar.gz ]; then
|
|
echo "nginx-${Nginx_Version}.tar.gz [found]"
|
|
else
|
|
echo "Notice: nginx-${Nginx_Version}.tar.gz not found!!!download now......"
|
|
wget -c --progress=bar:force http://nginx.org/download/nginx-${Nginx_Version}.tar.gz
|
|
if [ $? -eq 0 ]; then
|
|
echo "Download nginx-${Nginx_Version}.tar.gz successfully!"
|
|
else
|
|
echo "You enter Nginx Version was:"${Nginx_Version}
|
|
Echo_Red "Error! You entered a wrong version number, please check!"
|
|
sleep 5
|
|
exit 1
|
|
fi
|
|
fi
|
|
echo "============================check files=================================="
|
|
|
|
Install_Nginx_Openssl
|
|
Install_Nginx_Lua
|
|
Install_Pcre
|
|
Tar_Cd nginx-${Nginx_Version}.tar.gz nginx-${Nginx_Version}
|
|
Get_Dist_Version
|
|
if [[ "${DISTRO}" = "Fedora" && ${Fedora_Version} -ge 28 ]]; then
|
|
patch -p1 < ${cur_dir}/src/patch/nginx-libxcrypt.patch
|
|
fi
|
|
Nginx_Ver_Com=$(${cur_dir}/include/version_compare 1.14.2 ${Nginx_Version})
|
|
if gcc -dumpversion|grep -q "^[8]" && [ "${Nginx_Ver_Com}" == "1" ]; then
|
|
patch -p1 < ${cur_dir}/src/patch/nginx-gcc8.patch
|
|
fi
|
|
Nginx_Ver_Com=$(${cur_dir}/include/version_compare 1.9.4 ${Nginx_Version})
|
|
if [[ "${Nginx_Ver_Com}" == "0" || "${Nginx_Ver_Com}" == "1" ]]; then
|
|
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_spdy_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module ${Nginx_With_Openssl} ${Nginx_With_Pcre} ${Nginx_Module_Lua} ${NginxMAOpt} ${Nginx_Modules_Options}
|
|
else
|
|
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-stream --with-stream_ssl_module ${Nginx_With_Openssl} ${Nginx_With_Pcre} ${Nginx_Module_Lua} ${NginxMAOpt} ${Nginx_Modules_Options}
|
|
fi
|
|
make -j `grep 'processor' /proc/cpuinfo | wc -l`
|
|
if [ $? -ne 0 ]; then
|
|
make
|
|
fi
|
|
|
|
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.${Upgrade_Date}
|
|
\cp objs/nginx /usr/local/nginx/sbin/nginx
|
|
echo "Test nginx configure file..."
|
|
/usr/local/nginx/sbin/nginx -t
|
|
echo "upgrade..."
|
|
make upgrade
|
|
|
|
cd ${cur_dir} && rm -rf ${cur_dir}/src/nginx-${Nginx_Version}
|
|
if [ "${Enable_Nginx_Lua}" = 'y' ]; then
|
|
if ! grep -q "content_by_lua 'ngx.say(\"hello world\")';" /usr/local/nginx/conf/nginx.conf; then
|
|
sed -i "/location \/nginx_status/i\ location /lua\n {\n default_type text/html;\n content_by_lua 'ngx.say\(\"hello world\"\)';\n }\n" /usr/local/nginx/conf/nginx.conf
|
|
fi
|
|
fi
|
|
|
|
echo "Checking ..."
|
|
if [[ -s /usr/local/nginx/conf/nginx.conf && -s /usr/local/nginx/sbin/nginx ]]; then
|
|
echo "Program will display Nginx Version......"
|
|
/usr/local/nginx/sbin/nginx -v
|
|
Echo_Green "======== upgrade nginx completed ======"
|
|
else
|
|
Echo_Red "Error: Nginx upgrade failed."
|
|
fi
|
|
}
|