Déployer une application Rails 3.x sur AWS (Amazon Web Services) avec Capistrano, Nginx et Passenger (Partie 1/2)
J'ai déjà écrit deux articles pour expliquer comment déployer une application Rails sur Heroku. Pour ceux qui ne savent pas ce que c'est, il s'agit d'un service de PaaS (Plateform as a Service) dans le cloud, permettant de déployer votre application Rails (ou autre) en moins de temps qu'il ne faut pour l'écrire !
Heroku est vraiment formidable et j'admire le travail effectué par l'équipe de développement, mais son seul point faible actuellement est qu'il ne permet pas (encore ?) de choisir la zone géographique dans laquelle on souhaite déployer notre application. En effet, Heroku se base sur les services d'Amazon, mais utilise par défaut les serveurs basés aux États-Unis. Partant de ce constat, deux problèmes se posent à moi :
- étant situé à la l'île de la Réunion, le temps de latence peut être très long juste pour le chargement d'une simple page.
- je souhaite déclarer ma base de données à la CNIL, mais celle-ci ne doit pas quitter la zone européenne, ou doit être hébergée par un membre du Safe Harbor, ce qui n'est pas le cas d'Heroku.
Dans ce cas, je n'ai plus le choix, je dois me lancer sans les filets d'Heroku. Et vous allez m'accompagner dans cette aventure, en espérant que cela puisse vous être utile !
Valider un fichier XML avec un schéma particulier
Pour cela il faut installer un petit outil appelé xmllint, présent dans le paquet libxml2-utils. Chez moi ce paquet était déjà installé.
Ensuite il suffit de lancer la commande suivante :
xmllint fichier.xml --schema http://monsiteweb.com/schema.xsd
Il est également possible de valider le XML à partir d'un DTD avec l'option --dtdvalid
Le programme indique le message suivant s'il ne trouve aucune erreur :
fichier.xml validates
Dans le cas contraire, le programme indique les erreurs à corriger pour valider le XML.
Il est bon de noter de xmllint vérifie aussi que le XML est bien formé sans tenir compte d'un éventuel schéma ou d'un DTD.
Super, rapide, efficace. Très utile lorsqu'on souhaite valider de gros fichier XML.
Pour les petits fichiers et si il n'y aucun linux à portée de main, ce site internet est très bien aussi : http://www.xmlvalidation.com/
Utiliser SSH comme serveur Proxy
Pourquoi faire ?
Pour naviguer sur internet ou récupérer ses emails en toute sécurité depuis n'importe où (gallerie commerciale, boulot, etc)
Comment faire ?
Pré-requis : On va dire que vous avez un serveur chez vous qui tourne 24h/24 et sur lequel vous avez les droits administrateurs. Le client indique la machine (un laptop, PDA, etc) que vous utiliser pour naviguer ou récupérer vos emails sur la fameuse connexion non sécurisée.
La mise en place se déroule en deux étapes :
Sur le serveur (Ubuntu/Debian)
Il faut installer le serveur ssh (le serveur se lance tout seul après l'installation) :
apt-get install ssh # ou openssh-server
Remarque : pensez à configurer votre box pour accepter les connexions entrantes sur le port 22 (ssh)
Sur le client (Ubuntu/Debian) :
Il faut installer le client ssh (le client se lance tout seul après l'installation) :
apt-get install ssh # ou openssh-client
La commande suivante permet de se connecter à votre serveur domain.no-ip.org et à mettre en place une redirection de port dynamique :
ssh -D 8080 -Nf domain.no-ip.org
-D 8080 => indique que toute les connections qui seront effectuées sur le port 8080 seront redirigées vers le canal sécurisé.
-N => indique de ne pas exécuter de commande distante. Cette option est nécessaire pour la redirection de port.
-f => demande à ssh de tourner en tâche de fond. Pour arrêter la redirection de port, il faut tuer le processus (ps aux |grep ssh)
Il reste maintenant à configurer votre navigateur pour qu'il passe par votre canal sécurisé.
Avec Firefox (3.6.*), Édition > Préférences > Avancé > Réseau > Paramètres. Choisissez Configuration manuelle d'un proxy, puis dans SOCKS, mettez localhost:8080.
Avec Ubuntu, un outil permet de configurer un Proxy qui sera valable à l'ensemble du système.
Allez dans Système > Préférences > Réseau Proxy. Choisissez Configuration manuelle d'un proxy, puis dans SOCKS, mettez localhost:8080.
Si vous avez effectué la manipulation précédente avec Firefox, pensez à remettre l'option Utiliser les paramètres proxy du système
C'est tout, vous pouvez désormais surfer en toute sécurité !
TODO : Sur le client (Android)
Tester la configuration
Vous voulez tester que votre configuration fonctionne ?
1- Désactivez le proxy (SOCKS localhost:8080)
2- Rendez-vous sur www.monip.org (ou tout autre site qui vous renseigne votre IP)
3- Notez l'adresse IP qui vous est attribué
4- Activer le proxy (SOCKS localhost:8080)
5- Répétez l'opération 2
6- Constatez que votre adresse IP a changé. C'est en fait l'adresse IP affectée à votre box depuis chez vous.
7- C'est bon ça marche !
À la bourre
Déjà 12 jours que la dernière mouture d'Ubuntu est sortie et je ne l'ai toujours pas installé sur mon laptop ! C'est bien la première fois que ça m'arrive, d'habitude je l'installe le jour même de la sortie...
Je me dis que c'est peut-être parce que je ne veux pas perdre mon uptime... mais il faudra bien m'y faire !

