VestaCP vlastní Nginx a Apache templaty

Vytvoření vlastních templatu pro Nginx a Apache. Nyní pouze kopírujeme, později budeme upravovat.

Kopie existujících vzoru

# Nginx
cd /usr/local/vesta/data/templates/web/nginx
cp hosting.tpl D2A-zakladni-v1.tpl
cp hosting.stpl D2A-zakladni-v1.stpl
cp hosting.sh D2A-zakladni-v1.sh
chmod u+x /usr/local/vesta/data/templates/web/nginx/D2A-zakladni-v1.sh

cp caching.tpl D2A-cache-15m-v1.tpl
cp caching.stpl D2A-cache-15m-v1.stpl
cp caching.sh D2A-cache-15m-v1.sh
chmod u+x /usr/local/vesta/data/templates/web/nginx/D2A-cache-15m-v1.sh

# Apache
cd /usr/local/vesta/data/templates/web/apache2
cp default.tpl D2A-zakladni-v1.tpl
cp default.stpl D2A-zakladni-v1.stpl

Po tomto kroku je nutné upravit/přenastavit balíčky a již existující weby (v GUI). Tento krok jde zvládnout i v příkazové řádce:

/usr/local/vesta/bin/v-change-web-domain-tpl 'UZIVATEL' 'DOMENA' 'D2A-zakladni-v1' 'no'
/usr/local/vesta/bin/v-change-web-domain-proxy-tpl 'UZIVATEL' 'DOMENA' 'D2A-cache-15m-v1' 'jpeg,jpg,png,gif,bmp,ico,svg,tif,tiff,css,js,htm,html,ttf,otf,webp,woff,txt,csv,rtf,doc,docx,xls,xlsx,ppt,pptx,odf,odp,ods,odt,pdf,psd,ai,eot,eps,ps,zip,tar,tgz,gz,rar,bz2,7z,aac,m4a,mp3,mp4,ogg,wav,wma,3gp,avi,flv,m4v,mkv,mov,mpeg,mpg,wmv,exe,iso,dmg,swf' 'no'

Hromadné úpravy

Pro zjednodušení vytvářím jednoduchý skript.

#!/bin/bash

# mazu sklo
# clear

# prenastav-hosting
#
#   Sublime Text nastaveni
#     Tabsize: 2
#     Viev -> Line endings -> UNIX
#   Nastaveni prav pro spusteni
#     chmod u+x /d2a-sdilene-skripty/prenastav-hosting.bash
#   Pouziti skriptu
#     /d2a-sdilene-skripty/prenastav-hosting.bash uzivatel='UZIVATEL' domena='DOMENA' nginx='D2A-cache-15m-v1' apache='D2A-zakladni-v1'


#######################################################################
#
#
# Nastavovaci promenne
#
#
#######################################################################

# vystup - urcuje kam se ma zapisovat prubeh skriptu (kriticke chyby se zapisuji vzdy)
#       na-sklo
#       do-logu
#       vsude
#       nikde
vystup="na-sklo"

#######################################################################
#
#
# Staticke promenne - neupravovat
#
#
#######################################################################

# nazev skriptu (udava se bez .bash)
nazev_skriptu="prenastav-hosting"

# systemova nastaveni barev výstupu na sklo
c="\033[31m"
z="\033[32m"
tr="\033[0m"

# razitko datumu a casu
cas_raz=$(date '+%Y%m%d_%H%M%S_%N')
rok=$(date '+%Y')
mesic=$(date '+%m')
den=$(date '+%d')
hodina=$(date '+%H')

