Использование http2 протокола для apache2 и ubuntu 18.04

Аватар пользователя jura12 jura12 2 апреля в 14:41

Протокол http2 призван ускорить интернет и уменьшить трафик. Хотел внедрить его на моем хостинге но оказалось что в конфигурации apache + mod_php + mpm prefork он не работает. Эта статья показывает какими командами можно быстро переделать конфигурацию в apache + php_fpm + mpm event + http2. Для успешной настройки нужен уже сконфигурированный https протокол (сертификат и настройки сайта для apache).

Устанавливаем правильную комбинацию apache и php

sudo add-apt-repository ppa:ondrej/php
sudo add-apt-repository ppa:ondrej/apache2
sudo apt update
sudo apt upgrade
sudo apt install apache2
sudo a2dismod php7.3
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 a2enmod http2
sudo service apache2 restart

Посмотреть использование протокола можно с помощью расширения HTTP/2 and SPDY indicator для броузера chrome.

Комментарии

Аватар пользователя bsyomov bsyomov 2 апреля в 17:49

А теперь, раз уж mod_php не используется, следующий логичный шаг, и вовсе избавиться от apache. Smile

Кстати, лучше было бы создать просто другой пулл с нужным пользователем, а не менять www. пулл www, который идёт по умолчанию, может использоваться разными приложениями устанавливаемыми из репозиториев, например, каким-нибудь phpmyadmin, и они расчитывают на пользователя www-data. Если же он не нужен, лучше просто отключить.

Аватар пользователя jura12 jura12 15 августа в 5:42

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

<FilesMatch ".+\.ph(ar|p|tml)$">
        SetHandler "proxy:unix:/run/php/php7.3-fpm-jura12.sock|fcgi://localhost"
</FilesMatch>

обратите внимание на имя файла sock. оно должно быть таким каким мы его поменяли ранее.

4. далее рестартуем сервисы.

sudo systemctl restart php7.3-fpm
sudo systemctl restart apache2
Аватар пользователя bsyomov bsyomov 15 августа в 11:14

Как-то так.
Лучше ещё посмотреть и поменять по необходимости настройки pm(тип, количество процессов).
Также тут иногда имеет смысл включить catch_workers_output, и изменить локальные настройки php, типа open_basedir, upload_tmp_dir, sendmail_path и.т.п.