Создание зеркал серверов автоустановки Plesk
Поддержка локальных зеркал серверов автоустановки Plesk помогает избежать значительных трат времени и трафика на загрузку одних и тех же файлов снова и снова при установке или обновлении нескольких серверов Plesk. Локальные зеркала доступны по протоколу HTTP, и их можно указывать в качестве источника для загрузки пакетов Plesk во время установки или обновления.
Обязательные условия для создания локального зеркала репозитория
- На виртуальном хосте, используемом для зеркала, должны быть отключены все обработчики скриптов (php, pl, cgi, py, fcgi и т. д.).
- На виртуальном хосте или папке, используемых для зеркала, должна быть установлена опция +FollowSymLinks.
- Если не указаны другие источники, то с машины, на которой запускается скрипт, и с машины, где будут устанавливаться файлы, должно быть доступно следующее:- 
rsync://rsync.installer.plesk.com/autoinstallдля Plesk для Linux,
- 
rsync://autoinstall-win.plesk.com/autoinstallдля Plesk для Windows.
 
- 
- На машине, где запускается скрипт, PHP необходимо собрать с поддержкой следующих расширений (смотрите http://www.php.net/manual/en/ssh2.installation.php):- ssh2_connect,
- simplexml,
- XML DOM.
 
- Зеркала для Plesk для Windows и Plesk для Linux нельзя располагать в одних и тех же папках. Необходимо использовать отдельные пути для создания зеркал.
Настройка локального зеркала репозитория
- 
Скачайте и распакуйте инструмент Plesk Mirror Setup # wget https://support.plesk.com/hc/en-us/article_attachments/12388062580887/mirrorctl-3.1.4.zip # unzip mirrorctlv2.0.1.zip # cd mirrorctl 
- 
Проверьте наличие доступных версий продукта Используйте команду show-all-releasesдля просмотра доступных продуктов и командуos-listдля просмотра ОС, поддерживаемых определенным продуктом:# ./mirrorctl show-all-releases# ./mirrorctl os-list --release=PLESK_12_0_18 
- 
Выберите, какие версии продукта вы хотите иметь на зеркале Используйте команды cfg --addиcfg --removeдля изменения списка версий продукта, которые должны быть на зеркале:# ./mirrorctl cfg --add --release=PLESK_12_0_18 --os=cos5_i386 # ./mirrorctl cfg --add --win --release=PANEL_12_0_18_WIN --cfg-file=./plesk_win_mirror 
- 
Сохраните настройки локального зеркала репозитория в файл Используйте команду cfg --exportдля сохранения созданной конфигурации в файл:# ./mirrorctl cfg --export --path=./ Конфигурация будет сохранена в файл mirror.xmlв указанном месте.<?xml version="1.0" encoding="UTF-8"?> <xml> <release name="PLESK_12_0_18" version="12.0.18"> <os name="cos5_i386"/> </release> </xml> Для загрузки сохраненной конфигурации из файла используйте команду cfg --import:# ./mirrorctl cfg --import --cfg-file=./mirror.xml 
- 
Создайте зеркало репозитория Прежде всего создайте папку для зеркала: # mkdir /var/www/html/mirror/ # mkdir /var/www/html/mirror_windows/ 
Затем используйте команду
updateдля синхронизации зеркала с официальным репозиторием:# ./mirrorctl update --path=/var/www/html/mirror/ # ./mirrorctl update --win --path=/var/www/html/mirror_windows/ --cfg-file=./plesk_win_mirror
Примечание: Этот репозиторий можно использовать для установки только тех версий продукта и ОС, которые были указаны в конфигурации зеркала. Все остальные версии будут недоступны для утилиты autoinstaller в этом репозитории.
Проверьте список доступных версий продукта в созданном репозитории:
# ./mirrorctl show-all-releases --src-host=/var/www/html/mirror/
# ./mirrorctl show-all-releases --win --src-host=/var/www/html/mirror_windows/

Теперь можно использовать локальное зеркало репозитория в процессе установки и обновления Plesk.
Использование локального зеркала репозитория
Зеркало можно использовать одним из следующих способов:
- 
изменив преобразование DNS и настроив веб-хост зеркала так, чтобы https://autoinstall.plesk.com(для Linux) илиhttp://autoinstall-win.plesk.com/(для Windows) указывали на зеркало;
- 
указав URL зеркала в переменной SOURCEв файле/root/.autoinstallerrcна машине, где запускается автоустановщик;[root@container ~]# cat /root/.autoinstallerrc SOURCE=http://uri.of.local.mirror/here/ 
- 
указав URL зеркала в опции --sourceпри запуске автоустановщика в интерактивном режиме.
Поддержка удаленных локальных зеркал репозиториев
Инструмент Plesk Mirror Setup может управлять репозиториями, расположенными как в той же файловой системе, так и на удаленных серверах. Для указания удаленного исходного и удаленного целевого зеркал используются опции --path и --src-host.
Используйте --path для указания удаленного целевого зеркала:
- 
С использованием конкретного пользователя, пароля и хоста: --path=user:UserSecurePassword@mymirror.tld:344/var/www/html/ --path=user:UserSecurePassword@192.168.100.100:22/var/www/html/ --path=root:RootSecurePassword@localhost:/var/www/html/ 
- 
С использованием авторизации ключами SSH (требуются и закрытый, и открытый ключи): --path=192.168.100.100:/var/www/html/ Если для данного пользователя не существует пары RSA по умолчанию (id_rsa и id_rsa_pub), то будет использоваться пара DSA по умолчанию (id_dsa и id_dsa.pub) из папки $HOME/.ssh/.--path=user@mymirror.tld:344/var/www/html/ 
- 
Используйте конкретные ключи SSH как дополнительные опции утилиты mirrorctl: --path=root@mymirror.tld:344/var/www/html/ --private-key=~/.ssh/id_mirror --public-key=~/.ssh/id_mirror.pub 
Используйте --src-host для указания удаленного исходного зеркала:
- 
С помощью rsync по протоколу SSH: --src-host=test@192.168.100.100:/var/www/html/test-mirror/ --src-host=mytestmirror.tld:/var/www/html/test-mirror/ - В приведенном выше случае запрещено указывать пароль пользователя или порт SSH (22).
- В случае использования опции --src-hostдля пользователя, запустившего инструмент, должна быть настроена авторизация ключами SSH, чтобы он мог получить доступ к хосту, указанному опцией--src-host, в качестве пользователя, указанного этой опцией.
- Если опция --src-hostиспользуется вместе с опцией--path, то, опять же, для пользователя, указанного опцией--path, должна быть настроена авторизация ключами SSH, чтобы он мог получить доступ с хоста, указанного опцией--path, к хосту, указанному опцией--src-host, в качестве пользователя, указанного опцией--src-host.
 
- 
Использование процесса rsync на исходном хосте: --src-host=rsync://mytestmirror.tld:873/testmirror 
Пример настройки rsync:
# head /etc/rsyncd.conf
[testmirror]
path = /var/www/html/test-mirror/
comment = Test repository
# cat /etc/xinetd.d/rsync
service rsync
{
# disable = yes
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
Пример 1: Настройка периодических обновлений для локального зеркала репозитория
Цель: удостовериться, что зеркало с выбранными версиями продуктов находится в актуальном состоянии.
- 
Создайте конфигурацию зеркала, добавив необходимые версии продуктов и операционные системы: # /home/user/mirrorctl/mirrorctl cfg --add --release=PLESK_12_0_18 --os=cos5_i386 --cfg-file=/var/www/html/mirror/myconfig.xml # /home/user/mirrorctl/mirrorctl cfg --add --release=PLESK_12_0_18 --os=rhel5_i386 --cfg-file=/var/www/html/mirror/myconfig.xml # /home/user/mirrorctl/mirrorctl cfg --add --release=PLESK_11_5_30 --os=cos5_i386 --cfg-file=/var/www/html/mirror/myconfig.xml # /home/user/mirrorctl/mirrorctl cfg --add --win --release=PANEL_12_0_18_WIN --cfg-file=/var/www/html/mirror/windows_myconfig.xml 
- 
Настройте автоматическое обновление зеркала с помощью crontab: $ crontab -l # m h dom mon dow command 59 23 * * * cd /home/user/mirrorctl/ && ./mirrorctl update --path=/var/www/html/mirror/ --cfg-file=/var/www/html/mirror/myconfig.xml > ./mirror-cron.log 2>&1 59 22 * * * cd /home/user/mirrorctl/ && ./mirrorctl update --win --path=/var/www/html/mirror_windows/ --cfg-file=/var/www/html/mirror/windows_myconfig.xml > ./mirror-cron-win.log 2>&1 
Пример 2: Добавление новых операционных систем
Цель: добавить на зеркало еще одну операционную систему для конкретной версии продукта.
- 
Импортируйте с помощью утилиты mirrorctl текущую конфигурацию репозитория, которую вы создали ранее: # ./mirrorctl cfg --import --path=/var/www/html/mirror/ --cfg-file=myconfig 
- 
Добавьте новую ОС для нужной версии продукта: # ./mirrorctl cfg --add --release=PLESK_12_0_18 --os=deb6.0_i386 --cfg-file=myconfig 
- 
Синхронизируйте зеркало: # ./mirrorctl update --path=/var/www/html/mirror/ --cfg-file=myconfig 
Пример 3: Скачивание определенной версии/ОС
Цель: скачать конкретную ОС для конкретной версии продукта на зеркало из официального репозитория, не скачивая остальные отображаемые на зеркале версии/ОС.
- 
Создайте файл конфигурации, содержащий только те версии ОС/продукта, которые вы хотите скачать: # ./mirrorctl cfg --add --release=PLESK_12_0_18 --os=cos5_i386 --cfg-file=./temp-config # ./mirrorctl cfg --add --release=PLESK_12_0_18 --os=cos5_x86_64 --cfg-file=./temp-config 
- 
Скачайте указанные ОС в существующий репозиторий с помощью команды push: # ./mirrorctl push --path=/var/www/html/mirror/ --cfg-file==./temp-config 
Пример 4: Создание зеркала для тестирования новых версий продукта
Цель: создать тестовое зеркало для новой версии продукта, протестировать эту версию и загрузить только эту протестированную версию (без последних официальных обновлений, которые вы еще не тестировали) в основной репозиторий.
- 
Создайте тестовое зеркало для всех ОС новой версии продукта: # ./mirrorctl cfg --add --release=PLESK_12_0_18 --os=all --cfg-file=./test-config # ./mirrorctl update --path=/var/www/html/test-mirror/ --cfg-file=./test-config 
- 
Протестируйте новую версию; 
- 
Загрузите всю версию продукта в основной репозиторий: # ./mirrorctl push --src-host=/var/www/html/test-mirror/ --path=/var/www/html/mirror/ --cfg-file=./test-config 
Предупреждение: Если опция --src-host не используется, то новая версия продукта будет загружена из официального репозитория и может отличаться от той, которую вы только что тестировали.
Пример 5: Создание зеркала для тестирования выпусков продукта для новых ОС
Цель: создать тестовое зеркало со списком конкретных ОС для уже имеющихся на зеркале версий продукта с последними обновлениями, протестировать эти ОС, а затем загрузить некоторые из них в основной репозиторий.
- 
Создайте тестовое зеркало, где будут доступны несколько ОС для выбранной версии продукта: # ./mirrorctl cfg --add --release=PLESK_12_0_18 --os=cos5_i386 --cfg-file=./test-config # ./mirrorctl cfg --add --release=PLESK_12_0_18 --os=cos5_x86_64--cfg-file=./test-config # ./mirrorctl update --path=/var/www/html/test-mirror/ --cfg-file=./test-config 
- 
Получите список доступных выпусков продукта и ОС с тестового зеркала, созданного выше: # ./mirrorctl show-all-releases --src-host=/var/www/html/test-mirror/ # ./mirrorctl os-list --release=PLESK_12_0_18 --src-host=/var/www/html/test-mirror/ 
- 
Создайте новый файл конфигурации, содержащий только те выпуски и ОС с тестового зеркала, которые вы хотите добавить на основное зеркало: # ./mirrorctl cfg --add --release=PLESK_12_0_18 --os=cos5_i386 --src-host=/var/www/html/test-mirror/ --cfg-file=push.xml 
- 
Проверьте созданный файл конфигурации на наличие выпусков/ОС в тестовом репозитории: # ./mirrorctl cfg --check --src-host=/var/www/html/test-mirror/ --cfg-file=push.xml 
- 
Загрузите выбранные выпуски и ОС с тестового зеркала в основной репозиторий: # ./mirrorctl push --src-host=/var/www/html/test-mirror/ --path=/var/www/html/mirror/ --cfg-file=push.xml 
Предупреждение: Если опция --src-host не используется, то новая версия продукта будет загружена из официального репозитория и может отличаться от той, которую вы только что тестировали.
Предупреждение: Если не указана опция --cfg-file, будет использоваться конфигурационный файл по умолчанию BUILD/config.xml (относительно папки, в которой находится инструмент). То есть только версии/ОС из этого конфигурационного файла будут загружены в основной репозиторий.
Предупреждение: Если неверно указана опция --cfg-file, будет использоваться конфигурационный файл, указанный для команды push.

