A propos de
Ce site web est un CMS / Blog multilingue que j'ai construit avec Python, le framework Flask et SQLAlchemy. Il est déployé sur mon serveur ISPConfig3 (Nginx + Mariadb) en utilisant Docker qui est également utilisé pour le développement. Le site web comprend l'enregistrement user , de nombreuses fonctions d'administration, la confidentialité et la sécurité, il ne s'agit donc pas d'un petit projet. Quelques "points forts" :
Tech
- Python 3 (3.7)
- Flask
- SQLAlchemy
- Mariadb
- Docker, docker-compose
- Bootstrap4
- Fontawesome
- Tinymce
- ISPConfig3
Déploiement
Les étapes sont le développement, staging et la production, toutes utilisant le docker et docker-compose. Le développement utilise le serveur de développement Flask , staging et la production utilise le serveur Gunicorn . Enfin, ISPConfig3 est utilisé pour contrôler le domaine, la base de données et le courrier électronique SMTP , Nignx est configuré comme un serveur reverse proxy.
Vie privée
Ne vous attendez pas à trouver ici des solutions comme l'utilisation des plugins CDN, Google Analytics, Facebook , etc. La vie privée est l'une des choses les plus importantes dans la vie. Bien qu'il soit impossible d'empêcher la traque et la collecte de nos précieuses données privées, je crois que nous devons tous faire un effort pour minimiser cela.
Sécurité
La sécurité est toujours un travail en cours. Elle commence avec la conception de la sécurité, ce qui signifie également que vous devez faire beaucoup d'efforts pour enregistrer les choses. Il existe d'excellents outils comme le ZAP OWASP et des services en ligne comme securityheaders.com et detectify.com qui peuvent vous aider à identifier les vulnérabilités.
Multilingue
Bien que le texte de ce site soit écrit en anglais, il supporte plusieurs langues en utilisant l'extension Flask-Babel . Les textes des autres langues sont pour l'instant traduits automatiquement à l'aide de l'extension DeepL API et sont parfois loin d'être parfaits, mais vous pouvez toujours modifier les fichiers messages.po .
L'apprentissage machine
L'intelligence artificielle (AI) envahit nos vies de nombreuses façons. Python est le langage utilisé avec l'apprentissage machine et l'apprentissage profond. Personnellement, je n'aime pas ces développements car personne ne peut être tenu responsable des décisions prises. Mais AI peut également nous aider de manière positive, par exemple en recommandant d'autres sujets d'actualité à la fin d'un article.
Plus : Kivy
Cherche également un Python GUI. J'ai commencé à utiliser le tkinter mais j'ai vite constaté que celui-ci avait de nombreuses limites pour mon objectif. Je suis tombé sur Kivy et j'ai créé une première application avec. Vous pouvez également déployer une application Kivy sur Android, mais voulons-nous soutenir l'écosystème Android ? Je vais également publier des informations sur mon projet Kivy .
Quelle est la prochaine étape ?
Les prochains mois, j'essaierai de documenter certaines des choses que j'ai faites pour que cela fonctionne, comme utiliser SQLAlchemy sans Flask-SQLAlchemy, éviter les extensions Flask mal entretenues, les migrations utilisant des configurations Alembic, minimiser la taille d'une configuration Docker image, docker-compose .
Merci, Peter
Laissez un commentaire
Commentez anonymement ou connectez-vous pour commenter.
Commentaires (4)
Laissez une réponse
Répondez de manière anonyme ou connectez-vous pour répondre.
Hallo Peter,
Super dat je zoveel kennis deelt op je site, goed leesbaar en je kan er wat van leren! IK volg i.p.v. Kivi https://beeware.org/. Wel een complexe setup en tot nu toe nog weinig ontwikkelingen voor het web, meer voor APPS.
Groet,
Marcel
Hallo Marcel,
Nog bedankt voor je bericht. Beeware ziet er ook goed uit. Ben even gestopt met Kivy i.v.m. tijdgebrek. Was wel een leuk project om Flask op mijn OnePlus One met Ubuntu Touch te laten werken. Groeten, Peter
Muchas gracias por el blog, pero tienes publicado el código del blog?
Récent
- Graphique de séries temporelles avec Flask, Bootstrap et Chart.js
- Utiliser IPv6 avec Microk8s
- Utilisation de Ingress pour accéder à RabbitMQ sur un cluster Microk8s
- Galerie vidéo simple avec Flask, Jinja, Bootstrap et JQuery
- Planification de base des tâches avec APScheduler
- Un commutateur de base de données avec HAProxy et HAProxy Runtime API
Les plus consultés
- Utiliser PyInstaller et Cython pour créer un exécutable Python
- Réduire les temps de réponse d'un Flask SQLAlchemy site web
- Utilisation des Python's pyOpenSSL pour vérifier les certificats SSL téléchargés d'un hôte
- Connexion à un service sur un hôte Docker à partir d'un conteneur Docker
- Utiliser UUIDs au lieu de Integer Autoincrement Primary Keys avec SQLAlchemy et MariaDb
- SQLAlchemy : Utilisation de Cascade Deletes pour supprimer des objets connexes