Поддержка локальных зеркал серверов автоустановки Plesk помогает избежать значительных трат времени и трафика на загрузку одних и тех же файлов снова и снова при установке или обновлении нескольких серверов Plesk. Локальные зеркала доступны по протоколу HTTP, и их можно указывать в качестве источника для загрузки пакетов Plesk во время установки или обновления.

Обязательные условия для создания локального зеркала репозитория

  1. На виртуальном хосте, используемом для зеркала, должны быть отключены все обработчики скриптов (php, pl, cgi, py, fcgi и т. д.).
  2. На виртуальном хосте или папке, используемых для зеркала, должна быть установлена опция +FollowSymLinks.
  3. Если не указаны другие источники, то с машины, на которой запускается скрипт, и с машины, где будут устанавливаться файлы, должно быть доступно следующее:
    • rsync://rsync.installer.plesk.com/autoinstall для Plesk для Linux,
    • rsync://autoinstall-win.plesk.com/autoinstall для Plesk для Windows.
  4. На машине, где запускается скрипт, PHP необходимо собрать с поддержкой следующих расширений (смотрите http://www.php.net/manual/en/ssh2.installation.php):
    • ssh2_connect,
    • simplexml,
    • XML DOM.
  5. Зеркала для Plesk для Windows и Plesk для Linux нельзя располагать в одних и тех же папках. Необходимо использовать отдельные пути для создания зеркал.

Настройка локального зеркала репозитория

  1. Скачайте и распакуйте инструмент 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
    
  2. Проверьте наличие доступных версий продукта

    Используйте команду show-all-releases для просмотра доступных продуктов и команду os-list для просмотра ОС, поддерживаемых определенным продуктом:

    # ./mirrorctl show-all-releases
    

    image 76560

    # ./mirrorctl os-list --release=PLESK_12_0_18
    

    image 76562

  3. Выберите, какие версии продукта вы хотите иметь на зеркале

    Используйте команды 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
    
  4. Сохраните настройки локального зеркала репозитория в файл

    Используйте команду 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
    
  5. Создайте зеркало репозитория

    Прежде всего создайте папку для зеркала:

    # 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/

image 76566

Теперь можно использовать локальное зеркало репозитория в процессе установки и обновления 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 для указания удаленного целевого зеркала:

  1. С использованием конкретного пользователя, пароля и хоста:

    --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/
    
  2. С использованием авторизации ключами 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/
    
  3. Используйте конкретные ключи SSH как дополнительные опции утилиты mirrorctl:

    --path=root@mymirror.tld:344/var/www/html/ --private-key=~/.ssh/id_mirror --public-key=~/.ssh/id_mirror.pub
    

Используйте --src-host для указания удаленного исходного зеркала:

  1. С помощью 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.
  2. Использование процесса 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: Настройка периодических обновлений для локального зеркала репозитория

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

  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
    
  2. Настройте автоматическое обновление зеркала с помощью 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: Добавление новых операционных систем

Цель: добавить на зеркало еще одну операционную систему для конкретной версии продукта.

  1. Импортируйте с помощью утилиты mirrorctl текущую конфигурацию репозитория, которую вы создали ранее:

    # ./mirrorctl cfg --import --path=/var/www/html/mirror/ --cfg-file=myconfig
    
  2. Добавьте новую ОС для нужной версии продукта:

    # ./mirrorctl cfg --add --release=PLESK_12_0_18 --os=deb6.0_i386 --cfg-file=myconfig
    
  3. Синхронизируйте зеркало:

    # ./mirrorctl update --path=/var/www/html/mirror/ --cfg-file=myconfig
    

Пример 3: Скачивание определенной версии/ОС

Цель: скачать конкретную ОС для конкретной версии продукта на зеркало из официального репозитория, не скачивая остальные отображаемые на зеркале версии/ОС.

  1. Создайте файл конфигурации, содержащий только те версии ОС/продукта, которые вы хотите скачать:

    # ./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
    
  2. Скачайте указанные ОС в существующий репозиторий с помощью команды push:

    # ./mirrorctl push --path=/var/www/html/mirror/ --cfg-file==./temp-config
    

Пример 4: Создание зеркала для тестирования новых версий продукта

Цель: создать тестовое зеркало для новой версии продукта, протестировать эту версию и загрузить только эту протестированную версию (без последних официальных обновлений, которые вы еще не тестировали) в основной репозиторий.

  1. Создайте тестовое зеркало для всех ОС новой версии продукта:

    # ./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
    
  2. Протестируйте новую версию;

  3. Загрузите всю версию продукта в основной репозиторий:

    # ./mirrorctl push --src-host=/var/www/html/test-mirror/ --path=/var/www/html/mirror/ --cfg-file=./test-config
    

Предупреждение: Если опция --src-host не используется, то новая версия продукта будет загружена из официального репозитория и может отличаться от той, которую вы только что тестировали.

Пример 5: Создание зеркала для тестирования выпусков продукта для новых ОС

Цель: создать тестовое зеркало со списком конкретных ОС для уже имеющихся на зеркале версий продукта с последними обновлениями, протестировать эти ОС, а затем загрузить некоторые из них в основной репозиторий.

  1. Создайте тестовое зеркало, где будут доступны несколько ОС для выбранной версии продукта:

    # ./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
    
  2. Получите список доступных выпусков продукта и ОС с тестового зеркала, созданного выше:

    # ./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/
    
  3. Создайте новый файл конфигурации, содержащий только те выпуски и ОС с тестового зеркала, которые вы хотите добавить на основное зеркало:

    # ./mirrorctl cfg --add --release=PLESK_12_0_18 --os=cos5_i386 --src-host=/var/www/html/test-mirror/ --cfg-file=push.xml
    
  4. Проверьте созданный файл конфигурации на наличие выпусков/ОС в тестовом репозитории:

    # ./mirrorctl cfg --check --src-host=/var/www/html/test-mirror/ --cfg-file=push.xml
    
  5. Загрузите выбранные выпуски и ОС с тестового зеркала в основной репозиторий:

    # ./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.