Over
Deze website is een meertalig CMS / Blog dat ik bouw met Python, de framework Flask en SQLAlchemy. Het wordt ingezet op mijn ISPConfig3 (Nginx + Mariadb) server met behulp van Docker die ook wordt gebruikt voor de ontwikkeling. De website beschikt over user registratie, veel beheerdersfuncties, privacy en veiligheid, dus dit is geen klein project. Enkele 'highlights':
Tech
- Python 3 (3.7)
- Flask
- SQLAlchemy
- Mariadb
- Docker, docker-compose
- Bootstrap4
- Fontawesome
- Tinymce
- ISPConfig3
Inzet
Stappen zijn ontwikkeling, staging en productie, allemaal met behulp van docker en docker-compose. De ontwikkeling maakt gebruik van de Flask ontwikkelingsserver, staging en de productie maakt gebruik van de Gunicorn server. Tot slot, ISPConfig3 wordt gebruikt om het domein, de database en SMTP e-mail, Nignx is geconfigureerd als een reverse proxy.
Privacy
Verwacht hier geen oplossingen zoals het gebruik van CDNs, Google Analytics, Facebook plugins, enz. Privacy is een van de belangrijkste dingen in het leven. Hoewel het onmogelijk is om het volgen van ons te voorkomen en onze waardevolle privégegevens te verzamelen, ben ik van mening dat we ons allemaal moeten inspannen om dit tot een minimum te beperken.
Beveiliging
Beveiliging is altijd een werk in uitvoering. Het begint met het ontwerp voor de beveiliging, wat ook betekent dat je veel moeite moet doen om dingen te loggen. Er zijn geweldige tools zoals OWASP ZAP en online diensten zoals securityheaders.com en detectify.com die u kunnen helpen bij het identificeren van kwetsbaarheden.
Meertalige
Terwijl de tekst van deze website in het Engels is geschreven, ondersteunt het meerdere talen met behulp van de Flask-Babel extensie. De teksten in de andere talen worden momenteel machinaal vertaald met behulp van de DeepL API en zijn soms verre van perfect, maar u kunt de messages.po -bestanden altijd bewerken.
Machinaal leren
Kunstmatige intelligentie (AI) dringt op vele manieren ons leven binnen. Python is de taal die gebruikt wordt bij machinaal leren en deep learning. Persoonlijk houd ik niet van deze ontwikkelingen omdat niemand aansprakelijk kan worden gesteld voor de genomen beslissingen. Maar AI kan ons ook op goede manieren helpen, zoals het aanbevelen van andere nieuwsberichten aan het eind van een nieuwsbericht.
Meer: Kivy
Was ook op zoek naar een Python GUI. Begon met tkinter maar vond al snel dat dit veel beperkingen had voor mijn doel. Ik kwam Kivy tegen en ging er een eerste app mee bouwen. Je kunt ook een Kivy app inzetten op Android, maar willen we het Android ecosysteem ondersteunen? Zal ook over mijn Kivy project berichten.
Wat is het volgende?
De komende maanden zal ik proberen een aantal dingen te documenteren die ik heb gedaan om dit te laten werken, zoals het gebruik van SQLAlchemy zonder Flask-SQLAlchemy, het vermijden van slecht onderhouden Flask uitbreidingen, migraties met behulp van Alembic, het minimaliseren van de grootte van een Docker image, docker-compose configuraties.
Bedankt, Peter
Laat een reactie achter
Reageer anoniem of log in om commentaar te geven.
Opmerkingen (4)
Laat een antwoord achter
Antwoord anoniem of log in om te antwoorden.
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?
Meest bekeken
- Met behulp van Python's pyOpenSSL om SSL-certificaten die van een host zijn gedownload te controleren
- PyInstaller en Cython gebruiken om een Python executable te maken
- Vermindering van de responstijden van een Flask SQLAlchemy website
- Maak verbinding met een dienst op een Docker host vanaf een Docker container
- Gebruik van UUIDs in plaats van Integer Autoincrement Primary Keys met SQLAlchemy en MariaDb
- SQLAlchemy: Gebruik van Cascade Deletes om verwante objecten te verwijderen