Instantly share code, notes, and snippets.
Last active
July 15, 2019 16:50
-
Star
(0)
0
You must be signed in to star a gist -
Fork
(0)
0
You must be signed in to fork a gist
-
Save progreccor/e920e652f8b0ea5005f7aaa535b086df to your computer and use it in GitHub Desktop.
installer of phpmyadmin into the current directory for mc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
shell_patterns=0 | |
+ d /var/www/html & ! d /var/www/html/ & t d | |
1 архив сайта | |
GREEN='\033[0;32m' | |
LGREEN='\033[1;32m' | |
RED='\033[0;31m' | |
WHITE='\033[0m' | |
echo -e "Создаем архив сайта ${GREEN}%f${WHITE}" | |
if [ ! -z "`mysql -uroot -p${MYSQLPASS} -qfsBe "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='%f'" 2>&1`" ] | |
then | |
echo "Идет создание архива базы данных" | |
mysqldump -u root -p$MYSQLPASS %f > %f.sql | |
echo "База mysql создана" | |
else | |
echo "Базы данных у сайта нет" | |
fi | |
echo "Ждите пока идет создание архива сайта..." | |
tar -czf %f".tar.gz" %f && \ | |
echo %f".tar.gz created." | |
+ d /var/www/html & ! d /var/www/html/ & t d | |
2 cоздать сайт по имени папки | |
clear | |
cd /etc/httpd/conf.d | |
echo "<VirtualHost *:80>" > %f.conf | |
echo "ServerAdmin webmaster@localhost" >> %f.conf | |
echo "ServerName "%f >> %f.conf | |
echo "ServerAlias www."%f >> %f.conf | |
echo "DocumentRoot "%d"/"%f >> %f.conf | |
echo "<Directory "%d"/"%f">" >> %f.conf | |
echo "Options -Indexes +FollowSymLinks" >> %f.conf | |
echo "AllowOverride All" >> %f.conf | |
echo "Order allow,deny" >> %f.conf | |
echo "allow from all" >> %f.conf | |
echo "</Directory>" >> %f.conf | |
echo "ServerSignature Off" >> %f.conf | |
echo "ErrorLog /var/log/httpd/"%f"-error-log" >> %f.conf | |
echo "LogLevel warn" >> %f.conf | |
echo "CustomLog /var/log/httpd/"%f"-access-log combined" >> %f.conf | |
echo "</VirtualHost>" >> %f.conf | |
echo "Сайт %f создан" | |
echo "Осталось перезагрузить сервер" | |
echo "Для перезагрузки выберите в меню пункт \"Перезагрузить сервер\"" | |
echo "А сейчас, просто нажмите Enter" | |
read | |
=+ f \.sql$ | |
3 coздaть бaзy пo имeни фaйлa .sql | |
GREEN='\033[0;32m' | |
RED='\033[0;31m' | |
LRED='\033[1;31m' | |
WHITE='\033[0m' | |
if mysqladmin -u root -p$MYSQLPASS create %b | |
then | |
echo -e "База mysql с именем ${GREEN}%b${WHITE} создана" | |
else | |
echo "Произошла ошибка" | |
fi | |
+ d /var/www/html & ! d /var/www/html/ & t d | |
3 coздaть бaзy mysql пo имени папки | |
GREEN='\033[0;32m' | |
RED='\033[0;31m' | |
LRED='\033[1;31m' | |
WHITE='\033[0m' | |
if mysqladmin -u root -p$MYSQLPASS create %f | |
then | |
echo -e "База mysql с именем ${GREEN}%f${WHITE} создана" | |
else | |
echo "Произошла ошибка" | |
fi | |
+ d /var/www/html & ! d /var/www/html/ & t d | |
4 создать архив mysql | |
echo "Идет создание базы данных %f" | |
mysqldump -u root -p$MYSQLPASS %f > %f.sql | |
echo "База данных %f создана" | |
=+ f \.sql$ | |
5 импopт бaзы дaнных из фaйлa .sql | |
GREEN='\033[0;32m' | |
RED='\033[0;31m' | |
LRED='\033[1;31m' | |
WHITE='\033[0m' | |
echo "Идет импорт базы данных по адресу "%d"/"%f | |
if mysql -u root -p$MYSQLPASS %b < %d"/"%f | |
then | |
echo -e "База данных ${GREEN}%b${WHITE} успешно импортирована" | |
else | |
echo "Произошла ошибка импорта" | |
fi | |
+ d /var/www/html & ! d /var/www/html/ & t d | |
6 получить сертификат | |
clear | |
echo "Получение сертификата для сайта "%f | |
echo 'нужен www? (1- yes, 0 - no)' | |
read answer | |
if [ $answer -eq "1" ] | |
then | |
echo "получаем www и основной домен" | |
certbot --apache -d %f -d www.%f | |
else | |
echo "www не получаем" | |
certbot --apache -d %f | |
fi | |
+ d /var/www/html & ! d /var/www/html/ & t d | |
7 отозвать сертификат | |
GREEN='\033[0;32m' | |
RED='\033[0;31m' | |
LRED='\033[1;31m' | |
WHITE='\033[0m' | |
echo -e "отозвать сертификат ${GREEN}%f${WHITE}" | |
certbot revoke --cert-path /etc/letsencrypt/live/%f/cert.pem | |
rm /etc/httpd/conf.d/%f-le-ssl.conf &>/dev/null | |
+ d /var/www/html & ! d /var/www/html/ & t d | |
8 удалить сайт | |
GREEN='\033[0;32m' | |
RED='\033[0;31m' | |
LRED='\033[1;31m' | |
WHITE='\033[0m' | |
clear | |
echo -e "Вы действительно хотите удалить сайт ${LRED}%f${WHITE}?" | |
ask() { | |
local prompt default reply | |
if [ "${2:-}" = "Y" ]; then | |
prompt="Y/n или Д/н" | |
default=Y | |
elif [ "${2:-}" = "N" ]; then | |
prompt="y/N или д/Н" | |
default=N | |
else | |
prompt="y/n" | |
default= | |
fi | |
while true; do | |
# Ask the question (not using "read -p" as it uses stderr not stdout) | |
if [ -z "$1" ] | |
then | |
echo -n "[$prompt]" | |
else | |
echo -n "$1 [$prompt] " | |
fi | |
# Read the answer (use /dev/tty in case stdin is redirected from somewhere else) | |
read reply </dev/tty | |
# Default? | |
if [ -z "$reply" ]; then | |
reply=$default | |
fi | |
# Check if the reply is valid | |
case "$reply" in | |
Y*|y*|Д*|д*) return 0 ;; | |
N*|n*|Н*|н*) return 1 ;; | |
esac | |
done | |
} | |
silent() | |
{ | |
"$@" &>/dev/null | |
} | |
if ! [ -d "%d/%f" ] | |
then | |
echo "Это не является папкой сайта. Удаление прервано." | |
exit | |
fi | |
ask "" N || exit | |
echo "Проверяем наличие сертификата у сайта" | |
if certbot certificates --cert-name %f | grep %f &>/dev/null | |
then | |
echo "У сайта есть SSL сертификат" | |
echo "Производим отзыв сертификата" | |
certbot revoke --cert-path /etc/letsencrypt/live/%f/cert.pem | |
else | |
echo "У сайта нет SSL сертификата" | |
fi | |
rm /etc/httpd/conf.d/%f* &>/dev/null | |
if [[ $? -eq 0 ]] | |
then | |
echo -e "Файлы виртуальных хостов ${GREEN}/etc/httpd/conf.d/%f${WHITE} удалены." | |
else | |
echo -e "Файлы виртуального хоста ${RED}удалить не удалось${WHITE}." | |
fi | |
if apachectl configtest | |
then | |
apachectl restart | |
echo "Сервер перезагружен." | |
else | |
echo -e "Сервер не был перезагружен. ${RED}Ошибка${WHITE} в конфигурации апача." | |
echo -e "Удаление сайта ${RED}прервано${WHITE}" | |
exit | |
fi | |
rm -R %d/%f | |
if [[ $? -eq 0 ]] | |
then | |
echo -e "Папка сайта ${GREEN}%f${WHITE} удалена" | |
else | |
echo -e "В процессе удаления папки сайта ${RED}%f${WHITE} возникли проблемы" | |
fi | |
rm /var/log/httpd/%f* &>/dev/null | |
if [[ $? -eq 0 ]] | |
then | |
echo -e "Логи сайта ${GREEN}удалены${WHITE}." | |
else | |
echo -e "Логи сайта ${RED}удалены не были${WHITE}." | |
fi | |
if [ ! -z "`mysql -uroot -p${MYSQLPASS} -qfsBe "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='%f'" 2>&1`" ] | |
then | |
echo "У сайта есть база данных" | |
if mysqladmin -f -u root -p${MYSQLPASS} drop %f | |
then | |
echo -e "База данных ${GREEN}%f${WHITE} удалена" | |
else | |
echo -e "При удалении базы данных ${RED}%f${WHITE} произошли ${RED}ошибки${WHITE}" | |
fi | |
fi | |
echo "Убедитесь что для сайта не установлены задания cron (удалить можно командой crontab -e):" | |
crontab -l | |
echo "Нажмите Enter" | |
+ d /var/www/html & ! d /var/www/html/ & t d | |
k удалить базу данных | |
GREEN='\033[0;32m' | |
RED='\033[0;31m' | |
LRED='\033[1;31m' | |
WHITE='\033[0m' | |
ask() { | |
# https://gist.github.com/davejamesmiller/1965569 | |
local prompt default reply | |
if [ "${2:-}" = "Y" ]; then | |
prompt="Y/n или Д/н" | |
default=Y | |
elif [ "${2:-}" = "N" ]; then | |
prompt="y/N или д/Н" | |
default=N | |
else | |
prompt="y/n" | |
default= | |
fi | |
while true; do | |
# Ask the question (not using "read -p" as it uses stderr not stdout) | |
if [ -z "$1" ] | |
then | |
echo -n "[$prompt]" | |
else | |
echo -n "$1 [$prompt] " | |
fi | |
# Read the answer (use /dev/tty in case stdin is redirected from somewhere else) | |
read reply </dev/tty | |
# Default? | |
if [ -z "$reply" ]; then | |
reply=$default | |
fi | |
# Check if the reply is valid | |
case "$reply" in | |
Y*|y*|Д*|д*) return 0 ;; | |
N*|n*|Н*|н*) return 1 ;; | |
esac | |
done | |
} | |
if [ ! -z "`mysql -uroot -p${MYSQLPASS} -qfsBe "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='%f'" 2>&1`" ] | |
then | |
echo -e "Вы хотите удалить базу данных ${LRED}%f${WHITE}?" | |
if ! ask "" N | |
then | |
echo "База данных не была удалена" | |
exit 0 | |
fi | |
if mysqladmin -f -u root -p${MYSQLPASS} drop %f | |
then | |
echo -e "База данных ${GREEN}%f${WHITE} удалена" | |
else | |
echo -e "При удалении базы данных ${RED}%f${WHITE} произошли ${RED}ошибки${WHITE}" | |
fi | |
else | |
echo -e "У сайта ${RED}%f${WHITE} нет базы данных" | |
fi | |
+ t d | |
9 RW для группы на каталог | |
chmod -R o=r,g=rwX,u=rwX %d"/"%f | |
+ t d | |
a установить владельцем apache | |
echo "Устанавливаем владельцем папки и вложенных файлов "%d"/"%f | |
echo "Apache" | |
chown -R apache:apache %d"/"%f | |
+ d /var/www/html & ! d /var/www/html/ & t d | |
p настроить Joomla в папке | |
GREEN='\033[0;32m' | |
RED='\033[0;31m' | |
LRED='\033[1;31m' | |
WHITE='\033[0m' | |
if [ -f "/var/www/html/%f/configuration.php" ] | |
then | |
echo | |
echo -e "Сайт распознан как созданный на основе ${GREEN}Joomla${WHITE}" | |
sed -i "s/\$password.*$/\$password = '${MYSQLPASS}';/" /var/www/html/%f/configuration.php | |
echo "Новый пароль внесен в configuration.php" | |
sed -i "s/\$db .*$/\$db = '%f';/" /var/www/html/%f/configuration.php | |
echo "имя базы данных установлено в configuration.php" | |
sed -i "s/\$log_path .*$/\$log_path = '\/var\/www\/html\/%f\/logs' ;/" /var/www/html/%f/configuration.php | |
echo "Путь к папке logs скорректирован" | |
sed -i "s/\$tmp_path .*$/\$tmp_path = '\/var\/www\/html\/%f\/tmp' ;/" /var/www/html/%f/configuration.php | |
echo "Путь к папке tmp скорректирован" | |
echo | |
else | |
echo | |
echo -e "Сайт не имеет файла configuration.php" | |
echo | |
fi | |
r рестарт сервера apache | |
if apachectl configtest | |
then | |
apachectl restart | |
echo "сервер перезагружен" | |
else | |
echo "сервер не был перезагружен" | |
fi | |
f рестарт php-fpm | |
if ! php-fpm -t | |
then | |
echo "Ошибка в настройках. PHP-FPM не был перезагружен" | |
else | |
systemctl restart php-fpm | |
echo "PHP-FPM был перезагружен" | |
fi | |
+ d /var/www/html & ! d /var/www/html/ & t d | |
s Установка/обновление phpmysql | |
silent() | |
{ | |
if [ "$DEBUG" -eq 1 ] ; then | |
"$@" | |
else | |
"$@" &>/dev/null | |
fi | |
} | |
ask() { | |
# https://gist.github.com/davejamesmiller/1965569 | |
local prompt default reply | |
if [ "${2:-}" = "Y" ]; then | |
prompt="Y/n или Д/н" | |
default=Y | |
elif [ "${2:-}" = "N" ]; then | |
prompt="y/N или д/Н" | |
default=N | |
else | |
prompt="y/n" | |
default= | |
fi | |
while true; do | |
# Ask the question (not using "read -p" as it uses stderr not stdout) | |
if [ -z "$1" ] | |
then | |
echo -n "[$prompt]" | |
else | |
echo -n "$1 [$prompt] " | |
fi | |
# Read the answer (use /dev/tty in case stdin is redirected from somewhere else) | |
read reply </dev/tty | |
# Default? | |
if [ -z "$reply" ]; then | |
reply=$default | |
fi | |
# Check if the reply is valid | |
case "$reply" in | |
Y*|y*|Д*|д*) return 0 ;; | |
N*|n*|Н*|н*) return 1 ;; | |
esac | |
done | |
} | |
clear | |
PMA_PATH="%d/%f/pppma" | |
PMA_VERSION="latest" | |
PMA_LANGUAGE="all-languages" | |
PMA_CURRENT_VERSION= | |
PMA_TEMP_DIR="'./tmp/'" | |
PMA_ISSET=0 | |
FORCE_INSTALL=0 | |
LATEST=0 | |
DEBUG=0 | |
PMA_LATEST_VERSION_INFO_URL="https://www.phpmyadmin.net/home_page/version.php" | |
if [ "$PMA_VERSION" = "latest" ]; then | |
LATEST=1 | |
PMA_VERSION=$(wget -q -O /tmp/pma_lastest.html $PMA_LATEST_VERSION_INFO_URL && sed -ne '1p' /tmp/pma_lastest.html); | |
fi | |
PMA_DOWNLOAD_URL="https://files.phpmyadmin.net/phpMyAdmin/${PMA_VERSION}/phpMyAdmin-${PMA_VERSION}-${PMA_LANGUAGE}.tar.gz" | |
BLOWFISH_SECRET=$(tr -dc 'A-Za-z0-9' < /dev/urandom | dd bs=1 count=32 2>/dev/null) | |
echo -n "Установленная версия: " | |
if [ -d "$PMA_PATH" -a -f "${PMA_PATH}/README" ]; then | |
PMA_ISSET=1 | |
PMA_CURRENT_VERSION=$(sed -n 's/^Version \(.*\)$/\1/p' ${PMA_PATH}/README) | |
if ! [ -z "$PMA_CURRENT_VERSION" ]; then | |
echo "$PMA_CURRENT_VERSION" | |
else | |
echo "unknown version" | |
fi | |
else | |
echo "not installed" | |
fi | |
echo -n "Версия, доступная к установке: " | |
if [ $LATEST -eq 1 ]; then | |
echo "${PMA_VERSION} (latest)" | |
else | |
echo "$PMA_VERSION" | |
fi | |
if ! ask "Ставим phpmysql?" Y | |
then | |
echo "Установка прервана" | |
exit 1 | |
fi | |
PMA_PARENT_PATH="$(echo "$PMA_PATH" | sed 's/\/[^/]*$//' | sed 's/\/$//')" | |
PMA_DIRNAME="$(echo "$PMA_PATH" | sed 's/.*\///')" | |
cd $PMA_PARENT_PATH | |
if [ $PMA_ISSET -eq 1 ]; then | |
echo "Создаем архив... " | |
CUR_TIME=$(date +%%Y-%%m-%%d-%%H-%%M-%%S) | |
silent tar -zcf "${CUR_TIME}".tar.gz "$PMA_DIRNAME" | |
if [ -f "${CUR_TIME}.tar.gz" ]; then | |
rm -rf "$PMA_PATH" | |
echo -n "Создан файл" | |
echo " (${CUR_TIME}.tar.gz)" | |
else | |
echo "Not created" | |
echo | |
exit 1 | |
fi | |
fi | |
# Download new version | |
cd "$PMA_PARENT_PATH" | |
echo -n "Загружаем новую версию... " | |
silent wget -c "$PMA_DOWNLOAD_URL" | |
if [ -f "${PMA_PARENT_PATH}/phpMyAdmin-${PMA_VERSION}-${PMA_LANGUAGE}.tar.gz" ]; then | |
echo "Done" | |
else | |
echo "Unable to download!" | |
echo | |
exit 1 | |
fi | |
# Install | |
echo -n "Устанавливаем... " | |
silent tar xzf phpMyAdmin-"$PMA_VERSION"-"$PMA_LANGUAGE".tar.gz | |
silent mv phpMyAdmin-"$PMA_VERSION"-"$PMA_LANGUAGE" "$PMA_DIRNAME" | |
silent rm phpMyAdmin-"$PMA_VERSION"-"$PMA_LANGUAGE".tar.gz* | |
if [ -d "$PMA_PATH" ]; then | |
echo "Done" | |
else | |
echo "Can't install!" | |
echo | |
exit 1 | |
fi | |
rm -rf "$PMA_PATH"/setup | |
echo -n "Настраиваем... " | |
mkdir "$PMA_PATH"/tmp | |
cp "$PMA_PATH"/config.sample.inc.php "$PMA_PATH"/config.inc.php | |
sed -i "s|\$cfg\['blowfish_secret'\].*;|\$cfg['blowfish_secret'] = '${BLOWFISH_SECRET}';|" \ | |
"$PMA_PATH"/config.inc.php | |
chown -R apache:apache "$PMA_PATH" | |
echo "Done" | |
i IP адрес сервера | |
clear | |
ipaddress=$( ip route get 1 | awk '{print $NF;exit}' ) | |
echo $ipaddress | |
echo "Нажмите Enter" | |
sed -i "s/^i IP адрес сервера.*$/i IP адрес сервера ${ipaddress}/" /etc/mc/mc.menu | |
read | |
+ d /var/www/html & ! d /var/www/html/ & t d | |
j Скачать Joomla в папку | |
GREEN='\033[0;32m' | |
RED='\033[0;31m' | |
WHITE='\033[0m' | |
directory="/var/www/html" | |
adr=$( curl -s https://api.github.com/repos/joomla/joomla-cms/releases/latest | grep browser_download_url.*Stable-Full_Package.tar.gz | awk '{ print $2 }' | tr -d \" ) | |
cd $directory | |
wget $adr | |
tar xvzf *Stable-Full_Package.tar.gz -C $directory/%f | |
rm $directory/*Stable-Full_Package.tar.gz |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment