As we have pointed out before, Apache2 has full HTTP/2 Server push. In short, we are preferring Apache over Nginx now as Apache2 is really Free Software and offers more features now. In This Guides We Will Show the Steps To Install Apache2 With HTTP/2 Server Push On Ubuntu 16.04 With Features Which Are Not Available on Free Nginx Version.
Extra Steps To Install Apache2 With HTTP/2
In case you are not using HTTPS on existing server, please upgrade to HTTPS. We do have guide to install SSL cert with free of cost Let’s Encrypt Certbot.
Steps To Install Apache2 With HTTP/2 Server Push On Ubuntu 16.04
We will show steps to install PHP5 with Apache2 as separate commands. You can avoid to install PHP5 in case you do not want it. The below commands add the latest apache2 repository to your system and updates the list of available packages your system is aware of:
---
1 2 3 4 5 6 7 8 9 10 11 12 | sudo -i apt-get update apt-get upgrade -y apt-get dist-upgrade -y apt-get install python-software-properties add-apt-repository -y ppa:ondrej/apache2 add-apt-repository -y ppa:ondrej/php5 # reboot apt-key update apt-get upgrade -y apt-get install -y apache2 apt-get install -y php5-fpm |
Enable the http2 apache mod :
1 | a2enmod proxy_fcgi proxy proxy_http http2 ssl expires headers rewrite |
Optionally you can change php5-fpm config to use TCP connection instead of socket :
1 2 3 4 5 | nano /etc/php5/fpm/pool.d/www.conf # find : # listen = /var/run/php5-fpm.sock # replace it with t: listen = 127.0.0.1:9000 |
Open and edit the default HTTP virtual host :
1 | nano /etc/apache2/sites-enabled/000-default.conf |
If your public folders are at /var/www/html
location :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <VirtualHost *:443> ServerAdmin webmaster@example.com DocumentRoot /var/www/html ServerName example.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # php handler ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1 # for enabling h2 on an https server Protocols h2 http/1.1 # your full SSL configurations # ... </VirtualHost> <Location /index.html> Header add Link "</css/site.css>;rel=preload" Header add Link "</images/logo.jpg>;rel=preload" </Location> |
Restart the services to take effect :
1 2 | service apache2 restart service php5-fpm restart |
Useful Resources
Here are some resources which are possible useful for some of the readers :
1 2 3 | https://launchpad.net/~ondrej/+archive/ubuntu/apache2 https://icing.github.io/mod_h2/howto.html https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=apache-2.4.17 |