🇫🇷 Serveur Pwic.wiki fonctionnant avec Python et SQLite
🦜 Accueil Démonstration Fonctionnalités Installation Support
⭐ Special ⏰ History 📤 Email 🖨️ Print 💾 MD 💾 ODT
📌
1. Scripting avancé 1.1. Installation instantanée 1.2. Fausse instance 1.3. Optimisation périodique 1.4. Rotation mensuelle des logs 1.5. Installation d'une nouvelle version 1.6. Renouvellement du certificat HTTPS 2. Développer des robots 3. Pages très spéciales 3.1. Codes retour de l'API 3.2. Assistant d'installation

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 :

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

🔝 Top of the page 🔝