#!/bin/bash USER_NAME="korodm" USER_GROUP="korodm" WWW_DIR="/home/korodm/Documents/sites/" USER_REPO="korodm" PASS_REPO="***" REPO="bitbucket.org/" SQL_PASS="***" ################################################################################################################### # Проверка на права рута if [ "${UID}" -ne 0 ] then printf "Root:\t\t\t\t\t\033[0;31mнет\033[0m\n\nПриложение необходимо запустить от имени root!\n" exit else printf "Root:\t\t\t\t\t\033[0;32mда\033[0m\n" fi # Проверка на наличие передаваемых параметров if ! [ -n "${1}" ] then printf "Параметры:\t\t\t\t\033[0;31mno\033[0m\n\nПриложение необходимо использовать так:\n%s site_name\n" ${0} exit else printf "Параметры:\t\t\t\t\033[0;32m%s\033[0m\n" ${1} SITE=${1} fi # Проверка на существование рабочего каталога if ! [ -d "${WWW_DIR}" ] then printf "Рабочий каталог:\t\t\t\033[0;31mне существует\033[0m\n\nИзмените конфцигурацию скрипта.\n" exit else printf "Рабочий каталог:\t\t\t\033[0;32m%s\033[0m\n" ${WWW_DIR} fi # Проверка на существование каталога для сайта в рабочем каталоге if [ -d "${WWW_DIR}${SITE}" ] then printf "Каталог для сайта:\t\t\t\033[0;31mуже существует\033[0m\n\nИзмените назваение сайта.\n" exit else printf "Каталог для сайта:\t\t\t\033[0;32m%s%s\033[0m\n" ${WWW_DIR} ${SITE} fi # Проверка существования репозитария REPO_TRUE=`curl "https://${REPO}${USER_REPO}/${SITE}" 2> /dev/null | grep -c "Bitbucket_404.png"` if [[ "${REPO_TRUE}" -eq 1 ]] then printf "Репозитарий:\t\t\t\t\033[0;31mне существует\033[0m\n\nСоздайте репозитарий.\n" exit else printf "Репозитарий:\t\t\t\t\033[0;32mhttps://%s%s/%s\033[0m\n" ${REPO} ${USER_REPO} ${SITE} fi # Клонируем репозиторий cd ${WWW_DIR} hg clone "https://${USER_REPO}:${PASS_REPO}@${REPO}${USER_REPO}/${SITE}" > /dev/null printf "Клонирование репозитария:\t\t\\033[0;32mзавершено\033[0m\n" mkdir -p ${WWW_DIR}${SITE}/public_html chown -R ${USER_NAME}:${USER_GROUP} ${WWW_DIR}${SITE} printf "Локальная папка:\t\t\t\033[0;32m%s%s/public_html\033[0m\n" ${WWW_DIR} ${SITE} # Создание виртуального хоста printf "<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName ${SITE} DocumentRoot ${WWW_DIR}${SITE}/public_html <Directory /> Options FollowSymLinks AllowOverride all </Directory> <Directory ${WWW_DIR}${SITE}/public_html/> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory \"/usr/lib/cgi-bin\"> AllowOverride all Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /doc/ \"/usr/share/doc/\" <Directory \"/usr/share/doc/\"> Options Indexes MultiViews FollowSymLinks AllowOverride all Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>\n" > /etc/apache2/sites-available/${SITE} printf "Файл конфигурации Apache:\t\t\033[0;32mсоздан\033[0m\n" # Активация сайта a2ensite ${SITE} > /dev/nul printf "Сайт \033[0;32m%s:\t\t\t\tактивирован\033[0m\n" ${SITE} # Поиск свободного ip адреса num=1 LIMIT=255 while [ "${num}" -lt "${LIMIT}" ] do if [ `grep -c 127.0.1.${num} /etc/hosts` -ne 1 ] then echo "127.0.1.${num} ${SITE}" >> /etc/hosts break fi num=$((num+1)) done printf "Поиск свободного ip адреса:\t\t\033[0;32m127.0.1.%s\033[0m\n" ${num} # Перезагрузка Apache /etc/init.d/apache2 reload > /dev/null printf "Apache:\t\t\t\t\t\033[0;32mперезагружен\033[0m\n" # Создание index.php printf "<h1>Сайт %s работает!</h1> <h2>%s%s/public_html/index.php</h2> <?php phpinfo(); ?>" ${SITE} ${WWW_DIR} ${SITE} > ${WWW_DIR}${SITE}/public_html/index.php chown ${USER_NAME}:${USER_GROUP} ${WWW_DIR}${SITE}/public_html/index.php printf "Индексный файл:\t\t\t\t\033[0;32mhttp://%s/index.php\033[0m\n" ${SITE} # Создание базы данных mysql -uroot -p${SQL_PASS} --execute="create database ${SITE};" mysql -uroot -p${SQL_PASS} --execute="GRANT ALL PRIVILEGES ON ${SITE}.* TO ${SITE}@localhost IDENTIFIED by '${SITE}' WITH GRANT OPTION;" printf "База данных:\t\t\t\t\033[0;32m%s\033[0m\n" ${SITE} printf "Имя пользователя:\t\t\t\033[0;32m%s\033[0m\n" ${SITE} printf "Пароль:\t\t\t\t\t\033[0;32m%s\033[0m\n" ${SITE} printf "\n\033[0;32mСайт готов!\033[0m\n\n" exit