Lavagna sous Apache

De EjnTricks

Cet article présente la configuration mise en place sur un serveur Apache, en version 2.4, pour une instance de Lavagna.

Warning-icon.png Attention, la procédure présentée permet une mise à disposition sous un serveur Apache en mode "normal", sans SSL.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Study icon.png Etude

Avant de mettre en place la configuration Apache, il est nécessaire de bien comprendre le fonctionnement de Lavagna. C'est une application J2EE qui est déployée sous un serveur d'application, par défaut Jetty. Dans le cadre de cette installation, le war est déployé sous un serveur Tomcat.

De plus, il est souhaité d'y accéder depuis un serveur Apache avec une URL du type http://serveur/lavagna.

Enfin, Lavagna utilise la technologie des Websockets afin de mettre à jour l'interface en temps réel. Ce qui veut dire que la configuration Apache n'est pas une simple redirection avec le mode Proxy. Et pour cette installation, le serveur Apache sert plusieurs applications qui ne sont pas nécessairement sous le serveur Tomcat où est hébergé Lavagna


Icon-Configuration-Settings.png Configuration

La configuration mise en place est la suivante.

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/default
        DirectoryIndex index.php index.htm index.html

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

        RewriteEngine On
        RewriteCond %{HTTP:Upgrade} =websocket [NC]
        RewriteRule /(.*)           ws://localhost:8080/$1 [P,L]
        #RewriteCond %{HTTP:Upgrade} !=websocket [NC]
        #RewriteRule /(.*)           http://localhost:8080/$1 [P,L]

        ProxyPass /lavagna http://localhost:8080/lavagna
        ProxyPassReverse /lavagna http://localhost:8080/lavagna
        <Proxy http://localhost:8080/lavagna>
                Order allow,deny
                Allow from all
        </Proxy>

</VirtualHost>

Les premières instructions permettent de mettre en place la redirection des appels Websockets. Dnas le cas d'une demande en mode Upgrade avec le protocole websocket, l'argument NC permet de faire la comparaison insensible à la casse, l'appel est redirigé vers ws://localhost:8080/$1.

Les deuxième instructions ont été mises en commentaire pour éviter que tous les appels doit dirigés vers le serveur Tomcat. Les redirections vers l'instance Lavagna sont mises en place à l'aide des instructions ProxyPass et ProxyPassReverse.

Attention ceci ne fonctionne que si il n'y a que l'application Lavagna, utilisant les Websockets, qui est exposée sur ce serveur.


Viewer icon.png Voir Aussi

Discussion ayant permis de trouver la solution : http://stackoverflow.com/questions/27526281/websockets-and-apache-proxy-how-to-configure-mod-proxy-wstunnel La configuration ayant été utile est la suivante.

<VirtualHost *:80>
  ServerName www.domain2.com

  RewriteEngine On
  RewriteCond %{HTTP:Upgrade} =websocket [NC]
  RewriteRule /(.*)           ws://localhost:3001/$1 [P,L]
  RewriteCond %{HTTP:Upgrade} !=websocket [NC]
  RewriteRule /(.*)           http://localhost:3001/$1 [P,L]

  ProxyPassReverse / http://localhost:3001/
</VirtualHost>

Documentation Apache : https://httpd.apache.org/docs/current/fr/rewrite/flags.html

Ticket GitHub : https://github.com/digitalfondue/lavagna/issues/46