bash скрипт управления виртуальными хостами на CentOS (RedHat, Fedora)

В очередной раз создавая виртуальный хост на выделенном сервере — задумался об упрощении задачи, т.к. в 90% случаев использую схожую структуру хранения сайтов. Взял за основу сторонний скрипт, доработал под свои задачи и решил поделиться.

Описание

Скрипт умеет добавлять, удалять, включать, выключать виртуальные хосты на CentOS и подобных ОС. Ubuntu, Debian имеют несколько иную структуру, поэтому скрипт на них работать не будет.

Скрипт делает проверки на существование хостов при добавлении, интерактивно предлагает заменить файл конфигурации, не удаляет файлы в директории, если они уже присутствовали. На каждое спорное действие (удаление файлов, директорий) — задает вопрос на дальнейшее действие.

Настройка скрипта

Скрипт имеет ряд настроек, часть из которых берется из командной строки для удобства:

Действие, имя домена, домашняя директория задаются через параметры.

ПараметрОписание
ownerПосле создания директорий сайта — им задается владелец и группа. описанный в данном параметре
emailПрописывается в настройки хоста в параметр ServerAdmin
confDirДиректория, куда будут записаны конфигурационные файлы виртуальных хостов веб сервера
userDirДиректория, где будут храниться все виртуальные хосты
rootdirДиректория, в которой будут храниться виртуальных хостов
dirPermПрава вновь созданные директории виртуальных хостов
confDomainИмя конфигурационного файла

Использование

Добавление хоста

Самое простое использование:

Вывод:

Скрипт создает файл конфигурации виртуального хоста $confDomain (/etc/httpd/conf.d/test.com.conf) следующего содержания:

Вывод конфигурационного файла можно поменять в исходниках.

Скрипт создает директории, если это необходимо: $userDir/$rootDir/{tmp,public_html,logs} (/var/www/test.com/{tmp,public_html,logs}), выдает им права $dirPerm (chmod 775) и делает проверку на возможность записи в директорию $userDir/$rootDir.

В случае, если DocumentRoot отличается от $userDir/$rootDir/public_html, путь к нему можно передать вторым параметром относительно $rootDir:

Это полезно, когда у нас используются фреймворки (Yii2, Lavarel), в которых DocumentRoot находится в поддиректориях web, public и других.

Удаление

Удаление производится командой. Удаляется файл конфигурации, производится перезапуск веб сервера, делается запрос на удаление файлов виртуального хоста и в случае положительного ответа — удаляет всю директорию.

Вывод:

Включение / выключение

Данная процедура предусматривает переименовывание конфигурационного файла виртуального хоста, при выключении добавляется префикс .off, при включении — префикс удаляется:


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*
*