# jmeno a ip adresa masiny na ktere je spusteno
jmeno_host=$(hostname)
ip_host=$(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1')

# docasny adresar pro odkladani souboru (nesmi obsahovat lomitko na konci)
adresar_tmp="/tmp/${nazev_skriptu}"

# koren_logu - urcuje zakladni koren pro ukladani logu skriptu (nesmi obsahovat lomitko na konci)
#   default: /d2a-sdilene-skripty/prenastav-hosting/log 
koren_logu="/d2a-sdilene-skripty/log"

# cesta logu (nesmi obsahovat lomitko na konci)
adresar_logu="${koren_logu}/${nazev_skriptu}/${rok}"
soubor_logu="${adresar_logu}/${jmeno_host}_T${cas_raz}_IP${ip_host//./_}.log"

# koren data pro tento skript (nesmi obsahovat lomitko na konci)
#		default: /d2a-sdilene-skripty/data
koren_data="/d2a-sdilene-skripty/data"

# adresar data (nesmi obsahovat lomitko na konci)
adresar_data="${koren_data}/${nazev_skriptu}"

# prednastaveni ziskavanych promennych
domena="n"
uzivatel="n"
nginx="n"
apache="n"

# ziskani vstupu
for ARGUMENT in "$@"
do
	KEY=$(echo $ARGUMENT | cut -f1 -d=)
	VALUE=$(echo $ARGUMENT | cut -f2 -d=)   
	case "$KEY" in
		uzivatel)               uzivatel=${VALUE} ;;
		domena)                 domena=${VALUE} ;;
		nginx)               	nginx=${VALUE} ;;
		apache)                 apache=${VALUE} ;;
	*)   
	esac    
done

#######################################################################
#
#
# funkce vypisu na sklo / do logu / oboje
#
#
#######################################################################

function _ {
	cas="$(date '+%H:%M:%S')\t"
	if [ "${vystup}" == "na-sklo" ] || [ "${vystup}" == "vsude" ]; then
		printf "${cas}$* \n";
	fi
	if [ "${vystup}" == "do-logu" ] || [ "${vystup}" == "vsude" ]; then
		echo -e "${cas}$*" | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" >> "${soubor_logu}"
	fi  
}

#######################################################################
#
#
# funkce vytvoreni adresare pro logovani souboru
#
#
#######################################################################

function priprav_log_dir {
	max_pocet_pokusu=5
	prodleva_mezi_pokusy="1m"
	pocet_selhani=0
	for (( _i=1; _i<=max_pocet_pokusu; _i++ ))
	do
		printf "Overuji adresar logu ${1} (pokus ${_i} z ${max_pocet_pokusu}).\n"
		if [ -d "${1}" ]; then
			printf "${z}Ok:${tr} Adresar pro logovani existuje.\n"
			break
		else
			printf "${c}Er:${tr} Adresar pro logovani neexistuje.\n"
			printf "Cekam ${prodleva_mezi_pokusy}.\n"
			sleep "${prodleva_mezi_pokusy}"
			printf "Zahajuji pokus o vytvoreni adresare.\n"
			mkdir -p "${1}"
			pocet_selhani=${_i}
		fi
	done
	if [ ${pocet_selhani} = ${max_pocet_pokusu}  ]; then
		printf "${c}Chyba:${tr} Nepodarilo se vytvorit adresar logu. Lze ocekavat dalsi chyby. Koncim skript.\n"
		exit 1
	fi
}

#######################################################################
#
#
# funkce testovani promennych
# kriticka_promenna [nazev promenne] [zakazana hodnota] [chybova hlaska]
#
#
#######################################################################

function kriticka_promenna {
	promenna=$1
	zakazana_hodnota=$2
	chybova_hlaska=$3
	# promenna nenastavena
	if [ "${!promenna}" == "${zakazana_hodnota}" ]; then
		_ "${c}Chyba:${tr} Promenna ${promenna} nenastavena. ${chybova_hlaska} | Koncim skript."
		exit 1
	fi
}

#######################################################################
#
#
# funkce testovani promennych
# doporucena_promenna [nazev promenne] [zakazana hodnota] [chybova hlaska]
#
#
#######################################################################

function doporucena_promenna {
	promenna=$1
	zakazana_hodnota=$2
	chybova_hlaska=$3
	# promenna nenastavena
	if [ "${!promenna}" == "${zakazana_hodnota}" ]; then
		_ "${c}Upozorneni:${tr} Promenna ${promenna} nenastavena. ${chybova_hlaska} | Skript pokracuje."
	fi
}

#######################################################################
#
#
# pripravne prace
#
#
#######################################################################

# doinstalace baliku, ktere mohou chybet
# if ! dpkg-query -W -f='${Status}' sshpass | grep "ok installed"; then apt-get install sshpass -y; fi

# pokus o vytvoreni adresare pro log
priprav_log_dir ${adresar_logu}

#######################################################################
#
#
# zahajeni skriptu
#
#
#######################################################################

