jeudi 29 septembre 2011

Python/Django on Heroku

Le service PaaS Heroku a lancé il y a peu de temps en beta publique sa nouvelle stack, Celadon Cedar.

Cette nouvelle plateforme se veut polyglotte, et donc, après Ruby on Rails, Node.js et Clojure, c'est maintenant Python et son framework phare django qui sont supportés!

Installation de heroku

$ gem install heroku

Application basique

On va écrire une application la plus simple possible, le but n'étant pas d'apprendre le python, donc un "hello world" fera parfaitement l'affaire.

requirements.txt
Flask==0.7.2

app.py
import os
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello from Python!"

if __name__ == "__main__":
    port = int(os.environ.get("PORT", 5000))
    app.run(host='0.0.0.0', port=port)

Déclaration des "process types" with Foreman/Procfile

Pour exécuter l'application, nous devons déclarer la commande à utiliser pour la lancer, donc simplement lancer notre script.

Dans le fichier Procfile :

web: python app.py

On peut donc maintenant lancer l'appli avec Foreman

$ gem install foreman
$ foreman start
14:39:04 web.1     | started with pid 24384
14:39:04 web.1     | Listening on 5000

L'application est donc accessible sur le port 5000.

Déploiement

Heroku nécessitant git, la première chose à faire est de versionner l'application :
$ git init
Initialized empty Git repository in .git/
$ git add .
$ git commit -m "new app"
Created initial commit 5df2d09: new app

Ensuite, il faut créer l'application Heroku sur la plateforme, via l'api en ligne de commande :
$ heroku create --stack cedar
Creating young-fire-2556... done, stack is cedar
http://young-fire-2556.herokuapp.com/ | git@heroku.com:young-fire-2556.git
Git remote heroku added

Une application appname vierge nous attend donc chez Heroku, il suffit de pousser notre application avec git pour la voir en ligne immédiatement :
 Heroku receiving push
-----> Python app detected
-----> Preparing virtualenv version 1.6.1
       New python executable in ./bin/python2.7
       Also creating executable in ./bin/python
       Installing setuptools............done.
       Installing pip...............done.
-----> Installing dependencies using pip version 1.0.1
       Downloading/unpacking Flask==0.7.2 (from -r requirements.txt (line 1))
       ...
       Successfully installed Flask Werkzeug Jinja2
       Cleaning up...
-----> Discovering process types
       Procfile declares types -> web
-----> Compiled slug size is 3.5MB
-----> Launching... done, v2
       http://young-fire-2556.herokuapp.com deployed to Heroku

To git@heroku.com:young-fire-2556.git
 * [new branch]      master -> master

Avant de voir notre application en ligne, il faut la scaler :
Before looking at the app on the web, we’ll need to scale the web process:

$ heroku ps:scale web=1
Scaling web processes... done, now running 1
Now, let’s check the state of the app’s processes:

$ heroku ps
Process       State               Command
------------  ------------------  --------------------------------------------
web.1         up for 10s          node web.js
The web process is up. Review the logs for more information:

$ heroku logs
2011-03-10T10:22:30-08:00 heroku[web.1]: State changed from created to starting
2011-03-10T10:22:32-08:00 heroku[web.1]: Running process with command: `node web.js`
2011-03-10T10:22:33-08:00 heroku[web.1]: Listening on 18320
2011-03-10T10:22:34-08:00 heroku[web.1]: State changed from starting to up

Tout est ok, notre app est accessible, on peut l'ouvrir via un simple heroku open.

vendredi 16 septembre 2011

SuperSaaS: agenda en ligne Ruby on Rails


SuperSaaS: vous permet de mettre en ligne facilement un module de réservation/agenda en ligne/système de prise de RDV par internet.
http://www.supersaas.fr

  • Les clients du site réservent directement depuis internet
  • Confirmation et rappel automatique par e-mail/SMS
  • Personnalisation de l'application (messages, couleur & logo)
  • Module de paiement en ligne intégré (les clients réservent et paient en même temps)
  • Redirection d'URL pour une intégration parfaite
  • et beaucoup plus…
Les modules d'intégration au CMS suivant existe:
Pour le CMS Drupal :
http://www.supersaas.com/tutorials/drupal_appointment_scheduling 

Pour le CMS Joomla:
http://extensions.joomla.org/extensions/vertical-markets/booking-a-reservations/booking-hosted/12728 

