Nous contacter menu
// Développement iOS. Android et solutions numériques

Hébergement de webservices
//

Technologies et recommandations pour héberger les webservices d'une application mobile

Vous êtes ici > Accueil > > Hébergement de webservices

Hosting backend, application tablette ou mobile

Ce document présente un ensemble de recommandations techniques pour l'hébergement d'un backend d'une application mobile, tablette ou objet connecté.

05/04/2016 - Version 1.1 – A. Munoz

1. Environnement

Un environnement Linux est fortement recommandé pour l'installation de nos solutions (Debian 7+, Ubuntu 14+, CentOS ...)

Nous pouvons également travailler avec les systèmes Mac OS X Server, BSD et dérivés. Une connectivité de bonne qualité est nécessaire, tant sur le débit que la latence (Serveur hébergé sur une connexion ADSL à proscrire). Nous pouvons également travailler avec les grandes plates-formes d'hébergement virtualisé : Amazon EC2, Google Compute Engine, RunAbove (OVH), les environnements compatibles Docker …).

2. Logiciels

  • Serveur Web Apache 2.2 ou supérieur (2.4 recommandé). Nginx ou lighttpd à étudier. Port 80
  • PHP 5.4 ou supérieur (PHP 7 conseillé), compilé en module ou PHP-FPM, sans distinction.

Nous utilisons fréquemment les modules PHP suivants : MySqli, PDO, MCrypt, GD, CURL, Pear/PECL, LibXML

  • MySQL 5.5 ou supérieur. Merci de nous fournir une base de données avec des identifiants spécifiques. Nous utilisons MyISAM ou InnoDB selon la situation, en utf8_general_ci ou utf8mb4_general_ci si disponible.
  • Selon les projets, nous pouvons être amenés à utiliser MongoDB (GridFS).
  • Il peut également être nécessaire d'ajouter des tâches planifiées via crontab

3. HTTP/S

  • Nous recommandons l'utilisation d'un certificat SSL pour tout le trafic HTTP (utilisation de certificat self-signed à proscrire). TLS 1.2 recommandé, mod_ssl ou mod_gnutls. Port 443
  • Une VHOST distincte si possible.

Nous pouvons être amené à modifier certaines options de configuration d'Apache via un fichier HTACCESS : voir une configuration que nous utilisons fréquemment en Annexe. Tous les flux HTTP sont compressés via Deflate, les techniques de mises en cache sont utilisées partout où cela est possible.

4. Accès distant

Nous pouvons mettre en place nos solutions via SSH, SFTP, FTP ou SCP Un accès à la base de données est également nécessaire par des outils tels que PHPMyAdmin ou le client mysql en ligne de commande. Un accès SSH/Shell peut nous permettre de gagner du temps, et facilite l'installation lors de la mise en production.

5. Websockets

Selon les projets, il peut être nécessaire de mettre en place des websockets. Nous utilisons pour cela un utilitaire nommé websocketd à installer sur votre environnement. Si le port TCP/9000 n'est pas disponible, merci de nous contacter. Voir l'annexe pour le script d'init (Debian / Ubuntu).

http://websocketd.com/

6. Sauvegarde

La sauvegarde des données hébergés chez vous reste à votre charge (fichiers et base de données). Boreal Business n'effectue pas de backup ou réplication des données stockées sur vos serveurs. Pour toute question, n’hésitez pas à contacter notre service technique au 01.75.43.87.24

Annexe: HTACCESS


Options -Indexes

php_flag magic_quotes_gpc off
php_flag magic_quotes_sybase off
php_flag register_globals off
php_flag session.auto_start off
php_value mbstring.http_input pass
php_value mbstring.http_output pass
php_flag mbstring.encoding_translation off

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript image/jpeg image/png image/gif
</IfModule>

<IfModule mod_headers.c>

    <FilesMatch "\.(ico|jpe?g|png|gif|swf|gz|ttf|mp3|ogg|mp4)$">>
        Header set Cache-Control "max-age=2592000, public"
    </FilesMatch>

    <FilesMatch "\.(css)$">
        Header set Cache-Control "max-age=2592000, public"
    </FilesMatch>

    <FilesMatch "\.(js)$">
        Header set Cache-Control "max-age=2592000, private"
    </FilesMatch>

    <FilesMatch "\.(html|htm)$">
        Header set Cache-Control "max-age=7200, public"
    </FilesMatch>

    <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
        Header unset Cache-Control
    </FilesMatch>

</IfModule>

Annexe : Script init.d (Debian/Ubuntu)


#! /bin/sh
### BEGIN INIT INFO
# Provides: WebSocket Service
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Webservices via websocket
# Description: WS via Websocket sur port 9000
### END INIT INFO

PIDF=/var/run/websocket
DAEMON=/bin/websocketd
ARGS="--port 9000 /var/www/mobileapp/socketserver.php"
case "$1" in

start)
    echo "Start ws"
    start-stop-daemon --make-pidfile --start -b --pidfile $PIDF --quiet -c 1000 --exec $DAEMON -- $ARGS
;;
stop)
    echo "Stop ws"
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDF
;;
restart)
    echo "Restart ws"
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDF
    start-stop-daemon --make-pidfile --start -b --pidfile $PIDF --quiet -c 1000 --exec $DAEMON -- $ARGS
;;
*)
    echo "Usage: /etc/init.d/socketservice {start|stop|restart}"
    exit 1
;;
esac
exit 0