_ "${z}Spoustim skript ${nazev_skriptu}.bash.${tr}"
_ ""
_ "Uziti: prenastav-hosting.bash uzivatel='uzivatel' domena='domena' nginx='D2A-cache-15m-v1' apache='D2A-zakladni-v1'" 
_ ""
_ "Vypisuji zadani:"
_ "  uzivatel: ${uzivatel}"
_ "  domena: ${domena}"
_ "  nginx: ${nginx}"
_ "  apache: ${apache}"

_ ""
_ "Zahajuji kontroly"

kriticka_promenna "uzivatel" "n" ""
kriticka_promenna "domena" "n" ""
kriticka_promenna "nginx" "n" ""
kriticka_promenna "apache" "n" ""

_ "Kontroly dokonceny"
_ ""

#######################################################################
#
#
# hlavni cast skriptu
#
#
#######################################################################

_ "Nginx."
_ "$(/usr/local/vesta/bin/v-change-web-domain-proxy-tpl ${uzivatel} ${domena} ${nginx} 'jpeg,jpg,png,gif,bmp,ico,svg,tif,tiff,css,js,htm,html,ttf,otf,webp,woff,txt,csv,rtf,doc,docx,xls,xlsx,ppt,pptx,odf,odp,ods,odt,pdf,psd,ai,eot,eps,ps,zip,tar,tgz,gz,rar,bz2,7z,aac,m4a,mp3,mp4,ogg,wav,wma,3gp,avi,flv,m4v,mkv,mov,mpeg,mpg,wmv,exe,iso,dmg,swf' 'no')"

_ "Apache."
_ "$(/usr/local/vesta/bin/v-change-web-domain-tpl ${uzivatel} ${domena} ${apache} 'no')"

#######################################################################
#
#
# exit
#
#
#######################################################################

_ "${z}Koncim skript${tr}"
exit 0
;;

K tomuto skriptu máme ještě tabulku, která generuje volání skriptu se správnými parametry.

Odebrání nepotřebných vzorů

Po úpravě všech webů a úpravě výchozích balíčků je možné přejít k odebrání nepotřebných vzoru z nabídky.

# Nginx
cd /usr/local/vesta/data/templates/web/nginx
mkdir smazano
mv ./caching.sh ./smazano/caching.sh
mv ./default.stpl ./smazano/default.stpl
mv ./hosting.stpl ./smazano/hosting.stpl
mv ./http2.tpl ./smazano/http2.tpl
mv ./caching.stpl ./smazano/caching.stpl
mv ./default.tpl ./smazano/default.tpl
mv ./hosting.tpl ./smazano/hosting.tpl
mv ./caching.tpl ./smazano/caching.tpl
mv ./hosting.sh ./smazano/hosting.sh
mv ./http2.stpl ./smazano/http2.stpl
mv ./proxy_ip.tpl ./smazano/proxy_ip.tpl 

# Apache
cd /usr/local/vesta/data/templates/web/apache2
mkdir smazano
mv ./basedir.stpl ./smazano/basedir.stpl
mv ./default.stpl ./smazano/default.stpl
mv ./hosting.stpl ./smazano/hosting.stpl
mv ./phpcgi.sh ./smazano/phpcgi.sh
mv ./phpcgi.tpl ./smazano/phpcgi.tpl
mv ./phpfcgid.stpl ./smazano/phpfcgid.stpl
mv ./basedir.tpl ./smazano/basedir.tpl
mv ./default.tpl ./smazano/default.tpl
mv ./hosting.tpl ./smazano/hosting.tpl
mv ./phpcgi.stpl ./smazano/phpcgi.stpl
mv ./phpfcgid.sh ./smazano/phpfcgid.sh
mv ./phpfcgid.tpl ./smazano/phpfcgid.tpl

Hotovo

V tuto chvíli máme hotovo – základ je na světě. Úpravy jednotlivých souborů v příštím návodu.

Martin Horák

Martin Horák má na svědomí 29 příspěvků

Již nějakou chvíli se věnuji tvorbě webů, copywritingu a všem těm drobným a nepodstatným věcem okolo toho.

Najmout si mě můžete přes horní lištu a klikátko kontakty.

Diskuze

Vaše emailová adresa nebude publikována. Povinné údaje jsou označeny *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>