#!/bin/bash export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin # Check if user is root if [ $(id -u) != "0" ]; then echo "Error: You must be root to run this script!" exit 1 else if [ "$SUDO_UID" != "0" ]; then acme_sh_sudo="-f" fi fi echo "+-------------------------------------------+" echo "| Manager for LNMP, Written by Licess |" echo "+-------------------------------------------+" echo "| https://lnmp.org |" echo "+-------------------------------------------+" PHPFPMPIDFILE=/usr/local/php/var/run/php-fpm.pid arg1=$1 arg2=$2 lnmp_start() { echo "Starting LNMP..." /etc/init.d/nginx start /etc/init.d/mysql start /etc/init.d/php-fpm start for mphpfpm in /etc/init.d/php-fpm[5,7].[0-9] do if [ -f ${mphpfpm} ]; then ${mphpfpm} start fi done } lnmp_stop() { echo "Stoping LNMP..." /etc/init.d/nginx stop /etc/init.d/mysql stop /etc/init.d/php-fpm stop for mphpfpm in /etc/init.d/php-fpm[5,7].[0-9] do if [ -f ${mphpfpm} ]; then ${mphpfpm} stop fi done } lnmp_reload() { echo "Reload LNMP..." /etc/init.d/nginx reload /etc/init.d/mysql reload /etc/init.d/php-fpm reload for mphpfpm in /etc/init.d/php-fpm[5,7].[0-9] do if [ -f ${mphpfpm} ]; then ${mphpfpm} reload fi done } lnmp_kill() { echo "Kill nginx,php-fpm,mysql process..." killall nginx killall mysqld killall php-fpm killall php-cgi echo "done." } lnmp_status() { /etc/init.d/nginx status if [ -f $PHPFPMPIDFILE ]; then echo "php-fpm is runing!" else echo "php-fpm is stop!" fi /etc/init.d/mysql status } Function_Vhost() { case "$1" in [aA][dD][dD]) Add_VHost ;; [lL][iI][sS][tT]) List_VHost ;; [dD][eE][lL]) Del_VHost ;; [eE][xX][iI][tT]) exit 1 ;; *) echo "Usage: lnmp vhost {add|list|del}" exit 1 ;; esac } Function_Database() { case "$1" in [aA][dD][dD]) Add_Database_Menu Add_Database ;; [lL][iI][sS][tT]) List_Database ;; [dD][eE][lL]) Del_Database ;; [eE][dD][iI][tT]) Edit_Database ;; [eE][xX][iI][tT]) exit 1 ;; *) echo "Usage: lnmp database {add|list|del}" exit 1 ;; esac } Function_Ftp() { case "$1" in [aA][dD][dD]) Add_Ftp_Menu Add_Ftp ;; [lL][iI][sS][tT]) List_Ftp ;; [dD][eE][lL]) Del_Ftp ;; [eE][dD][iI][tT]) Edit_Ftp ;; [eE][xX][iI][tT]) exit 1 ;; [sS][hH][oO][wW]) Show_Ftp ;; *) echo "Usage: lnmp ftp {add|list|del}" exit 1 ;; esac } Add_VHost_Config() { if [ ! -f /usr/local/nginx/conf/rewrite/${rewrite}.conf ]; then echo "Create Virtul Host Rewrite file......" touch /usr/local/nginx/conf/rewrite/${rewrite}.conf echo "Create rewirte file successful,You can add rewrite rule into /usr/local/nginx/conf/rewrite/${rewrite}.conf." else echo "You select the exist rewrite rule:/usr/local/nginx/conf/rewrite/${rewrite}.conf" fi cat >"/usr/local/nginx/conf/vhost/${domain}.conf"</dev/null stty ${OLDCONFIG} echo "Create Virtul Host directory......" mkdir -p ${vhostdir} if [ "${access_log}" == "y" ]; then touch /home/wwwlogs/${al_name}.log fi echo "set permissions of Virtual Host directory......" chmod -R 755 ${vhostdir} chown -R www:www ${vhostdir} Add_VHost_Config cat >${vhostdir}/.user.ini<Certificate file" elif [ "${ssl_choice}" == "2" ]; then echo " =>Let's Encrypt" fi fi Echo_Green "================================================" } List_VHost() { echo "Nginx Virtualhost list:" ls /usr/local/nginx/conf/vhost/ | grep ".conf$" | sed 's/.conf//g' } Del_VHost() { echo "=======================================" echo "Current Virtualhost:" List_VHost echo "=======================================" domain="" while :;do Echo_Yellow "Please enter domain you want to delete: " read domain if [ "${domain}" == "" ]; then Echo_Red "Domain name can't be empty." else break fi done if [ ! -f "/usr/local/nginx/conf/vhost/${domain}.conf" ]; then echo "==========================================" echo "Domain: ${domain} was not exist!" echo "==========================================" exit 1 else if [ -f "${vhostdir}/.user.ini" ]; then chattr -i "${vhostdir}/.user.ini" rm -f "${vhostdir}/.user.ini" fi rm -f /usr/local/nginx/conf/vhost/${domain}.conf echo "========================================================" echo "Domain: ${domain} has been deleted." echo "Website files will not be deleted for security reasons." echo "You need to manually delete the website files." echo "========================================================" fi } Check_DB() { if [[ -s /usr/local/mariadb/bin/mysql && -s /usr/local/mariadb/bin/mysqld_safe && -s /etc/my.cnf ]]; then MySQL_Bin="/usr/local/mariadb/bin/mysql" MySQL_Ver=`/usr/local/mariadb/bin/mysql_config --version` elif [[ -s /usr/local/mysql/bin/mysql && -s /usr/local/mysql/bin/mysqld_safe && -s /etc/my.cnf ]]; then MySQL_Bin="/usr/local/mysql/bin/mysql" MySQL_Ver=`/usr/local/mysql/bin/mysql_config --version` else MySQL_Bin="None" fi } Make_TempMycnf() { cat >~/.my.cnf</tmp/.mysql.tmp chmod 600 /tmp/.mysql.tmp Check_DB ${MySQL_Bin} --defaults-file=~/.my.cnf /tmp/.add_mysql.sql</tmp/.add_mysql.sql</tmp/.del.mysql.sql</tmp/pass${ftp_account_name}</tmp/pass${ftp_account_name}</usr/local/acme.sh/upgrade.sh</dev/null 2>&1; then yum -y update nss yum -y install ca-certificates service crond restart chkconfig crond on elif command -v apt-get >/dev/null 2>&1; then /etc/init.d/cron restart update-rc.d cron defaults fi fi . "/usr/local/acme.sh/acme.sh.env" } Add_Letsencrypt() { if [[ "${vhostdir}" == "" || "${letsdomain}" == "" ]]; then Echo_Red "Two parameters are needed!" exit 1 fi if [ ! -d "${vhostdir}" ]; then Echo_Red "${vhostdir} does not exist or is not a directory!" exit fi Install_Check_Acme.sh if [ -s /usr/local/nginx/conf/ssl/${domain}/fullchain.cer ]; then echo "Removing exist domain certificate..." rm -rf /usr/local/nginx/conf/ssl/${domain} fi echo "Starting create SSL Certificate use Let's Encrypt..." /usr/local/acme.sh/acme.sh ${acme_sh_sudo} --issue ${letsdomain} -w ${vhostdir} --reloadcmd "/etc/init.d/nginx reload" lets_status=$? if [ "${lets_status}" = 0 ]; then Echo_Green "Let's Encrypt SSL Certificate create successfully." else Echo_Red "Let's Encrypt SSL Certificate create failed!" fi } Add_Buypass() { if [[ "${vhostdir}" == "" || "${letsdomain}" == "" ]]; then Echo_Red "Two parameters are needed!" exit 1 fi if [ ! -d "${vhostdir}" ]; then Echo_Red "${vhostdir} does not exist or is not a directory!" exit fi Install_Check_Acme.sh if [ -s /usr/local/nginx/conf/ssl/${domain}/fullchain.cer ]; then echo "Removing exist domain certificate..." rm -rf /usr/local/nginx/conf/ssl/${domain} fi echo "Starting register account..." /usr/local/acme.sh/acme.sh ${acme_sh_sudo} --server buypass --register-account --accountemail ${email_address} echo "Starting create SSL Certificate use Let's Encrypt..." /usr/local/acme.sh/acme.sh ${acme_sh_sudo} --server buypass --issue ${letsdomain} -w ${vhostdir} --days 170 --reloadcmd "/etc/init.d/nginx reload" lets_status=$? if [ "${lets_status}" = 0 ]; then Echo_Green "Let's Encrypt SSL Certificate create successfully." else Echo_Red "Let's Encrypt SSL Certificate create failed!" fi } Add_Zerossl() { if [[ "${vhostdir}" == "" || "${letsdomain}" == "" ]]; then Echo_Red "Two parameters are needed!" exit 1 fi if [ ! -d "${vhostdir}" ]; then Echo_Red "${vhostdir} does not exist or is not a directory!" exit fi Install_Check_Acme.sh if [ -s /usr/local/nginx/conf/ssl/${domain}/fullchain.cer ]; then echo "Removing exist domain certificate..." rm -rf /usr/local/nginx/conf/ssl/${domain} fi echo "Starting register account..." /usr/local/acme.sh/acme.sh ${acme_sh_sudo} --server zerossl --register-account --accountemail ${email_address} echo "Starting create SSL Certificate use Let's Encrypt..." /usr/local/acme.sh/acme.sh ${acme_sh_sudo} --server zerossl --issue ${letsdomain} -w ${vhostdir} --reloadcmd "/etc/init.d/nginx reload" lets_status=$? if [ "${lets_status}" = 0 ]; then Echo_Green "Let's Encrypt SSL Certificate create successfully." else Echo_Red "Let's Encrypt SSL Certificate create failed!" fi } Create_SSL_Config() { if [ ! -s /usr/local/nginx/conf/ssl/dhparam.pem ]; then echo "Create dhparam.pem..." mkdir -p /usr/local/nginx/conf/ssl/ openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048 fi cat >>"/usr/local/nginx/conf/vhost/${domain}.conf"<