Pour le CMS Wordpress:
http://wordpress.org/extend/plugins/supersaas-appointment-scheduling/ 

SuperSaaS fonctionne en mode SaaS. Il permet de générer des revenus récurrents par le biais de l'abonnement au service. Vous pouvez vous inscrire au programme revendeur: http://www.supersaas.fr/info/revendeur ou annonceur http://www.supersaas.fr/info/annonceur
En savoir plus: www.supersaas.fr & contact@supersaas.fr

vendredi 17 juin 2011

Hébergement node.js avec Heroku Celadon Cedar Stack

Le service PaaS Heroku a lancé il y a peu de temps en beta publique sa nouvelle stack, Celadon Cedar.

Une des nouveautés apportée par cette version est le support de node.js, framework destiné à développer des applications réseau facilement scalables en JavaScript (du côté serveur), utilisant la machine virtuelle V8.

Installation de heroku

$ gem install heroku

Application basique

On va écrire une application la plus simple possible, le but n'étant pas d'apprendre le node.js, donc un "hello world" fera parfaitement l'affaire.
var express = require('express');

var app = express.createServer(express.logger());

app.get('/', function(request, response) {
  response.send('Hello World!');
});

var port = process.env.PORT || 3000;
app.listen(port, function(){
  console.log("Listening on " + port);
});

Utilisation de npm

Cedar reconnait une app node.js si il y a un fichier package.json, donc même si l'application n'a pas de dépendance, il faut inclure ce fichier.

{
  "name": "node-example",
  "version": "0.0.1",
  "dependencies": {
    "express": "2.2.0"
  }
}

Il est préférable de ne pas déployer le fichier node_modules, donc ajoutons le au .gitignore.

Déclaration des "process types" with Foreman/Procfile

Pour exécuter l'application, nous devons déclarer la commande à utiliser pour la lancer, donc simplement lancer notre script.

Dans le fichier Procfile :

web: node web.js

On peut donc maintenant lancer l'appli avec Foreman

$ gem install foreman
$ foreman start
14:39:04 web.1     | started with pid 24384
14:39:04 web.1     | Listening on 5000

L'application est donc accessible sur le port 5000.

Déploiement

Heroku nécessitant git, la première chose à faire est de versionner l'application :
$ git init
Initialized empty Git repository in .git/
$ git add .
$ git commit -m "new app"
Created initial commit 5df2d09: new app

Ensuite, il faut créer l'application Heroku sur la plateforme, via l'api en ligne de commande :
$ heroku create --stack cedar
Creating radiant-river-296... done, stack is cedar
http://radiant-river-296.herokuapp.com/ | git@heroku.com:radiant-river-296.git
Git remote heroku added

Une application appname vierge nous attend donc chez Heroku, il suffit de pousser notre application avec git pour la voir en ligne immédiatement :
$ git push heroku master
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (9/9), 923 bytes, done.
Total 9 (delta 2), reused 0 (delta 0)

-----> Heroku receiving push
-----> Node.js app detected
-----> Vendoring node 0.4.7
-----> Installing dependencies with npm 1.0.6
       mime@1.2.2 ./node_modules/express/node_modules/mime
       connect@1.4.1 ./node_modules/express/node_modules/connect
       qs@0.1.0 ./node_modules/express/node_modules/qs
       express@2.1.0 ./node_modules/express
       Dependencies installed
-----> Discovering process types
       Procfile declares types -> web
-----> Compiled slug size is 3.1MB
-----> Launching... done, v4
       http://radiant-river-296.herokuapp.com deployed to Heroku

To git@heroku.com:radiant-river-296.git
 * [new branch]      master -> master

Avant de voir notre application en ligne, il faut la scaler :
Before looking at the app on the web, we’ll need to scale the web process:

$ heroku ps:scale web=1
Scaling web processes... done, now running 1
Now, let’s check the state of the app’s processes:

$ heroku ps
Process       State               Command
------------  ------------------  --------------------------------------------
web.1         up for 10s          node web.js
The web process is up. Review the logs for more information:

$ heroku logs
2011-03-10T10:22:30-08:00 heroku[web.1]: State changed from created to starting
2011-03-10T10:22:32-08:00 heroku[web.1]: Running process with command: `node web.js`
2011-03-10T10:22:33-08:00 heroku[web.1]: Listening on 18320
2011-03-10T10:22:34-08:00 heroku[web.1]: State changed from starting to up

Tout est ok, notre app est accessible, on peut l'ouvrir via un simple heroku open.

