sfx_site
Описание
Самораспаковывающийся и устанавливающийся сайт на джанго
Языки
Python
- Shell
- JavaScript
- HTML
- Svelte
- CSS
SFX Django Site
📚 Описание проекта
Этот проект представляет собой Django-сайт с интеграцией Svelte и асинхронной архитектурой. Подойдет для пользователей, которые имеют базовые навыки работы с Ubuntu-серверами и хотят получить легковесный, быстрый, персональный сайт с функционалом блога и интеграцией с Telegram-ботом.
Если вы умеете зайти на сервер по SSH, создать пользователя и прописать ему sudo права — вам сюда. Если такие вещи для вас сложны, лучше пройти базовые курсы по работе с Linux перед изучением данного проекта.
Проект также будет полезен тем, кто изучает Python, Django и хочет понять:
- Как запускать Django полностью асинхронно.
- Как взаимодействовать с сайтом через Telegram-бота.
- Как интегрировать Svelte в Django-проект.
- Как использовать POSIX IPC вместо Redis.
- Как автоматизировать развертывание проекта с помощью shell-скриптов.
🎯 Что можно почерпнуть из проекта
- Как запустить Django полностью асинхронно.
- Как отказаться от стандартного ORM Django в пользу асинхронных запросов.
- Как связать сайт и Telegram-бота для двустороннего взаимодействия.
- Как добавить Svelte в Django-проект.
- Как использовать POSIX IPC вместо Redis для легковесного кэширования.
- Как использовать shell-скрипты для автоматизации развертывания.
🛠 Требования и подготовка сервера
Создание пользователя и настройка прав
- Создайте пользователя для сайта:
sudo adduser site_user
- Дайте ему права на выполнение команд с sudo без ввода пароля на время установки, если хотите:
Добавьте строку в конец файла:sudo visudosite_user ALL=(ALL) NOPASSWD: ALL - Добавьте пользователя в группу sudo:
sudo usermod -aG sudo site_user
- Запретите root-доступ по SSH:
Найдите строкуsudo nano /etc/ssh/sshd_config
и установите:PermitRootLoginPermitRootLogin no
Настройка проекта
-
Зайдите под пользователем
:site_userssh site_user@your_server_ip -
клонируйте репозиторий в домашней папке пользователя:
git clone https://gitverse.ru/DADementr/sfx_site.git . -
В папке sfx_site найдите файл и дайте права на выполнение скрипта:
chmod 775 system_setup.sh -
переименуйте файл .env-template в .env и Отредактируйте файл
:.env- Установите значения для переменных окружения внимательно!
- Желательно не изменяйте
(site_user) иUSER
(sfx_site). Потому как не тестировал с другими именами.SITE_DIR_NAME
-
Сгенерируйте новый
Django или измените символы в существующем и установите пароль для базы данных.SECRET_KEY
🚀 Запуск проекта
- Запустите скрипт настройки без sudo:
./system_setup.sh
- Введите sudo-пароль при запросе и ожидайте завершения.
- Проверьте доступность сайта по домену или IP, указанному в
..env
Проверка сервисов
Если сайт не работает, проверьте состояние основных сервисов:
sudo systemctl status gunicornsudo systemctl status gunicorn.socketsudo systemctl status nginx
Все сервисы должны быть в статусе
. Если что-то не работает, проверьте логи и настройки в файлах:
- /etc/nginx/sites-available
- /etc/systemd/system/gunicorn.service
- /etc/systemd/system/gunicorn.socket
🧩 Интеграция с Telegram-ботом
Создайте бота через BotFather в Telegram и получите токен. Укажите его в
вместе с вашим Telegram ID.
Бот может:
- Получать сообщения с сайта.
- Отправлять ответы пользователям сайта.
- Показывать состояние сервера с помощью команды
(память, дисковое пространство, LA)./stat
🎨 Кастомизация сайта
Изменение цветов
Цветовые настройки находятся в файле:
/myspa/src/lib/site/global.css
Редактируйте CSS-переменные в секции
.
Пересборка фронтенда
После изменения CSS или других файлов Svelte выполните команды на сервере:
cd myspanpm installnpm run build
🌐 Работа с доменом
Если используете доменное имя, убедитесь, что:
- Запись
указывает на ваш сервер.A - Запись
для IPv6 удалена, если сайт не отображается.AAAA
⚙️ Основные рекомендации
- Настраивайте параметры Gunicorn под ваше железо. Минимальные требования: 2 ядра, 1-2 ГБ оперативной памяти.
- Для управления сайтом и ботом используйте IP-фильтрацию или SSL-аутентификацию, если требуется.
- Не удаляйте главную категорию и не изменяйте ее путь в id.
- Статичные страницы и статьи создаются и управляются через административную панель.
🔧 Полезные команды
- Проверка состояния сайта:
sudo systemctl status gunicornsudo systemctl status nginx
- Проверка логов:
journalctl -u gunicorntail -f /var/log/nginx/error.log
- Проверка бота:
-
sudo systemctl status bot
📢 Полезные советы
- Используйте SSH-доступ только для настроенного пользователя.
- Отключите root-доступ.
- Регулярно обновляйте зависимости проекта.
- Проверьте конфигурации в
перед запуском..env
Для установки fail2ban и certbot для https сайтов запустить скрипт certbot_fb.sh
- После установки certbot, в строку nginx конфига вашего сайта:
- listen 443 ssl; # managed by Certbot
- добавьте http2, чтобы получилось
- listen 443 ssl http2; # managed by Certbot
🔗 Пример сайта
Посмотреть, как должен выглядеть сайт, можно по ссылке: https://veerdna.ru/