/ FreeBSD

Serveur HTTP/2 H2O sous FreeBSD 11 avec support PHP/MySQL

This article is in French and will be available soon in english.


H2O fait partie de la nouvelle génération de serveurs HTTP destinés à augmenter la rapidité d’affichage des pages web notamment en s’appuyant sur le protocole HTTP/2. Les performances annoncées sont plus que correctes même face au très bon Nginx.

N’ayant pu compiler H2O sur OpenBSD 6.0, j’en ai profité pour tester l’installation et la configuration sur FreeBSD 11.0 qui intègre le package associé. L’objectif ici va être de déployer et configurer tous les éléments nécessaires à la mise en ligne d’un CMS de type WordPress le tout servi en HTTP/2 avec compression via GZIP.

Installation des packages :

# pkg install h2o mysql56-server php56-mysql php56-mysqli 
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini 
# rehash

Configuration de mysqld :

# sysrc mysql_enable=yes 
# service mysql-server start

# mysql_secure_installation 
Enter current password for root (enter for none): **[ENTRER]** 
OK, successfully used password, moving on... 
Setting the root password ensures that nobody can log into the MySQL root user without the proper authorization. 
Set root password? [Y/n] **Y** 
New password: **mon-mot-de-passe** 
Re-enter new password: **mon-mot-de-passe** 
Password updated successfully!

Configuration de PHP :

# sysrc php_fpm_enable=yes

# vi /usr/local/etc/php-fpm.conf 
listen = /tmp/fcgi.sock 
listen.owner = www 
listen.group = www 
listen.mode = 0660

# service php-fpm start

Configuration de H2O :

# sysrc h2o_enable=yes 
# mkdir /var/www && chown www /var/www

# vi /usr/local/etc/h2o/h2o.conf 
user: www 
pid-file: /var/run/h2o.pid 
access-log: /var/log/h2o/h2o-access.log 
error-log: /var/log/h2o/h2o-error.log 
hosts: 
     "lina.cagedmonster.net": 
      listen: 
             port: 80 
             paths: "/": 
             file.dir: /var/www  
             redirect: url: /index.php/ 
             internal: YES 
             status: 307 
file.custom-handler:  
                    extension: .php 
                    fastcgi.connect: 
                                    port: /tmp/fcgi.sock 
                                    type: unix 
file.index: [ 'index.php', 'index.html' ] 

http2-reprioritize-blocking-assets: ON  
gzip: ON

# service h2o start

Vous voilà avec un serveur HTTP gérant le protocole HTTP/2 et la compression GZIP.

H2O est toutefois un peu jeune pour être utilisé en production, il n’est pas possible notamment de profiter d’un système d’URL REWRITE poussé comme Nginx ce qui est moins avantageux dans la mise en place de CMS où il est nécessaire de créer des URL sur-mesure.

Besoin d’aide ?

CagedMonster

CagedMonster

« I know everyone I've been everywhere I know everything Because I'm everybody » Ether - Nothingface

Read More