Протокол http2 призван ускорить интернет и уменьшить трафик. Хотел внедрить его на моем хостинге но оказалось что в конфигурации apache + mod_php + mpm prefork он не работает. Эта статья показывает какими командами можно быстро переделать конфигурацию в apache + php_fpm + mpm event + http2. Для успешной настройки нужен уже сконфигурированный https протокол (сертификат и настройки сайта для apache).
Устанавливаем правильную комбинацию apache и php
sudo add-apt-repository ppa:ondrej/apache2
sudo apt update
sudo apt upgrade
sudo apt install apache2
sudo systemctl stop apache2
sudo apt install php7.3-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.3-fpm
sudo a2dismod mpm_itk
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
Добавляем в настройки действующего сайта ssl в каталоге /etc/apache2/sites-enabled/ в разделе <VirtualHost *:443>
строку Protocols h2 h2c http/1.1
Для запуска от пользователя меняем пользователя user = myusername и группу group = myusername в файле sudo nano /etc/php/7.3/fpm/pool.d/www.conf
. это мне нужно чтобы было удобней работать с сайтом и производить бэкап сайта.
Запускаем
sudo service apache2 restart
Посмотреть использование протокола можно с помощью расширения HTTP/2 and SPDY indicator для броузера chrome.
Комментарии
А теперь, раз уж mod_php не используется, следующий логичный шаг, и вовсе избавиться от apache.
Кстати, лучше было бы создать просто другой пулл с нужным пользователем, а не менять www. пулл www, который идёт по умолчанию, может использоваться разными приложениями устанавливаемыми из репозиториев, например, каким-нибудь phpmyadmin, и они расчитывают на пользователя www-data. Если же он не нужен, лучше просто отключить.
думаю что у меня получилось создать новый пул для определенного сайта. инструкция такая:
1. копируем файл /etc/php/7.3/fpm/pool.d/www.conf с именем своего сайта например jura12.conf
2. меняем там 3 вещи.
2.1. название пула с [www] на [jura12]
2.2. имя пользователя и группы с user = www-data
group = www-data на своего пользователя username и свою группу username
2.3. имя файла listen = /run/php/php7.3-fpm.sock на php7.3-fpm-jura12.sock
3. теперь в теле своего сайта /etc/apache2/sites-enabled/jura12.ru-le-ssl.conf в разделе Virtualhost добавляем строки:
SetHandler "proxy:unix:/run/php/php7.3-fpm-jura12.sock|fcgi://localhost"
</FilesMatch>
обратите внимание на имя файла sock. оно должно быть таким каким мы его поменяли ранее.
4. далее рестартуем сервисы.
sudo systemctl restart apache2
Как-то так.
Лучше ещё посмотреть и поменять по необходимости настройки pm(тип, количество процессов).
Также тут иногда имеет смысл включить catch_workers_output, и изменить локальные настройки php, типа open_basedir, upload_tmp_dir, sendmail_path и.т.п.