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
- Cómo ocultar las claves primarias de la base de datos UUID de su aplicación web
- Don't Repeat Yourself (DRY) con Jinja2
- SQLAlchemy, PostgreSQL, número máximo de filas por user
- Mostrar los valores en filtros dinámicos SQLAlchemy
- Transferencia de datos segura con cifrado de Public Key y pyNaCl
- rqlite: una alternativa de alta disponibilidad y dist distribuida SQLite
Más vistos
- Usando Python's pyOpenSSL para verificar los certificados SSL descargados de un host
- Usando UUIDs en lugar de Integer Autoincrement Primary Keys con SQLAlchemy y MariaDb
- Conectarse a un servicio en un host Docker desde un contenedor Docker
- Usando PyInstaller y Cython para crear un ejecutable de Python
- SQLAlchemy: Uso de Cascade Deletes para eliminar objetos relacionados
- Flask RESTful API validación de parámetros de solicitud con esquemas Marshmallow