📝 Django

Деплой Django на Railway

P
Автор
Pyland
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
92
🌳
Уровень
Продвинутый
🐦 💼 ✈️

Railway — облачная платформа с бесплатным тиром. Деплой через GitHub за несколько минут.

Подготовка проекта

pip install gunicorn whitenoise dj-database-url
pip freeze > requirements.txt
# settings.py
import os
import dj_database_url

DEBUG = os.environ.get('DEBUG', 'False') == 'True'
SECRET_KEY = os.environ.get('SECRET_KEY')
ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS', '').split(',')

# База данных из переменной окружения
DATABASES = {
    'default': dj_database_url.config(
        default=os.environ.get('DATABASE_URL'),
        conn_max_age=600,
    )
}

# Статика через whitenoise
MIDDLEWARE = [
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ...
]
STATIC_ROOT = BASE_DIR / 'staticfiles'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

Procfile

Создай файл Procfile в корне проекта:

web: gunicorn mysite.wsgi --workers 2 --bind 0.0.0.0:$PORT
release: python manage.py migrate

.gitignore

.env
*.pyc
__pycache__/
db.sqlite3
staticfiles/
media/

Деплой на Railway

  1. Залей проект на GitHub
  2. Зайди на railway.app → New Project → Deploy from GitHub
  3. Выбери репозиторий
  4. Добавь PostgreSQL: New → Database → PostgreSQL
  5. В настройках сервиса добавь переменные:
    - SECRET_KEY — сгенерируй: python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
    - DEBUG = False
    - ALLOWED_HOSTS = your-app.railway.app
    - DATABASE_URL — подтянется автоматически из PostgreSQL сервиса

Команды после деплоя

# В Railway → Service → Shell (или через CLI)
python manage.py migrate
python manage.py collectstatic --no-input
python manage.py createsuperuser

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Event loop в Python: как asyncio делает «параллел…

Event loop — сердце asyncio. Он не запускает код параллельно в нескольких потоках. Он переключается...

📅 30.06.2026 👁️ 129
📝

pytest-django: тестирование Django

Охватываемые темы: Установка, @pytest.mark.djangodb, Фикстуры, Тестирование views.

📅 30.06.2026 👁️ 138
📝

run_in_executor и anyio: sync-библиотеки в async …

Иногда нужно вызвать синхронную библиотеку из async кода не блокируя event loop.

📅 30.06.2026 👁️ 107

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!