Related pages: 🇬🇧 Advanced scripting
1. Scripting avancé
Ce site utilise Pwic.wiki derrière le reverse proxy nginx pour délivrer le contenu que vous lisez. Toute la configuration et l'administration sont faites en mode console et à distance. Pour votre curiosité, voici un aperçu des scripts que nous utilisons pour sa maintenance.
1.1. Installation instantanée
Pour commencer l'installation, vous pouvez utiliser un assistant dont le but est de générer un script automatique. C'est un formidable fichier exécutable pour déployer l'application sans peine !
1.2. Fausse instance
Si vous avez besoin d'un serveur HTTP de remplacement pendant la phase de configuration de l'application et du réseau, vous pouvez utiliser le script suivant à la place de pwic.py
:
from aiohttp import web
async def handle(request):
return web.Response(text='Le site est en construction. À bientôt !')
app = web.Application()
app.add_routes([web.get('/', handle)])
web.run_app(app, host='127.0.0.1', port=8080)
Ensuite exécutez python3 script_above.py &
pour démarrer ce serveur en arrière-plan jusqu'à la fermeture de votre console.
1.3. Optimisation périodique
Si votre instance exécute des opérations d'écriture fréquemment, la documentation de SQLite précise que les applications qui tournent longtemps peuvent bénéficier d'une optimisation à quelques heures d'intervalle.
python3 pwic_admin.py execute-optimize
# or: ./pa execute-optimize
Votre tâche cron devrait ressembler à ceci :
0 */3 * * * script_above.sh
Rappelez-vous d'activer l'option db_async
si l'occupation du disque dur atteint son maximum. La FAQ explique pourquoi.
1.4. Rotation mensuelle des logs
Le concept est de compresser les historiques de connexion le soir de chaque premier du mois :
./pa stop # DĂ©bloquer the fichiers
./pa rotate-logs --count 12
./pa start
Votre tâche cron devrait ressembler à ceci :
00 00 1 * * script_above.sh
Note : le paquet essentiel de compression gzip
doit être installé sur votre système.
1.5. Installation d'une nouvelle version
./pa stop
git pull
# Lancez les corrections manuelles pour Git (si nécessaire)
# ./pa execute-sql (si précisé par 'git log')
./pa clear-cache
./pa start
1.6. Renouvellement du certificat HTTPS
Ce scénario est expliqué ici. Tous les 80-90 jours, le certificat TLS/SSL doit être regénéré automatiquement :
cd /pwic-final-path/acme
python3 acme_tiny.py --account-key ../account.key --csr ../domain.csr --acme-dir . > ./pwic_https.crt
mv -f pwic_https.crt ..
En retour, vous devriez lire ceci :
Parsing account key...
Parsing CSR...
Found domains: pwic.wiki
Getting directory...
Directory found!
Registering account...
Already registered! Account ID: https://acme-staging-v02.api.letsencrypt.org/acme/acct/00000000
Creating new order...
Order created!
Already verified: pwic.wiki, skipping...
Signing certificate...
Certificate signed!
Si vous n'avez pas de reverse proxy, redémarrez Pwic.wiki:
./pa stop
./pa start
Sinon, indiquez Ă nginx de recharger la configuration :
/etc/init.d/nginx reload
2. DĂ©velopper des robots
Un robot est un programme qui effectue des opérations automatiques dans la base de données. Vous pouvez utiliser n'importe quel langage de programmation compatible mais nous recommandons Python pour pouvoir réutiliser les fonctions de pwic_lib.py
.
Pwic.wiki a une API publique qui est utilisée par l'interface du site. Quelques exemples de code sont fournis dans le dossier static/api/
. La liste complète des codes d'erreur est disponible sur cette page.
3. Pages très spéciales
Il s'agit d'une page qui ne peut pas être affichée par Pwic.wiki autrement qu'avec des lignes de code spécifiques. Pour montrer les capacités de l'application, ce site utilise 2 pages de ce type.
3.1. Codes retour de l'API
La page des codes retour de l'API est une représentation visuelle des erreurs HTTP que vous pouvez rencontrer en appelant l'API. Le concept est d'analyser le contenu du fichier Swagger de Pwic.wiki, et de produire à la volée le code Markdown correspondant.
La page réservée est /fr/api_rc
et contient le texte par défaut qui explique l'objectif de la page. La partie inférieure de la page doit être générée.
Ajoutez cette fonction Ă la fin du fichier pwic_extension.py
:
def get_swagger_rc_md() -> str:
# Construisez vous-mĂŞme le contenu de la variable 'md' Ă partir du fichier Swagger
return md
Parce que la fonction produit du texte Markdown seulement, on peut étendre la méthode PwicExtension.on_markdown_pre
qui est appelée avant le traitement interne md2html:
def on_markdown_pre(...) -> str:
if (project == 'fr') and (page == 'api_rc'):
markdown += get_swagger_rc_md()
return markdown
Le rendu final est stocké dans le cache.
3.2. Assistant d'installation
L'assistant est une page qui produit un script pour installer Pwic.wiki facilement. Vous ne pouvez pas écrire de champ HTML en Markdown, ni de script en JavaScript (il est effacé par le nettoyeur intégré). Donc le concept est d'enrichir la sortie HTML qui ne souffre d'aucun traitement additionnel.
La page réservée est /fr/wizard
et contient le texte Markdown suivant. La ligne du milieu est le marqueur arbitraire pour indiquer où le texte doit être amélioré.
[Retour](/fr/install)
[[fr:wizard]]
Vous pouvez ajouter du texte ici si vous voulez.
Sur le serveur, vous préparez un fichier HTML qui doit fonctionner seul en dehors de Pwic.wiki. Il est constitué de 3 blocs techniques :
- le formulaire web,
- un bloc de code caché qui n'est pas traité par MathJax ou Pygments,
- un script en JavaScript.
Pour inclure le contenu dans la page, vous implémentez PwicExtension.on_html()
comme ceci :
def on_html(...) -> str:
if (project == 'fr') and (page == 'wizard'):
with open('./templates/html/z_fr_wizard.html', 'r') as f:
html = html.replace('<p>[[fr:wizard]]</p>', f.read())
return html
Le rendu final est stocké dans le cache.
Revision #1 was last modified by gitbra
on 2023-12-11 at 00:00:00 — 987b81a20d55f262