ServerAdmin.ru
28.9K subscribers
303 photos
35 videos
13 files
2.63K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Для анализа скорости работы сайта, на мой взгляд, лучший сервис - webpagetest.org. И в первую очередь из-за того, что его свободно можно развернуть в любом месте. И это будет полноценная полнофункциональная версия. В этом его главное преимущество. Вы можете локально развернуть его у себя и тестировать локальный же сайт, исключая все возможные помехи.

Одно время я много занимался сайтами, в том числе ускорением их работы. И webpagetest использовал постоянно. У меня была и локальная версия, и публичная, с подключением агентов из разных локаций. Я даже в общий доступ выставлял этот сервис и видел, что люди им пользуются.

Решил на днях посмотреть свежую версию и немного расстроился, не увидев готового образа Docker для быстрой установки сервиса. Установить можно и вручную. Я так делал, но это хлопотное занятие, так как сервис многокомпонентный. Не знаю, почему разработчики перестали сами его собирать.

Хорошая новость в том, что всё для сборки образа есть, но придётся это делать самостоятельно. В репозитории Docker Compose файл и краткая инструкция для сборки. Я стал собирать и столкнулся с множеством проблем. Со всеми в итоге разобрался и запустил у себя локальный сервис webpagetest. Рассказываю, как это сделал.

Для начала клонируем к себе репозиторий (он очень большой, 1 ГБ):

# git clone https://github.com/WPO-Foundation/webpagetest.git

В корне лежит файл docker-compose.yml, в котором инструкции для сборки с отсылкой к конфигам в docker/local. На момент написания заметки в Dockerfile-php есть проблемы. Я нашёл готовый Pull Request с решением это проблемы с зависимостями. Возможно вскоре он будет принят, но пока рабочий Dockerfile-php можно взять в форке от одного автора.

Второй момент - не собирался wptagent. Я его просто отключил, так как сам по себе он с сервером не связан. Его можно собрать и подключить отдельно. Так что закомментировал в композе всё, что связано с агентом:

# agent:
#  cap_add: #### Allows traffic shapping
#   - NET_ADMIN
#  build:
#   context: .
#   dockerfile: docker/local/Dockerfile-wptagent
#  command: python3 wptagent.py -vvvv --xvfb --dockerized --server http://web/work/ --location Test --key 1

То есть в исходном docker-compose.yml закомментировал строки с агентом и полностью заменил файл /docker/local/Dockerfile-php. Далее собрал сервер:

# docker-compose up

Он соберётся и запустится на 80-м порту сервера. Можно зайти по IP адресу. На странице http://172.26.180.29/install/ можно посмотреть информацию об установке и о подключенных агентах. Скорее всего у вас будет проблема с правами доступа на корневую директорию сервера. Я не стал разбираться, от какого пользователя он стартует и какие конкретно права нужны. Для теста просто дал права 0777 на всю папку www в корне репозитория:

# chmod -R 0777 www/

Теперь нам нужно подключить агента. Он может быть запущен как тут же в докере, так и на любом другом сервере. В этом и удобство webpagetest. Вы можете запустить сервер и любое количество агентов в разных местах.

На dockerhub есть собранный агент двухлетней давности. Я не стал его использовать, а собрал свежий из репозитория WebPageTest.agent. По инструкции всё собралось без проблем. После этого запускаем агента, прицепив его к нашему серверу. Перед этим нужно один модуль ядра загрузить:

# modprobe ifb numifbs=1
# docker run -d \
  -e SERVER_URL="http://172.26.180.29/work/" \
  -e LOCATION="Test" \
  -e NAME="Test" \
  -e KEY="123456789" \
  --cap-add=NET_ADMIN \
  --init \
  wptagent

Параметры в переменных обусловлены настройками Location на сервере в момент сборки, которые живут в docker/local/wptconfig. После этого через пару минут на сервере на странице http://172.26.180.29/install/ вы должны увидеть подключенного агента. После этого сервис полностью готов к выполнению тестов.

Если вам интересен этот сервис, то полное описание настройки есть у меня на сайте. Ни логика работы, ни формат конфигов не изменились. Разница только в том, что контейнеры нужно собирать самому.

#webpagetest