О
Этот сайт является многоязычным 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