Déployer Nikola en FTP

English   |   Source

Nikola est livré avec un mécanisme de déploiement simple et la possibilité de déployer facilement sur GitHub. Cependant, j'héberge actuellement mes pages personnes chez Free, qui propose un service gratuit de qualité mais sans possibilité de faire du SSH (et rsync) ou d'utiliser directement Git. S'est donc posée pour la question de déployer ces pages à moindre frais en FTP.

La solution pour laquelle j'ai optée est LFTP qui est programme en ligne de commande qui permet de gérer ses transferts de fichiers via divers protocoles, dont FTP.

Prise en main

La prise en main est plutôt rapide :

lftp
lftp :~> open ftp://user:password@ftp.server.com;

On peut alors effectuer un certain nombre de tâches de base, sur la machine locale (commandes précédées d'un l) et sur la machine distante :

lftp user@ftp.server.com:/~> cd website
lftp user@ftp.server.com:/website~> pwd
user@ftp.server.com:/website
lftp user@ftp.server.com:/website~> lpwd
/home/user/localdir

La commande mirror permet de réaliser des copies à la rsync en ne copiant que les fichiers qui ont été modifiés :

lftp user@ftp.server.com:/website~> mirror --reverse
Total : 35 répertoires, 96 fichiers, 0 liens symboliques
Modifié : 5 fichiers, 0 liens symboliques
49669 octets transférés

Déploiement avec Nikola

Il ne suffit plus que de mettre à jour conf.py et d'éditer DEPLOY_COMMANDS :

DEPLOY_COMMANDS = {
    'default': [
        """lftp -c 'set ftp:list-options -a;
        open ftp://user:password@ftp.server.com;
        lcd ./output;
        cd ./website;
        mirror --reverse'""",
    ]
}

Qui permet ensuite d'utiliser directement la commande nikola deploy !