#!/bin/bash # Этот скрипт создает виртуальный хост apache, а именно: # OK Создание директории для сайта (/home/%username%/www/%sitename%) # OK Директория для бекапов (backups) # OK Директория для файлов сайта (htdocs) # OK Файл логов access.log # OK Файл логов error.log # OK Скрипт для создания бекапов (backup) # OK Скрипт для исправления прав доступа (set_true_mods) # OK Создание виртуального хоста apache # OK Создание ssl виртуального хоста apache (силами le) # OK Включение обоих виртуальных хостов # OK Перезагрузка apache # OK Создание базы данных для сайта ####################################################################################################################### # блок глобальных переменных, можно заполнить сразу, чтоб каждый раз не вводить и пропускать шаги user_name=svc # Имя пользователя в системе Linux (будет использоваться его домашняя директория) email=svc@svcserv.ru # Email администратора сайта (используется в конфиге виртуального хоста apache) domain=svcserv.ru # Домен второго уровня сайта (используется в конфиге виртуального хоста apache) path_to_le=/home/svc/letsencrypt # Путь до letsencrypt is_https=Y # Создавать ли ssl is_db=Y # Создавать базу данных (имя БД, отдельный логин и пароль) db_pass=MyDBPass # Пароль для БД ####################################################################################################################### # сбор данных #echo -n "Введите пользователя сайта, для которого создать сайт: [$user_name]" #read tmp_user_name read -p "Введите пользователя сайта, для которого создать сайт: [$user_name] " tmp_user_name if [[ $tmp_user_name != "" ]] then user_name=$tmp_user_name fi #echo -n "Введите email администратора сайта: [$email]" #read tmp_email read -p "Введите email администратора сайта: [$email] " tmp_email if [[ $tmp_email != "" ]] then email=$tmp_email fi while [[ $site_name = "" ]]; do #echo -n "Введите название сайта: " #read site_name read -p "Введите название сайта: " site_name done read -p "Подключить ли https: [$is_https] " tmp_is_https case "$tmp_is_https" in y|Y) is_https=Y ;; n|N) is_https=N ;; esac read -p "Создать ли БД: [$is_db] " tmp_is_db case "$tmp_is_db" in y|Y) is_db=Y ;; n|N) is_db=N ;; esac if [[ $is_db = "Y" ]] then read -p "Введите пароль от БД: [$db_pass] " tmp_db_pass if [[ $tmp_db_pass != "" ]] then db_pass=$tmp_db_pass fi fi ################################################################################################################################ # создание папок и файлов mkdir -m 770 /home/$user_name/www/$site_name cd /home/$user_name/www/$site_name mkdir -m 770 htdocs mkdir -m 770 backups chown $user_name:www-data /home/$user_name/www/$site_name > access.log > error.log echo "" > htdocs/pi.php # скачать скрипт выставления правильных прав wget https://ss.svcserv.ru/set_true_mods chmod u+x,g+x set_true_mods ./set_true_mods # скачать скрипт бекапа #wget -P /home/svc/www/nc https://ss.svcserv.ru/backup wget https://ss.svcserv.ru/backup chmod u+x,g+x backup ./backup echo " ServerAdmin $email DocumentRoot /home/$user_name/www/$site_name/htdocs ServerName $site_name.$domain Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all Require all granted ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog /home/$user_name/www/$site_name/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel error CustomLog /home/$user_name/www/$site_name/access.log combined " > /etc/apache2/sites-available/$site_name.conf a2ensite $site_name > /dev/null # содание ssl хоста через летсенкрипт if [[ $is_https = "Y" ]] then $path_to_le/certbot-auto --authenticator webroot --webroot-path /home/$user_name/www/$site_name/htdocs --installer apache -d $site_name.$domain else systemctl reload apache2 fi # содание БД if [[ $is_db = "Y" ]] then #echo "Типа создается БД $site_name@127.0.0.1 пароль $db_pass" #echo "_____________________________________________________________DB____________________________" #mysql #"CREATE DATABASE `test` /*!40100 COLLATE 'utf8mb4_general_ci' */;"; mysql -D "mysql" -e "CREATE DATABASE $site_name /*!40100 COLLATE 'utf8mb4_general_ci' */;" #CREATE USER 'test'@'localhost' IDENTIFIED BY 'testpass'; #GRANT USAGE ON *.* TO 'test'@'localhost'; #GRANT SELECT, EXECUTE, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, LOCK TABLES ON `ss`.* TO 'test'@'localhost'; #FLUSH PRIVILEGES; mysql -e "CREATE USER '$site_name'@'localhost' IDENTIFIED BY '$db_pass';" mysql -e "GRANT USAGE ON *.* TO '$site_name'@'localhost';" mysql -e "GRANT SELECT, EXECUTE, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, LOCK TABLES ON $site_name.* TO '$site_name'@'localhost';" mysql -e "CREATE USER '$site_name'@'%' IDENTIFIED BY '$db_pass';" mysql -e "GRANT USAGE ON *.* TO '$site_name'@'%';" mysql -e "GRANT SELECT, EXECUTE, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, LOCK TABLES ON $site_name.* TO '$site_name'@'%';" mysql -e "FLUSH PRIVILEGES;" fi