angle-uparrow-clockwisearrow-counterclockwisearrow-down-uparrow-leftatcalendarcard-listchatcheckenvelopefolderhouseinfo-circlepencilpeoplepersonperson-fillperson-plusphoneplusquestion-circlesearchtagtrashx

Acerca de

11 agosto 2019 Actualizado 26 mayo 2020

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.

avatar

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

avatar
peter 4 años hace Visitante anónimo (no conectado)

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

avatar

рукеру56гвекрнвек56ргевнк6

avatar

Muchas gracias por el blog, pero tienes publicado el código del blog?