Le Waf, le phpMyDomo et Nginx

bbtUn titre à la Sergio Leone, pour parler ici de l’installation de phpMydomo avec le serveur web Nginx, inclus dans l’image Domoticz par exemple.

Toutefois l’auteur de phpMyDomo nous précise sur son site :

For experts only: Using the Apache webserver is the recommended way to install phpMyDomo, but if you prefer to use Nginx instead of Apache, you might try the following unsupported method.

Pour ceux qui n’ont pas fait anglais, on traduirait ça par :

Pour experts seulement:Apache est la meilleure méthode pour phpMydomo, mais si vous préférez utiliser Nginx que Apache, vous pouvez essayer la méthode non supportée ci-dessous.

Allez y mais c’est casse gueule (non ça c’est moi qui rajoute)

Pour les tétus qui envisagent de poursuive, une grande partie de l’article initial basé sur Apache est valable et sera donc repris tel quel ici.

Allons y : <citation>

Dans notre quête désespérée d’augmenter notre WAF face à nos outils de geek, je vous propose aujourd’hui un logiciel d’interface de pilotage relié à Domoticz.

Pour rappel : Le Wife Acceptance Factor ou Woman Acceptance Factor (WAF) désigne le niveau de conflit potentiel engendré par un objet, auprès des non-utilisateurs cohabitant avec les utilisateurs dudit objet: source wikipedia.

Il s’agit d’une surcouche visuelle permettant de piloter Domoticz.

PhpMydomo  : les fonctionnalités

    • Les interrupteurs, les scènes et Dim (experimental) sont supportés.
    • Visualisation des sensors sur la même page ou sur une page personnalisée.
    • Visu des caméras  IP sur un page unique.
    • Affichage d’une galerie photo.
    • Lancement d’action depuis une URL.
    • Support de Responsive design :Affichage optimisé sur Android/IOS tablet, smartphone et web browser
    • Peu de puissance demandée : un serveur php suffit.
    • Free and Open Source.

Le résultat à obtenir est quelque chose comme cela :

01 03

</citation>

Cet outil peut être installé soit :

Comment savoir si on a Nginx ou apache installé ?

Dans un navigateur, tapez votre ip du raspberryNginx

Si vous avez  un message « It works » c’est Apache, direction ici

Bien ces préalables évacués , au boulot !

1 – Installation

Lecture de l’article originel ici dans la langue de Winston Churchill.

Déplaçons nous dans /tmp

cd /tmp

L’installation se fait avec un :

git clone https://github.com/phpMyDomo/phpMyDomo.git

ce qui sera pratique pour les mises à jour ensuite par un git pull (voir en fin d’article)

2 – Prérequis

  • Il nous faut un peu de php5, phpcurl …
    sudo apt-get install php5-fpm php5 php5-curl

3 – Installation

  • Editons la config php
nano /etc/php5/fpm/php.ini

Changer la ligne cgi.fix_pathinfo=0 en cgi.fix_pathinfo=1

  • Relancer php
service php5-fpm restart
  • Créer un Virtual Host pour phpMyDomo
sudo nano /etc/nginx/sites-available/phpMyDomo

Recopiez le contenu de ce fichier ou adaptez le suivant votre configuration souhaitée.

# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

server {
    listen   8090; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

    root /var/www/pmd;
    index index.php index.html index.htm;

    # Make site accessible from http://whatever/
    server_name _ default;

    location / {
        # RewriteRule ^(.*)controller\.php$ - [L]
        # RewriteRule ^(.*)static/ - [L]
        # RewriteCond %{REQUEST_FILENAME} !-f
        # RewriteCond %{REQUEST_FILENAME} !-d
        # RewriteRule . controller.php [L]
                if ($request_filename ~* ^.*controller.php$ ) { 
                    break;
                }
                if ($request_filename ~* ^.*static/ ) { 
                    break;
                }
                if (!-e $request_filename) { 
                    rewrite ^.*$ /controller.php last; 
                    break;
                }
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ /index.html;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }

    location ~ \.php$ {
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
        }
}

Notez les lignes en haut de ce fichier

  listen   8090; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

    root /var/www/pmd;

listen est le port sur lequel travaille phpMyDomo, ici 8090

root /var/www/pmd est le chemin ou se situeront les fichiers phpMyDomo, voir plus bas

  • Activer la configuration
