Utiliser Nikola/GAE sur android

Il y a quelque temps que j’ai dé­cou­vert Ter­mux cette chouette ap­pli­ca­tion An­droid qui per­met de re­trou­ver une bonne par­tie de son en­vi­ron­ne­ment li­nux sur son té­lé­phone ou sa ta­blette.

Elle m’a dé­pan­né plus d’une fois pour faire une mo­di­fi­ca­tion ra­pide en dé­pla­ce­ment, l’en­re­gis­trer sous git ou mer­cu­rial avant de la pous­ser vers l’in­té­gra­tion conti­nue. De­puis que j’ai mi­gré ce blog sous Ni­ko­la je me dis que ce se­rait pra­tique de pou­voir tra­vailler les ar­ticles en mo­bi­li­té, les pré-vi­sua­li­ser dans un na­vi­ga­teur puis de dé­ployer le site sur GAE, tout ça de­puis un té­lé­phone. Et ef­fec­ti­ve­ment ça marche plu­tôt bien.

édition de ce blog sous termux

Co­pie d’écran de l’édi­tion de ce blog sur an­droid avec ter­mux.

Voi­ci la marche à suivre :

Installer Termux

Ce­la se fait sim­ple­ment à par­tir du ma­ga­sin d’ap­pli­ca­tion Google Play ou mieux à par­tir du dé­pôt f-droid.

Installer mercurial (option)

Mer­cu­rial per­met de gé­rer en confi­gu­ra­tion mon blog et de le pous­ser dans un dé­pôt pri­vé sur bit­bu­cket. J’aime bien ce ges­tion­naire de ver­sion prin­ci­pa­le­ment en rai­son de son in­ter­face co­hé­rente et bien do­cu­men­tée. Vous pou­vez bien sûr aus­si uti­li­ser git.

pkg install python2-dev python-dev
pip2 install mercurial

Installer Nikola

Préparer un environnement virtuel

pip install virtualenvwrapper
mkvirtualenv nikola

Installer Nikola proprement dit

workon nikola # si vous n'êtes pas déjà dans l'environnement
pkg install libxml2-dev libjpeg-turbo-dev libxslt-dev
LDFLAGS="-L/system/lib64/" CFLAGS="-I/data/data/com.termux/files/usr/include/" pip install "Nikola[extras]"

Installer le google cloud sdk

Je me suis ins­pi­ré des notes pro­po­sées par geof­frey loo­ker:

export CLOUDSDK_PYTHON=/data/data/com.termux/files/usr/bin/python2.7
curl -k https://storage.googleapis.com/gceprd-iso/google-cloud-sdk-134.0.0-linux-x86_64__TERMUX.tar.gz -O
tar -xzf google-cloud-sdk-134.0.0-linux-x86_64__TERMUX.tar.gz
cd google-cloud-sdk
bash ./install.sh
bash a #(ou zsh selon vos préférences)
gcloud components update
~/update-gcloud-sheebang.sh
gcloud auth login

Avec le script update-gcloud-sheebang qui remet à jour le shebang de chaque fichier potentiellement mis à jour par la commande gcloud components update et qui contient les quelques lignes suivantes :

#!/data/data/com.termux/files/usr/bin/bash
scratch=$(mktemp -d -t tmp.XXXXXXXXXX)
cd ~/google-cloud-sdk/
find $(pwd) -type f -exec awk '
  /^#!.*/{print FILENAME}
  {nextfile}' {} + > "$scratch"/lines.txt
xargs -0 -n 1 termux-fix-shebang < <(tr \\n \\0 < "$scratch"/lines.txt)

Écrire et publier

Re­lan­cer un shell puis :

workon nikola
nikola auto

Vi­sua­li­sez alors votre site dans un na­vi­ga­teur an­droid en vi­si­tant http://­lo­cal­host:8000.

visualisation du blog sous firefox, servi par nikola

Co­pie d’écran de la vi­sua­li­sa­tion du blog ser­vi par ni­ko­la sur le té­lé­phone.

Et enfin déployez-le sur Google App Engine avec la commande nikola deploy.

Ce qui reste à améliorer

  • J’ai des mes­sages d’er­reurs du type [2018-01-19T21:28:28Z] WAR­­NING: Ni­­ko­­la: Lo­­cale fr_­­FR.utf8 for lan­­guage fr not ac­­cep­­ted by py­­thon lo­­cale et ap­pa­rem­ment les lo­cales ne sont pas bien sup­por­tées par ter­mux. Je ne sais pas trop qu’elles en sont les consé­quences.

  • Lors de mes pre­miers tests, je me suis ren­du compte que cer­tains ca­rac­tères utf8 n’étaient pas bien ren­dus sous vim. J’ai peut-être une confi­gu­ra­tion à com­plé­ter.

  • Le lo­gi­ciel jpe­gop­tim n’est pas dis­po­nible sur ter­mux, j’ai du le désac­ti­ver dans la confi­gu­ra­tion des filtres de ni­ko­la pour per­mettre l’op­ti­mi­sa­tion des fi­chiers jpeg pour le web.

Je vien­drais mettre à jour ce billet pour rendre compte des amé­lio­ra­tions ou autres pro­blèmes ren­con­trés.

Commentaires