2021-08-19 06:35:24 +08:00

161 lines
6.8 KiB
Bash

#!/usr/bin/env bash
Install_Nginx_Openssl()
{
if [ "${Enable_Nginx_Openssl}" = 'y' ]; then
if [ ! -n "${Nginx_Version}" ]; then
Nginx_Version=$(echo ${Nginx_Ver} | sed "s/nginx-//")
fi
Nginx_Ver_Com=$(${cur_dir}/include/version_compare 1.13.0 ${Nginx_Version})
if [[ "${Nginx_Ver_Com}" == "0" || "${Nginx_Ver_Com}" == "1" ]]; then
Download_Files ${Download_Mirror}/lib/openssl/${Openssl_Ver}.tar.gz ${Openssl_Ver}.tar.gz
[[ -d "${Openssl_Ver}" ]] && rm -rf ${Openssl_Ver}
tar zxf ${Openssl_Ver}.tar.gz
Nginx_With_Openssl="--with-openssl=${cur_dir}/src/${Openssl_Ver}"
else
Download_Files ${Download_Mirror}/lib/openssl/${Openssl_New_Ver}.tar.gz ${Openssl_New_Ver}.tar.gz
[[ -d "${Openssl_New_Ver}" ]] && rm -rf ${Openssl_New_Ver}
tar zxf ${Openssl_New_Ver}.tar.gz
Nginx_With_Openssl="--with-openssl=${cur_dir}/src/${Openssl_New_Ver} --with-openssl-opt='enable-weak-ssl-ciphers'"
fi
fi
}
Install_Nginx_Lua()
{
if [ "${Enable_Nginx_Lua}" = 'y' ]; then
echo "Installing Lua for Nginx..."
cd ${cur_dir}/src
Download_Files ${Download_Mirror}/lib/lua/${Luajit_Ver}.tar.gz ${Luajit_Ver}.tar.gz
Download_Files ${Download_Mirror}/lib/lua/${LuaNginxModule}.tar.gz ${LuaNginxModule}.tar.gz
Download_Files ${Download_Mirror}/lib/lua/${NgxDevelKit}.tar.gz ${NgxDevelKit}.tar.gz
Echo_Blue "[+] Installing ${Luajit_Ver}... "
tar zxf ${LuaNginxModule}.tar.gz
tar zxf ${NgxDevelKit}.tar.gz
if [[ ! -s /usr/local/luajit/bin/luajit || ! -s /usr/local/luajit/include/luajit-2.1/luajit.h || ! -s /usr/local/luajit/lib/libluajit-5.1.so ]]; then
Tar_Cd ${Luajit_Ver}.tar.gz ${Luajit_Ver}
make
make install PREFIX=/usr/local/luajit
cd ${cur_dir}/src
rm -rf ${cur_dir}/src/${Luajit_Ver}
fi
cat > /etc/ld.so.conf.d/luajit.conf<<EOF
/usr/local/luajit/lib
EOF
if [ "${Is_64bit}" = "y" ]; then
ln -sf /usr/local/luajit/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
else
ln -sf /usr/local/luajit/lib/libluajit-5.1.so.2 /usr/lib/libluajit-5.1.so.2
fi
ldconfig
cat >/etc/profile.d/luajit.sh<<EOF
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.1
EOF
source /etc/profile.d/luajit.sh
Nginx_Module_Lua="--with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib --add-module=${cur_dir}/src/${LuaNginxModule} --add-module=${cur_dir}/src/${NgxDevelKit}"
fi
}
Install_Nginx()
{
Echo_Blue "[+] Installing ${Nginx_Ver}... "
groupadd www
useradd -s /sbin/nologin -g www www
cd ${cur_dir}/src
Install_Nginx_Openssl
Install_Nginx_Lua
Tar_Cd ${Nginx_Ver}.tar.gz ${Nginx_Ver}
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_Install
cd ../
ln -sf /usr/local/nginx/sbin/nginx /usr/bin/nginx
rm -f /usr/local/nginx/conf/nginx.conf
cd ${cur_dir}
if [ "${Stack}" = "lnmpa" ]; then
\cp conf/nginx_a.conf /usr/local/nginx/conf/nginx.conf
\cp conf/proxy.conf /usr/local/nginx/conf/proxy.conf
\cp conf/proxy-pass-php.conf /usr/local/nginx/conf/proxy-pass-php.conf
else
\cp conf/nginx.conf /usr/local/nginx/conf/nginx.conf
fi
\cp -ra conf/rewrite /usr/local/nginx/conf/
\cp conf/pathinfo.conf /usr/local/nginx/conf/pathinfo.conf
\cp conf/enable-php.conf /usr/local/nginx/conf/enable-php.conf
\cp conf/enable-php-pathinfo.conf /usr/local/nginx/conf/enable-php-pathinfo.conf
\cp -ra conf/example /usr/local/nginx/conf/example
if [ "${Enable_Nginx_Lua}" = 'y' ]; then
if [ "${Stack}" = "lnmp" ]; then
sed -i "/include enable-php.conf;/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
else
sed -i "/include proxy-pass-php.conf;/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
if [ "${isWSL}" = "y" ]; then
sed -i "/gzip on;/i\ fastcgi_buffering off;\n" /usr/local/nginx/conf/nginx.conf
fi
mkdir -p ${Default_Website_Dir}
chmod +w ${Default_Website_Dir}
mkdir -p /home/wwwlogs
chmod 777 /home/wwwlogs
chown -R www:www ${Default_Website_Dir}
mkdir /usr/local/nginx/conf/vhost
if [ "${Default_Website_Dir}" != "/home/wwwroot/default" ]; then
sed -i "s#/home/wwwroot/default#${Default_Website_Dir}#g" /usr/local/nginx/conf/nginx.conf
fi
if [ "${Stack}" = "lnmp" ]; then
cat >${Default_Website_Dir}/.user.ini<<EOF
open_basedir=${Default_Website_Dir}:/tmp/:/proc/
EOF
chmod 644 ${Default_Website_Dir}/.user.ini
chattr +i ${Default_Website_Dir}/.user.ini
cat >>/usr/local/nginx/conf/fastcgi.conf<<EOF
fastcgi_param PHP_ADMIN_VALUE "open_basedir=\$document_root/:/tmp/:/proc/";
EOF
fi
\cp init.d/init.d.nginx /etc/init.d/nginx
\cp init.d/nginx.service /etc/systemd/system/nginx.service
chmod +x /etc/init.d/nginx
if [ "${SelectMalloc}" = "3" ]; then
mkdir /tmp/tcmalloc
chown -R www:www /tmp/tcmalloc
sed -i '/nginx.pid/a\
google_perftools_profiles /tmp/tcmalloc;' /usr/local/nginx/conf/nginx.conf
fi
if [ "${Stack}" != "lamp" ]; then
uname_r=$(uname -r)
if echo $uname_r|grep -Eq "^3\.(9|1[0-9])*|^[4-9]\.*"; then
echo "3.9+";
sed -i 's/listen 80 default_server;/listen 80 default_server reuseport;/g' /usr/local/nginx/conf/nginx.conf
fi
fi
}