Встановлення і налаштування 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 ГБ для бекенду + робітників 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 днів