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

301 lines
9.8 KiB
Bash

#!/usr/bin/env bash
Add_Iptables_Rules()
{
#add iptables firewall rules
if command -v iptables >/dev/null 2>&1; then
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -I INPUT 2 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT
iptables -I INPUT 4 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 5 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT 6 -p tcp --dport 3306 -j DROP
iptables -I INPUT 7 -p icmp -m icmp --icmp-type 8 -j ACCEPT
if [ "$PM" = "yum" ]; then
yum -y install iptables-services
service iptables save
service iptables reload
if command -v firewalld >/dev/null 2>&1; then
systemctl stop firewalld
systemctl disable firewalld
fi
StartUp iptables
elif [ "$PM" = "apt" ]; then
apt-get --no-install-recommends install -y iptables-persistent
if [ -s /etc/init.d/netfilter-persistent ]; then
/etc/init.d/netfilter-persistent save
/etc/init.d/netfilter-persistent reload
StartUp netfilter-persistent
else
/etc/init.d/iptables-persistent save
/etc/init.d/iptables-persistent reload
StartUp iptables-persistent
fi
fi
fi
}
Add_LNMP_Startup()
{
echo "Add Startup and Starting LNMP..."
\cp ${cur_dir}/conf/lnmp /bin/lnmp
chmod +x /bin/lnmp
StartUp nginx
StartOrStop start nginx
if [[ "${DBSelect}" =~ ^[6789]|10$ ]]; then
StartUp mariadb
StartOrStop start mariadb
sed -i 's#/etc/init.d/mysql#/etc/init.d/mariadb#' /bin/lnmp
elif [[ "${DBSelect}" =~ ^[12345]$ ]]; then
StartUp mysql
StartOrStop start mysql
elif [ "${DBSelect}" = "0" ]; then
sed -i 's#/etc/init.d/mysql.*##' /bin/lnmp
fi
StartUp php-fpm
StartOrStop start php-fpm
if [ "${PHPSelect}" = "1" ]; then
sed -i 's#/usr/local/php/var/run/php-fpm.pid#/usr/local/php/logs/php-fpm.pid#' /bin/lnmp
fi
}
Add_LNMPA_Startup()
{
echo "Add Startup and Starting LNMPA..."
\cp ${cur_dir}/conf/lnmpa /bin/lnmp
chmod +x /bin/lnmp
StartUp nginx
StartOrStop start nginx
if [[ "${DBSelect}" =~ ^[6789]|10$ ]]; then
StartUp mariadb
StartOrStop start mariadb
sed -i 's#/etc/init.d/mysql#/etc/init.d/mariadb#' /bin/lnmp
elif [[ "${DBSelect}" =~ ^[12345]$ ]]; then
StartUp mysql
StartOrStop start mysql
elif [ "${DBSelect}" = "0" ]; then
sed -i 's#/etc/init.d/mysql.*##' /bin/lnmp
fi
StartUp httpd
StartOrStop start httpd
}
Add_LAMP_Startup()
{
echo "Add Startup and Starting LAMP..."
\cp ${cur_dir}/conf/lamp /bin/lnmp
chmod +x /bin/lnmp
StartUp httpd
StartOrStop start httpd
if [[ "${DBSelect}" =~ ^[6789]|10$ ]]; then
StartUp mariadb
StartOrStop start mariadb
sed -i 's#/etc/init.d/mysql#/etc/init.d/mariadb#' /bin/lnmp
elif [[ "${DBSelect}" =~ ^[12345]$ ]]; then
StartUp mysql
StartOrStop start mysql
elif [ "${DBSelect}" = "0" ]; then
sed -i 's#/etc/init.d/mysql.*##' /bin/lnmp
fi
}
Check_Nginx_Files()
{
isNginx=""
echo "============================== Check install =============================="
echo "Checking ..."
if [[ -s /usr/local/nginx/conf/nginx.conf && -s /usr/local/nginx/sbin/nginx ]]; then
Echo_Green "Nginx: OK"
isNginx="ok"
else
Echo_Red "Error: Nginx install failed."
fi
}
Check_DB_Files()
{
isDB=""
if [[ "${DBSelect}" =~ ^[6789]|10$ ]]; then
if [[ -s /usr/local/mariadb/bin/mysql && -s /usr/local/mariadb/bin/mysqld_safe && -s /etc/my.cnf ]]; then
Echo_Green "MariaDB: OK"
isDB="ok"
else
Echo_Red "Error: MariaDB install failed."
fi
elif [[ "${DBSelect}" =~ ^[12345]$ ]]; then
if [[ -s /usr/local/mysql/bin/mysql && -s /usr/local/mysql/bin/mysqld_safe && -s /etc/my.cnf ]]; then
Echo_Green "MySQL: OK"
isDB="ok"
else
Echo_Red "Error: MySQL install failed."
fi
elif [ "${DBSelect}" = "0" ]; then
Echo_Green "Do not install MySQL/MariaDB."
isDB="ok"
fi
}
Check_PHP_Files()
{
isPHP=""
if [ "${Stack}" = "lnmp" ]; then
if [[ -s /usr/local/php/sbin/php-fpm && -s /usr/local/php/etc/php.ini && -s /usr/local/php/bin/php ]]; then
Echo_Green "PHP: OK"
Echo_Green "PHP-FPM: OK"
isPHP="ok"
else
Echo_Red "Error: PHP install failed."
fi
else
if [[ -s /usr/local/php/bin/php && -s /usr/local/php/etc/php.ini ]]; then
Echo_Green "PHP: OK"
isPHP="ok"
else
Echo_Red "Error: PHP install failed."
fi
fi
}
Check_Apache_Files()
{
isApache=""
if [[ "${PHPSelect}" =~ ^[6789]|10$ ]]; then
if [[ -s /usr/local/apache/bin/httpd && -s /usr/local/apache/modules/libphp7.so && -s /usr/local/apache/conf/httpd.conf ]]; then
Echo_Green "Apache: OK"
isApache="ok"
else
Echo_Red "Error: Apache install failed."
fi
elif [[ "${PHPSelect}" =~ ^11$ ]]; then
if [[ -s /usr/local/apache/bin/httpd && -s /usr/local/apache/modules/libphp.so && -s /usr/local/apache/conf/httpd.conf ]]; then
Echo_Green "Apache: OK"
isApache="ok"
else
Echo_Red "Error: Apache install failed."
fi
else
if [[ -s /usr/local/apache/bin/httpd && -s /usr/local/apache/modules/libphp5.so && -s /usr/local/apache/conf/httpd.conf ]]; then
Echo_Green "Apache: OK"
isApache="ok"
else
Echo_Red "Error: Apache install failed."
fi
fi
}
Clean_DB_Src_Dir()
{
echo "Clean database src directory..."
if [[ "${DBSelect}" =~ ^[12345]$ ]]; then
rm -rf ${cur_dir}/src/${Mysql_Ver}
elif [[ "${DBSelect}" =~ ^[6789]|10$ ]]; then
rm -rf ${cur_dir}/src/${Mariadb_Ver}
fi
if [[ "${DBSelect}" = "4" ]]; then
[[ -d "${cur_dir}/src/${Boost_Ver}" ]] && rm -rf ${cur_dir}/src/${Boost_Ver}
elif [[ "${DBSelect}" = "5" ]]; then
[[ -d "${cur_dir}/src/${Boost_New_Ver}" ]] && rm -rf ${cur_dir}/src/${Boost_New_Ver}
fi
}
Clean_PHP_Src_Dir()
{
echo "Clean PHP src directory..."
rm -rf ${cur_dir}/src/${Php_Ver}
}
Clean_Web_Src_Dir()
{
echo "Clean Web Server src directory..."
if [ "${Stack}" = "lnmp" ]; then
rm -rf ${cur_dir}/src/${Nginx_Ver}
elif [ "${Stack}" = "lnmpa" ]; then
rm -rf ${cur_dir}/src/${Nginx_Ver}
rm -rf ${cur_dir}/src/${Apache_Ver}
elif [ "${Stack}" = "lamp" ]; then
rm -rf ${cur_dir}/src/${Apache_Ver}
fi
[[ -d "${cur_dir}/src/${Openssl_Ver}" ]] && rm -rf ${cur_dir}/src/${Openssl_Ver}
[[ -d "${cur_dir}/src/${Openssl_New_Ver}" ]] && rm -rf ${cur_dir}/src/${Openssl_New_Ver}
}
Print_Sucess_Info()
{
Clean_Web_Src_Dir
echo "+------------------------------------------------------------------------+"
echo "| LNMP V${LNMP_Ver} for ${DISTRO} Linux Server, Written by Licess |"
echo "+------------------------------------------------------------------------+"
echo "| For more information please visit https://lnmp.org |"
echo "+------------------------------------------------------------------------+"
echo "| lnmp status manage: lnmp {start|stop|reload|restart|kill|status} |"
echo "+------------------------------------------------------------------------+"
echo "| phpMyAdmin: http://IP/phpmyadmin/ |"
echo "| phpinfo: http://IP/phpinfo.php |"
echo "| Prober: http://IP/p.php |"
echo "+------------------------------------------------------------------------+"
echo "| Add VirtualHost: lnmp vhost add |"
echo "+------------------------------------------------------------------------+"
echo "| Default directory: ${Default_Website_Dir} |"
if [ "${DBSelect}" != "0" ]; then
echo "+------------------------------------------------------------------------+"
echo "| MySQL/MariaDB root password: ${DB_Root_Password} |"
fi
echo "+------------------------------------------------------------------------+"
lnmp status
if command -v ss >/dev/null 2>&1; then
ss -ntl
else
netstat -ntl
fi
stop_time=$(date +%s)
echo "Install lnmp takes $(((stop_time-start_time)/60)) minutes."
Echo_Green "Install lnmp V${LNMP_Ver} completed! enjoy it."
}
Print_Failed_Info()
{
if [ -s /bin/lnmp ]; then
rm -f /bin/lnmp
fi
Echo_Red "Sorry, Failed to install LNMP!"
Echo_Red "Please visit https://bbs.vpser.net/forum-25-1.html feedback errors and logs."
Echo_Red "You can download /root/lnmp-install.log from your server,and upload lnmp-install.log to LNMP Forum."
}
Check_LNMP_Install()
{
Check_Nginx_Files
Check_DB_Files
Check_PHP_Files
if [[ "${isNginx}" = "ok" && "${isDB}" = "ok" && "${isPHP}" = "ok" ]]; then
Print_Sucess_Info
else
Print_Failed_Info
fi
}
Check_LNMPA_Install()
{
Check_Nginx_Files
Check_DB_Files
Check_PHP_Files
Check_Apache_Files
if [[ "${isNginx}" = "ok" && "${isDB}" = "ok" && "${isPHP}" = "ok" &&"${isApache}" = "ok" ]]; then
Print_Sucess_Info
else
Print_Failed_Info
fi
}
Check_LAMP_Install()
{
Check_Apache_Files
Check_DB_Files
Check_PHP_Files
if [[ "${isApache}" = "ok" && "${isDB}" = "ok" && "${isPHP}" = "ok" ]]; then
Print_Sucess_Info
else
Print_Failed_Info
fi
}