.. title: Déployer Nikola en FTP .. slug: deployer-nikola-en-ftp .. date: 2017-12-14 11:30:45 UTC+01:00 .. tags: python, nikola, ftp .. category: blog .. link: .. description: .. type: text `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. .. TEASER_END 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 : .. code-block:: bash 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 : .. code-block:: bash 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 : .. code-block:: bash 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`` : .. code-block:: python 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`` !