mardi 5 avril 2011

Google Page Speed Online

Les outils Google Page Speed sont dorénavant utilisables directement en ligne, depuis le site web de la firme. De plus, ils fourniront des conseils d’optimisation adaptés aux terminaux mobiles.

Au départ, Google Page Speed est une extension firefox (portée ensuite sous chrome de mesure de la vitesse de chargement des pages web, rassemblant toutes les bonnes pratiques de webperfs éprouvées.

Le géant de la recherche Internet ajoute aujourd’hui une nouvelle pierre à l’édifice de Page Speed en proposant une version en ligne de cet outil, accessible ici.

Livre MongoDB

Si vous cherchez un livre sur MongoDB, concis et précis et par dessus le marché gratuit, allez lire The Little MongoDB Book de Karl Seguin, le créateur de mongly.

Tutorial interactif MongoDB

Si vous voulez un tutorial MongoDB, rapide, efficace et totalement interactif, sans rien à installer, rendez vous sur mongly pour vous entrainer :

mercredi 30 mars 2011

Déploiement et hébergement Ruby on Rails sur Heroku

Heroku

Heroku est un hébergeur Ruby on Rails dans le cloud en mode PAAS (Platform As A Service). C'est de très loin la façon la plus simple pour déployer et héberger des applications Ruby on Rails. L'hébergement est gratuit pour les sites à faible trafic, y compris pour la base de données et de nombreux addons, mais est également très scalable.

Fonctionnement

La publication de votre application sur la plateforme Heroku se fait via git.
Heroku propose une api très complète de gestion de votre application, utilisable en ligne de comande :
  • Consultation des logs
  • Gestion des utilsateurs
  • Tâches Rake
La grande force d'Heroku sont la grande quantitié d'addons disponibles, la plupart gratuits pour une utilisation basique.
  • MongoDB via MongoHQ : Gratuit jusqu'à 16Mo
  • CouchDB via Cloudant : Gratuit jusqu'à 250Mo.
  • Redis via Redis To Go : Gratuit jusqu'à 5Mo, sans persistance.
  • Solr : payant, à partir de 20$.
  • ...

Installation de la gem Heroku
Ensuite, pour pouvoir utiliser Heroku dans votre application Rails, ajoutez la gem à votre fichier Gemfile :
source 'http://rubygems.org'
gem 'rails', '3.0.3'
gem "heroku"

Utilisation

Mise en place de Git
Heroku nécessitant git, la première chose à faire est de versionner votre application :
$ git init
Initialized empty Git repository in .git/
$ git add .
$ git commit -m "new app"
Created initial commit 5df2d09: new app

Evidemment, Heroku va avoir besoin de notre clef publique pour pouvoir accepter les push, il faut donc les générer si ce n'est pas déjà fait, sinon simplement les ajouter :
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
$ heroku keys:add
Uploading ssh public key /home/joe/.ssh/id_rsa.pub

Déploiement de l'application
Ensuite, il faut créer l'application Heroku sur la plateforme, via l'api en ligne de commande :
$ heroku create appname
Enter your Heroku credentials.
Email: joe@doe.com
Password: 
Uploading ssh public key /home/joe/.ssh/id_rsa.pub
Created http://appname.heroku.com/ | git@heroku.com:appname.git
Git remote heroku added

Une application appname vierge nous attend donc chez Heroku, il suffit de pousser notre application avec git pour la voir en ligne immédiatement :
$ git push heroku master
Counting objects: 65, done.
Compressing objects: 100% (58/58), done.
Writing objects: 100% (65/65), 80.54 KiB, done.
Total 65 (delta 14), reused 0 (delta 0)

----- Heroku receiving push
----- Rails app detected
       Compiled slug size is 0.1MB
----- Launching....... done
       App deployed to Heroku

To git@heroku.com:appname.git
   3b3ed7c..350b521  master -> master

Si notre application utilise une base de données, il est possible de la bootstrapper directement :
$ heroku rake db:migrate
$ heroku rake db:seed

Mise à jour
Lors des prochaines mise à jour de notre application, tout ce que nous aurons à faire est :
$ git push heroku master

Conclusion

Avec Heroku, vous avez donc la possibilité de mettre en ligne en quelques secondes une application Ruby on Rails, avec un grand nombre d'addons vous permettant d'avoir une base application très solide : par exemple une stack Ruby on Rails / MongoDB / Redis / SOLR.