Acerca de
Este sitio web es un CMS / Blog multi-lenguaje que construyo con Python, el framework Flask y SQLAlchemy. Está desplegado en mi servidor ISPConfig3 (Nginx + Mariadb) usando Docker que también se usa para el desarrollo. El sitio web cuenta con el registro user , muchas funciones de administrador, privacidad y seguridad, por lo que no es un proyecto pequeño. Algunos "aspectos destacados":
Tech
- Python 3 (3.7)
- Flask
- SQLAlchemy
- Mariadb
- Docker, docker-compose
- Bootstrap4
- Fontawesome
- Tinymce
- ISPConfig3
Despliegue
Los pasos son el desarrollo, staging y la producción, todos usando docker y docker-compose. El desarrollo utiliza el servidor de desarrollo Flask , staging y la producción utiliza el servidor Gunicorn . Finalmente, ISPConfig3 es usado para controlar el dominio, la base de datos y el correo electrónico SMTP , Nignx está configurado como reverse proxy.
Privacidad
No espere encontrar aquí soluciones como el uso de los plugins CDNs, Google Analytics, Facebook , etc. La privacidad es una de las cosas más importantes de la vida. Aunque es imposible evitar que nos rastreen y recojan nuestros valiosos datos privados, creo que todos debemos hacer un esfuerzo para minimizar esto.
Seguridad
La seguridad siempre es un trabajo en progreso. Comienza con el diseño para la seguridad, lo que también significa que debes poner mucho esfuerzo en registrar las cosas. Hay grandes herramientas como OWASP ZAP y servicios en línea como securityheaders.com y detectify.com que pueden ayudarte a identificar las vulnerabilidades.
Multilenguaje
Aunque el texto de este sitio web está escrito en inglés, soporta múltiples idiomas usando la extensión Flask-Babel . Los textos en los otros idiomas son traducidos automáticamente por el momento usando la extensión DeepL API y a veces están lejos de ser perfectos, pero siempre puedes editar los archivos messages.po .
Aprendizaje automático
La inteligencia artificial (AI) está invadiendo nuestras vidas de muchas maneras. Python es el lenguaje usado con el aprendizaje automático y el aprendizaje profundo. Personalmente no me gustan estos desarrollos porque nadie puede ser responsable de las decisiones tomadas. Pero AI también puede ayudarnos de buenas maneras, como recomendar otras noticias al final de una noticia.
Más: Kivy
También buscaba un Python GUI. Comencé a usar tkinter pero pronto descubrí que esto tenía muchas limitaciones para mi propósito. Me topé con Kivy y fui a construir una primera aplicación con él. También puedes desplegar una aplicación Kivy en Android, pero ¿queremos apoyar el ecosistema Android ? También publicaré sobre mi proyecto Kivy .
¿Qué sigue?
En los próximos meses intentaré documentar algunas de las cosas que hice para que esto funcione, como usar SQLAlchemy sin Flask-SQLAlchemy, evitando las extensiones mal mantenidas de Flask , las migraciones utilizando las configuraciones de Alembic, minimizando el tamaño de las configuraciones de Docker image, docker-compose .
Gracias, Peter
Deje un comentario
Comente de forma anónima o inicie sesión para comentar.
Comentarios (4)
Deje una respuesta.
Responda de forma anónima o inicie sesión para responder.

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?
Recientes
- Obtener una lista de YouTube vídeos de una persona
- De Docker-Composer a Docker Swarm: Configs
- Docker-Componer proyectos con nombres de servicio idénticos
- X Automatización web y scraping con Selenium
- Aiohttp con servidores DNS personalizados, Unbound y Docker
- Devuelve sólo los valores de una lista de registros de FastAPI
Más vistos
- Usando UUIDs en lugar de Integer Autoincrement Primary Keys con SQLAlchemy y MariaDb
- Usando Python's pyOpenSSL para verificar los certificados SSL descargados de un host
- Usando PyInstaller y Cython para crear un ejecutable de Python
- Conectarse a un servicio en un host Docker desde un contenedor Docker
- SQLAlchemy: Uso de Cascade Deletes para eliminar objetos relacionados
- Flask RESTful API validación de parámetros de solicitud con esquemas Marshmallow