ln -s /etc/nginx/sites-available/phpMyDomo /etc/nginx/sites-enabled/phpMyDomo
service nginx stop
service nginx start
  • Déplacer le dossier dans Nginx

Pour mes besoins je crée un dossier pmd (comme phpMyDomo) dans /var/www

mkdir /var/www/pmd

Déplaçons tout ce qui est dans l’installation de phpMyDomo/www/ dans le dossier que nous avons crée ci-desus et dont le nom figure dans le fichier de configuration Nginx rubrique root

mv /tmp/phpMyDomo/www/* /var/www/pmd/

N.B : Souvenez vous que phpMyDomo utilise le port marqué dans le fichier de config 8090, votre navigateur doit pointer sur votre_adresse_ip_raspberry:8090

  •  Configuration de phpMyDomo

Dans  phpMyDomo/www/inc/ renommer le dossier conf_sample en conf

mv /var/www/pmd/inc/conf_sample /var/www/pmd/inc/conf

Editer le fichier www/pmd/inc/conf/config.php

Ce fichier contient TOUTE la configuration de l’outil (lien avec Domoticz, dossiers de travail, délai, groupes, nom de caméras, menus à afficher, skins interface….)

il justifierait à lui tout seul un article d’explication

Le minimum vital pour faire fonctionner PMD sont les lignes :

$conf['app']['api']                     ="domoticz";

pour utiliser Domoticz en lieu et place de Domogik ou autres …

$conf['app']['home_name']       ="Home Sweet Home";

changez le nom ici qui s’affiche dans les onglets du navigateur

// language file to use : (name of the folder in /www/inc/lang/)
$conf['app']['lang']            ="fr";  // en | fr | nl

la langue de l’appli

$conf['app']['dir']             ="/pmd";

car j’ai installé phpMyDomo dans /pmd de /var/www

$conf['app']['location'] ="Paris, France";

Pour récupérer les bonnes heures de lever/coucher de soleil , mettez ici votre ville,France. Google est interrogé avec ces 2 paramètres pour récupérer les bonnes heures.

Voila, pour le reste , je vous laisse lire le fichier dans son intégralité.

[codesyntax lang= »php » lines= »no »]

<?php
//      phpMyDomo main config File
//      http://www.phpmydomo.org


// ##############################################################################
// Minimal Configuration  #######################################################
// ##############################################################################
//api to use : domoticz | domogik | domotiga | openhab
$conf['app']['api']                     ="domoticz";

// Personalize the name of your Home
$conf['app']['home_name']       ="Home Sweet Home";

// language file to use : (name of the folder in /www/inc/lang/)
$conf['app']['lang']            ="fr";  // en | fr | nl | de

//choose a photoframe method : directory | iphoto
$conf['app']['photoframe']              ="directory"; 

// Skin : Uncomment to use another skin (defaults to the 'default' skin, if not set)
//$conf['app']['skin']          ="black"; // default | black | metal

// SubDirectory: Uncomment ONLY if you want to install phpMydomo in a sub directory of your web server root (not recommended at this time)
$conf['app']['dir']             ="/pmd";

//Locale: uncomment to override the locale defined in the language file
//$conf['app']['locale']                ="en_US.utf8"; 

// If your server doesnt generate sunrise and sunset times, uncomment and enter your location here in the format : "City, Country"
// PMD will automatically Query Google, to get your location, and calculate Sunset and Sunrise from the latitude and longitude returned by Goo$
//$conf['app']['location']      ="Paris, France";


// The home page automatically reload after xx seconds, to refresh the buttons or sensor states.
$conf['app']['reload_time']                     ="120"; // time in seconds

//When a "photoframe_ss_album" is set, instead of refreshing the home windows, PMD automatically jump to this selected album (like a screen sa$
//$conf['app']['photoframe_ss_album']   ="Landscapes";  // album id to launch in ScreenSaver mode 

[/codesyntax]

3 – Testons

un petit http://iprasperry:8090 nous amène sur la page de phpMydomo avec nos interrupteurs qui s’affichent, récupérés depuis Domoticz.

phpMyDomo

  • Mise a jour de phpMyDomo

recopier le dossier  .git et le fichier.gitignore depuis le dossier /tmp dans votre dossier d’Apache : /var/www/pmd (dans mon cas)

Ainsi on pourra lancer un

cd /var/www/pmd/ && sudo git pull pour la mise à jour de phpMyDomo

ou le placer dans un crontab -e

bbt2

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/
Posted in domoticz, interfaces, linux and tagged , , .