sfx_site

0

Описание

Самораспаковывающийся и устанавливающийся сайт на джанго

Языки

Python

  • Shell
  • JavaScript
  • HTML
  • Svelte
  • CSS
Сообщить о нарушении
README.md

SFX Django Site

📚 Описание проекта

Этот проект представляет собой Django-сайт с интеграцией Svelte и асинхронной архитектурой. Подойдет для пользователей, которые имеют базовые навыки работы с Ubuntu-серверами и хотят получить легковесный, быстрый, персональный сайт с функционалом блога и интеграцией с Telegram-ботом.

Если вы умеете зайти на сервер по SSH, создать пользователя и прописать ему sudo права — вам сюда. Если такие вещи для вас сложны, лучше пройти базовые курсы по работе с Linux перед изучением данного проекта.

Проект также будет полезен тем, кто изучает Python, Django и хочет понять:

  • Как запускать Django полностью асинхронно.
  • Как взаимодействовать с сайтом через Telegram-бота.
  • Как интегрировать Svelte в Django-проект.
  • Как использовать POSIX IPC вместо Redis.
  • Как автоматизировать развертывание проекта с помощью shell-скриптов.

🎯 Что можно почерпнуть из проекта

  1. Как запустить Django полностью асинхронно.
  2. Как отказаться от стандартного ORM Django в пользу асинхронных запросов.
  3. Как связать сайт и Telegram-бота для двустороннего взаимодействия.
  4. Как добавить Svelte в Django-проект.
  5. Как использовать POSIX IPC вместо Redis для легковесного кэширования.
  6. Как использовать shell-скрипты для автоматизации развертывания.

🛠 Требования и подготовка сервера

Создание пользователя и настройка прав

  1. Создайте пользователя для сайта:
    sudo adduser site_user
  2. Дайте ему права на выполнение команд с sudo без ввода пароля на время установки, если хотите:
    sudo visudo
    Добавьте строку в конец файла:
    site_user ALL=(ALL) NOPASSWD: ALL
  3. Добавьте пользователя в группу sudo:
    sudo usermod -aG sudo site_user
  4. Запретите root-доступ по SSH:
    sudo nano /etc/ssh/sshd_config
    Найдите строку
    PermitRootLogin
    и установите:
    PermitRootLogin no

Настройка проекта

  1. Зайдите под пользователем

    site_user
    :

    ssh site_user@your_server_ip
  2. клонируйте репозиторий в домашней папке пользователя:

    git clone https://gitverse.ru/DADementr/sfx_site.git .
  3. В папке sfx_site найдите файл и дайте права на выполнение скрипта:

    chmod 775 system_setup.sh
  4. переименуйте файл .env-template в .env и Отредактируйте файл

    .env
    :

    • Установите значения для переменных окружения внимательно!
    • Желательно не изменяйте
      USER
      (site_user) и
      SITE_DIR_NAME
      (sfx_site). Потому как не тестировал с другими именами.
  5. Сгенерируйте новый

    SECRET_KEY
    Django или измените символы в существующем и установите пароль для базы данных.

🚀 Запуск проекта

  1. Запустите скрипт настройки без sudo:
    ./system_setup.sh
  2. Введите sudo-пароль при запросе и ожидайте завершения.
  3. Проверьте доступность сайта по домену или IP, указанному в
    .env
    .

Проверка сервисов

Если сайт не работает, проверьте состояние основных сервисов:

sudo systemctl status gunicorn
sudo systemctl status gunicorn.socket
sudo systemctl status nginx

Все сервисы должны быть в статусе

active
. Если что-то не работает, проверьте логи и настройки в файлах:

  • /etc/nginx/sites-available
  • /etc/systemd/system/gunicorn.service
  • /etc/systemd/system/gunicorn.socket

🧩 Интеграция с Telegram-ботом

Создайте бота через BotFather в Telegram и получите токен. Укажите его в

.env
вместе с вашим Telegram ID.

Бот может:

  • Получать сообщения с сайта.
  • Отправлять ответы пользователям сайта.
  • Показывать состояние сервера с помощью команды
    /stat
    (память, дисковое пространство, LA).

🎨 Кастомизация сайта

Изменение цветов

Цветовые настройки находятся в файле:

/myspa/src/lib/site/global.css

Редактируйте CSS-переменные в секции

:root
.

Пересборка фронтенда

После изменения CSS или других файлов Svelte выполните команды на сервере:

cd myspa
npm install
npm run build

🌐 Работа с доменом

Если используете доменное имя, убедитесь, что:

  • Запись
    A
    указывает на ваш сервер.
  • Запись
    AAAA
    для IPv6 удалена, если сайт не отображается.

⚙️ Основные рекомендации

  1. Настраивайте параметры Gunicorn под ваше железо. Минимальные требования: 2 ядра, 1-2 ГБ оперативной памяти.
  2. Для управления сайтом и ботом используйте IP-фильтрацию или SSL-аутентификацию, если требуется.
  3. Не удаляйте главную категорию и не изменяйте ее путь в id.
  4. Статичные страницы и статьи создаются и управляются через административную панель.

🔧 Полезные команды

  • Проверка состояния сайта:
    sudo systemctl status gunicorn
    sudo systemctl status nginx
  • Проверка логов:
    journalctl -u gunicorn
    tail -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/

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.