Установка и настройка Saleor (Django/GraphQL)

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Установка и настройка Saleor (Django/GraphQL)
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Установка и настройка Saleor (Django/GraphQL)

Saleor — Django-приложение с PostgreSQL в качестве основной БД, Celery+Redis для очередей и S3-совместимым хранилищем для медиафайлов. Production-установка требует настройки всех четырёх компонентов плюс отдельного деплоя Dashboard (React) и Storefront (Next.js).

Требования к серверу

  • Python 3.11+
  • PostgreSQL 15+ (рекомендуется 16)
  • Redis 7+
  • Node.js 18+ (только для Dashboard/Storefront)
  • RAM: от 2 GB для бэкенда + воркеров Celery
  • S3-совместимое хранилище: AWS S3, MinIO, Hetzner Object Storage

Docker Compose для разработки

# docker-compose.yml (официальный)
version: "3.8"
services:
  api:
    image: ghcr.io/saleor/saleor:3.20
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=postgresql://saleor:saleor@db/saleor
      - CELERY_BROKER_URL=redis://redis:6379/0
      - SECRET_KEY=change-me-in-production
      - DEBUG=False
      - ALLOWED_HOSTS=localhost,api.example.com
      - ALLOWED_CLIENT_HOSTS=localhost:3000,store.example.com
      - [email protected]
    depends_on:
      - db
      - redis
    command: >
      sh -c "python manage.py migrate &&
             python manage.py collectstatic --no-input &&
             gunicorn saleor.wsgi:application --bind 0.0.0.0:8000 --workers 4 --threads 2"

  worker:
    image: ghcr.io/saleor/saleor:3.20
    environment:
      - DATABASE_URL=postgresql://saleor:saleor@db/saleor
      - CELERY_BROKER_URL=redis://redis:6379/0
    depends_on:
      - db
      - redis
    command: celery -A saleor worker --app=saleor.celeryconf:app -l info --concurrency=4

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_PASSWORD: saleor
      POSTGRES_USER: saleor
      POSTGRES_DB: saleor
    volumes:
      - saleor-db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U saleor"]
      interval: 5s

  redis:
    image: redis:7-alpine
    volumes:
      - saleor-redis:/data

volumes:
  saleor-db:
  saleor-redis:

Установка из исходников (без Docker)

git clone https://github.com/saleor/saleor.git && cd saleor
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt

# Настройка окружения
cp .env.example .env
# Отредактировать .env: DATABASE_URL, SECRET_KEY, CELERY_BROKER_URL

# Миграции
python manage.py migrate

# Начальные данные (каналы, склады, типы доставки)
python manage.py populatedb

# Создание суперпользователя
python manage.py createsuperuser

# Запуск dev-сервера
python manage.py runserver 0.0.0.0:8000

# В отдельном терминале — Celery воркер
celery -A saleor worker --app=saleor.celeryconf:app -l info

Конфигурация production-среды

Ключевые переменные settings.py для production:

# saleor/settings.py — переопределение через переменные окружения
import os
from pathlib import Path

SECRET_KEY = os.environ["SECRET_KEY"]
DEBUG = os.getenv("DEBUG", "False") == "True"

ALLOWED_HOSTS = os.environ.get("ALLOWED_HOSTS", "").split(",")
ALLOWED_CLIENT_HOSTS = os.environ.get("ALLOWED_CLIENT_HOSTS", "").split(",")

# База данных
import dj_database_url
DATABASES = {
    "default": dj_database_url.config(
        default=os.environ["DATABASE_URL"],
        conn_max_age=600,
        conn_health_checks=True,
    )
}

# S3 для медиафайлов
DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
AWS_ACCESS_KEY_ID       = os.environ.get("AWS_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY   = os.environ.get("AWS_SECRET_ACCESS_KEY")
AWS_STORAGE_BUCKET_NAME = os.environ.get("AWS_STORAGE_BUCKET_NAME")
AWS_S3_REGION_NAME      = os.environ.get("AWS_S3_REGION_NAME", "us-east-1")
AWS_S3_CUSTOM_DOMAIN    = os.environ.get("AWS_S3_CUSTOM_DOMAIN")  # CDN URL

# Email через SMTP
EMAIL_BACKEND   = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST      = os.environ.get("EMAIL_HOST", "smtp.sendgrid.net")
EMAIL_PORT      = int(os.environ.get("EMAIL_PORT", "587"))
EMAIL_HOST_USER = os.environ.get("EMAIL_HOST_USER")
EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_HOST_PASSWORD")
EMAIL_USE_TLS   = True

Настройка Nginx + Gunicorn

upstream saleor_api {
    server 127.0.0.1:8000;
    keepalive 32;
}

server {
    listen 443 ssl http2;
    server_name api.example.com;

    location /graphql/ {
        proxy_pass http://saleor_api;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 120s;
        client_max_body_size 50M;
    }

    location /static/ {
        alias /var/www/saleor/static/;
        expires 30d;
    }
}

Первоначальная конфигурация через Dashboard

После установки через Dashboard (localhost:9000 или /dashboard/):

  1. Channels — создать канал, указать валюту и страны
  2. Warehouses — создать склад, привязать к каналу
  3. Shipping Zones — зоны доставки по странам
  4. Tax Configuration — налоговые классы
  5. Payment Apps — подключить через Apps → Explore → Install

Обновление Saleor

# Проверка breaking changes в CHANGELOG.md перед обновлением
git fetch && git log HEAD..origin/main --oneline

# Обновление
git pull origin main
pip install -r requirements.txt
python manage.py migrate --run-syncdb

# Перезапуск
sudo systemctl restart gunicorn celery

Сроки

  • Docker Compose установка для разработки: 2–4 часа
  • Production-установка с PostgreSQL, Redis, S3, Nginx, SSL: 1–2 дня
  • Полная настройка: каналы, склады, зоны доставки, платёж, Dashboard + Storefront: 3–5 дней