Исходники официально хранятся на https://pecl.php.net/package/xhprof, но чтобы потом легко подгужить новую версию мы будем использоваться git репозиторий https://github.com/longxinH/xhprof.
Базовые операции по компилированию будем делать на компьютере с которго ведется разработка, на сервер закидываем только сам so файл, чтобы не нагружать его лишними библиотеками.
Компиляция модуля
Придумываем где мы будем хранить исходники, и закачиваем туда исходники нужного модуля:
cd /var/www/_php_sources
git clone https://github.com/longxinH/xhprof.git
cd xhprof/extension
phpize
./configure
make
После этого у нас будет скомпилирован файл .so который можно будет закидывать на сервер для установки.
Установка модуля
Копируем so файл на сервер, и прописываем в php.ini файле абсолютный путь у нашему so файлу:
nano /etc/php/7.2/fpm/php.ini
extension=/var/www/_php_sources/compiled/xhprof.so
Перезапускаем php сервис
service php7.2-fpm restart
Настройка админки
Вспомогательные файлы лежат в папке скачиваемого с гита модуля, поэтому на боевом сервере, хоть там и не компилируется сам модуль, мы тоже слокируем репозиторий в ту же папку и нужно сделать отдельный сайт для просмотра статистики. Для этого, так как у нас Caddy->nginx->php-fpm.
1. Прописываем Кадди обратиться к прокси nginx в CaddyFile:
#xhprof profiler address for this server
prof.toopro.org {
root * /var/www/_php_sources/xhprof/xhprof_html
header -Server
encode gzip zstd
reverse_proxy 127.0.0.1:8088
}
так как кадди будет переадресовывать на https и просить сертификат, для нашего домена придется реально прописать поддомен такой в DNS записях домена.
2. Добавляем "сайт" в конфиги nginx:
nano /etc/nginx/site-available/prof.toopro.org
server {listen 8088;
listen [::]:8088;
server_name prof2022.toopro.org;
root /var/www/_php_sources/xhprof/xhprof_html;index index.php;
#logs
access_log /var/log/nginx/access.log combined;
error_log /var/log/nginx/error.log;location ~* \.(php)$ {
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Делаем ссылку в запущенные сайты
ln /etc/nginx/sites-available/prof.toopro.org /etc/nginx/sites-enabled/
Перезапускам nginx
service nginx reload
Запуски на боевом сервере
Для работы на продакшене, лучше запускать его иногда, а не всегда, поэтому сделаем такой режим, как один раз на 100 запросов.
- Log in to post comments