10-Serveur
Serveur
Le serveur sera un Raspberry. Voici le prérequis:
- Installer OS sur votre Raspberry et la connexion réseau voir chapitre ici
- Adresse IP fixe voir chapitre ici
- Installer un serveur PHP voir chapitre ici
Accès de vos pages depuis internet. Configuration de la box.
Aller dans le paramétrage de votre Box. La mienne est une Box de chez SFR. Ouvrir l'onglet Réseau
Puis NAT
Après faire une redirection du port 80.
Chez SFR,l'adresse IP n'est pas fixe donc il faut faire un script pour connaître l'adresse de votre box et l'envoyer à votre serveur pour effectuer une redirection. Pour cela, je vais utiliser un script Python qui sera lancer à intervalle régulier. Je vais créer un fichier HTML avec une redirection vers mon adresse IP. Pour que l'adresse IP ne soit pas lu directement, J'utilise une frame. J'utilise le répertoire /run/shm/ qui est un répertoire pour les fichiers temporaires et qui est en disque RAM.
Voici le script Python:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os
import time
import sys
import ftplib
import ConfigParser
import string
import datetime
import csv
import subprocess
from subprocess import PIPE, Popen
from datetime import timedelta
monfichier = 'index.html' #Fichier html des donnees
path= '/run/shm/' #Modifier le chemin suivant votre installation
p = subprocess.Popen("curl ifconfig.me", stdout=subprocess.PIPE, shell=True)
(output, err) = p.communicate()
#ouverture du fichier php
f = open(path + monfichier, 'w')
# Type de paragraphe
typepolice1 = """<span style="color:#00008B; font-size: 12pt">"""
# Corps fichier HTML
corps = """
<!DOCTYPE HTML>
<html>
<head>
<link rel="shortcut icon" href="home.ico">
<title>Domotique</title>
</head>
<body>
Connexion encours
<meta http-equiv="refresh" content="1;url=http://"""+output+"""/"/>
</body>
</html>
"""
f.write(corps)
f.close()
# Lecture du fichier config.ini
config = ConfigParser.ConfigParser()
config.read("/home/pi/lien/config.ini")
site = config.get("ftp", "site")
user = config.get("ftp", "user")
password = config.get("ftp", "password")
directory = config.get("ftp", "directory")
# Transfert vers le serveur ftp
session = ftplib.FTP(site,user,password)
myfile = open(path + monfichier,'rb')
session.storbinary("STOR " + directory + monfichier, myfile,1024)
myfile.close()
session.quit()
Mon script utilise un fichier config.ini avec les paramètres FTP. Mon programme enverra un fichier index.html avec la redirection. Dans votre répertoire sur votre serveur vous pouvez mettre le fichier home.ico pour mettre l'icone de la maison. Téléchargement ici.
Si vous trouvez que la réponse du script est un peu long, vous pouvez remplacer dans le script la ligne suivante:
p = subprocess.Popen("curl ifconfig.me", stdout=subprocess.PIPE, shell=True)
Par:
p = subprocess.Popen("curl -s icanhazip.com", stdout=subprocess.PIPE, shell=True)
Voila les fichiers que vous devriez avoir sur votre site distant:
Téléchargement de mon script ici
Le lancement du script se fera avec crontab voir chapitre ici
Maintenant votre site web pointe sur votre Raspberry.
Mon module est équipé d'une antenne pour augmenter la distance de communication.
Mise à jour 01/09/2015
Créé avec HelpNDoc Personal Edition: Création d'aide CHM, PDF, DOC et HTML d'une même source