О
Этот сайт является многоязычным CMS / Блог, который я создаю с Python, framework Flask и SQLAlchemy. Он устанавливается на мой сервер ISPConfig3 (Nginx + Mariadb) с помощью Docker , который также используется для разработки. Сайт имеет регистрацию user , множество функций администратора, конфиденциальность и безопасность, поэтому это не маленький проект. Некоторые 'основные моменты':
Технический персонал
- Python 3 (3.7)
- Flask
- SQLAlchemy
- Мариадб
- Docker, docker-compose
- Bootstrap4
- Fontawesome
- Tinymce
- ISPConfig3
Развертывание
Шаги - разработка, staging и производство, все с использованием докера и docker-compose. При разработке используется сервер разработки Flask , staging и при производстве - сервер Gunicorn . Наконец, ISPConfig3 используется для управления доменом, базой данных и электронной почтой SMTP , Nignx конфигурируется как reverse proxy.
Конфиденциальность
Не ожидайте найти здесь решения типа использования подключаемых модулей CDNs, Google Analytics, Facebook и др. Конфиденциальность - одна из самых важных вещей в жизни. Хотя невозможно предотвратить слежку за нами и сбор наших ценных приватных данных, я считаю, что мы все должны приложить усилия, чтобы минимизировать это.
Безопасность
Безопасность - это всегда работа. Она начинается с проектирования безопасности, что также означает, что вы должны приложить много усилий для регистрации вещей. Есть такие замечательные инструменты, как OWASP ZAP и онлайн-сервисы, такие как securityheaders.com и detectify.com, которые могут помочь вам в определении уязвимостей.
Многоязычный
Хотя текст этого сайта написан на английском языке, он поддерживает несколько языков, используя расширение Flask-Babel . Тексты на других языках в данный момент переводятся машинным способом с использованием расширения DeepL API и иногда далеки от совершенства, но вы всегда можете отредактировать файлы messages.po .
Машинное обучение
Искусственный интеллект (AI) вторгается в нашу жизнь различными способами. Python - это язык, используемый при машинном обучении и глубоком изучении. Лично мне эти разработки не нравятся, потому что никто не может нести ответственность за принимаемые решения. Но AI также может помочь нам хорошими способами, например, порекомендовать другие новости в конце новости.
Еще: Kivy
Также искал Python GUI. Начал использовать tkinter , но вскоре обнаружил, что это имеет много ограничений для моей цели. Встретили Kivy и приступили к сборке первого приложения с ним. Вы также можете установить приложение Kivy на Android, но хотим ли мы поддерживать экосистему Android ? Также будет опубликована информация о моем проекте Kivy .
Что дальше?
В ближайшие месяцы я постараюсь задокументировать некоторые вещи, которые я сделал, чтобы это работало, например, использование SQLAlchemy без Flask-SQLAlchemy, избегая плохо обслуживаемых расширений Flask , миграции с использованием Alembic, минимизируя размер конфигураций Docker image, docker-compose .
Спасибо, Peter
Оставить комментарий
Комментируйте анонимно или войдите в систему, чтобы прокомментировать.
Комментарии (4)
Оставьте ответ
Ответьте анонимно или войдите в систему, чтобы ответить.
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?
Недавний
- Использование Ingress для доступа к RabbitMQ на кластере Microk8s
- Простая видеогалерея с Flask, Jinja, Bootstrap и JQuery
- Базовое планирование заданий с помощью APScheduler
- Коммутатор базы данных с HAProxy и HAProxy Runtime API
- Docker Swarm rolling updates
- Скрытие первичных ключей базы данных UUID вашего веб-приложения
Большинство просмотренных
- Использование PyInstaller и Cython для создания исполняемого файла Python
- Уменьшение времени отклика на запросы на странице Flask SQLAlchemy веб-сайта
- Используя Python pyOpenSSL для проверки SSL-сертификатов, загруженных с хоста
- Подключение к службе на хосте Docker из контейнера Docker
- Использование UUID вместо Integer Autoincrement Primary Keys с SQLAlchemy и MariaDb
- SQLAlchemy: Использование Cascade Deletes для удаления связанных объектов