ФорумПрограммированиеPythonDjango → Развертывание Django на сервере - кто как делает?

Развертывание Django на сервере - кто как делает?

  • Ivan.

    Сообщения: 495 Репутация: N Группа: Адекваты

    Spritz 12 августа 2014 г. 12:42

    Какие вы используете средства/методы/приложения? Как пизже всего развернуть если сайтов много и для каждого сайта надо своё окружение? Что делаете со статикой, как сдруживаете с nginx? А может что-то другое используете?

    Спустя 291 сек.

    Сейчас делаю продакшн через одно место, хочу чужого опыта послушать. А вообще хочу написать свой велосипед, чтоб вбил репозиторий гитовский, название сайта и он автоматом всё выкачал/поднял/настроил
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 13 августа 2014 г. 10:56, спустя 22 часа 14 минут 5 секунд

    Для своих проектов использую fabric, supervisor, nginx+uwsgi. Статику коллектю джангой и раздаю nginx

    На работе все по-другому, могу только сказать что пользуемся ansible и erlang

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 14 августа 2014 г. 7:51, спустя 20 часов 54 минуты 18 секунд

    у меня руби-проекты. поднял nginx в режиме реверс-прокси и направляю на отдельные порты. на каждом порту запущен проект. статику можно раздавать через nginx же, прописав в глобальной конфигурации пути к папкам, и, для джанго, наверное, это будет лучшим способом.
    теоретически возможны ситуации, когда статику нужно будет отдавать по условию, например, по наличию кукисов, и это вроде как решается патчами к нжинксу.

    деплой по идее должен проходить так:
    тулза коннектится к серверу {
    - останавливает сервер прокта
    - фетчит и мерджит изменения с конкретного тега репозитория
    - накатывает миграции
    - запускает сервер проекта заново
    }

    такая тулза без обработки ошибок пишется за полчаса
    не всё полезно, что в swap полезло
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 14 августа 2014 г. 7:53, спустя 2 минуты 49 секунд

    Для своих проектов использую fabric, supervisor, nginx+uwsgi. Статику коллектю джангой и раздаю nginx

    @adw0rd, такие же утилиты в общем то. удобная связка, можно разрешать не юзеру обновлять код и рестартить рабочие сервисы.

    Сапожник без сапог
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 14 августа 2014 г. 7:54, спустя 48 секунд

    для приватных бесплатных репозиториев можно использовать битбакет. там есть возможность завести деплой-аккаунт для каждого проекта.
    не всё полезно, что в swap полезло
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 14 августа 2014 г. 7:59, спустя 5 минут 9 секунд

    битбакет да, неплох. сам юзаю частенько. от своего хостинга отказался ибо лень поднимать :)

    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 14 августа 2014 г. 8:27, спустя 27 минут 56 секунд

    битбакет да, неплох. сам юзаю частенько. от своего хостинга отказался ибо лень поднимать :)

    @phpdude, тоже туда всё перенёс, когда последний раз сервер сносил

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 14 августа 2014 г. 8:30, спустя 2 минуты 22 секунды

    битбакет да, неплох. сам юзаю частенько. от своего хостинга отказался ибо лень поднимать :)

    @phpdude, тоже туда всё перенёс, когда последний раз сервер сносил

    @Sinkler, да там все-таки шарить проще нежели с акками локальными ебаться) и 100 штук бесплатно. гитхаб поинтереснее но там ценник кусачий неразумно

    Сапожник без сапог
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 14 августа 2014 г. 8:34, спустя 3 минуты 52 секунды

    сейчас вообще тенденция пользоваться сторонними общеизвестными проектами для типичных задач за небольшой ценник или бесплатно и не делать себе мозг с развёртыванием/содержанием/обучением_юзверей

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 14 августа 2014 г. 8:35, спустя 1 минуту 37 секунд

    @Sinkler, ну тенденция себя типа оправдывает - время и нервы в покое)))

    Сапожник без сапог
  • Ivan.

    Сообщения: 495 Репутация: N Группа: Адекваты

    Spritz 22 апреля 2015 г. 3:50, спустя 250 дней 19 часов 15 минут

    что скажете про gunicorn, чем он хуже uwsgi (продакшен и хайлоад)?

  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 22 апреля 2015 г. 5:11, спустя 1 час 20 минут 11 секунд

    что скажете про gunicorn, чем он хуже uwsgi (продакшен и хайлоад)?

    @Ivan., я юзал его, но особого мнения нет. Мне показался uwsgi более быстрым, удобным в настройке

    uWSGI vs. Gunicorn, or How to Make Python Go Faster than Node : Blog – Software is for Humans [blog.kgriffs.com]

    Спустя 124 сек.

    я когда переходил на uWSGI тогда и читал всю эту тему, мне показалось что uWSGI быстрее на 10-20%

    Спустя 35 сек.

    Вот еще https://ivan-site.com/2012/09/benchmark-uwsgi-vs-gunicorn-for-async-workers/

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Ivan.

    Сообщения: 495 Репутация: N Группа: Адекваты

    Spritz 24 мая 2015 г. 8:55, спустя 32 дня 3 часа 43 минуты

    Есть ли годный туториал в интернете про то, как красиво настроить uwsgi + nginx и запускать на этом деле django проекты?
    Потребовался на днях для личных нужд один django-проектик, так блин пока VDS настраивал - всякие 502, 500 лезли и т.п.
    В итоге просто запустил внутри screen: python manage.py runserver blablabla и проксировал это на nginx'е
    Вроде всё работает, но костылище ужасный)

  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 24 мая 2015 г. 9:25, спустя 30 минут 18 секунд

    "nginx/example.conf"

    
    server {
        listen 80;
        server_name example.com;
    
        location /media/ {
            root /home/example/example.com/storage;
        }
        location ~ /static/ {
            root /home/example/example.com/storage;
        }
        location / {
            uwsgi_pass unix:///home/example/example.com/example_uwsgi.sock;
            include uwsgi_params;
        }
    }
    

    "uwsgi/example.conf"

    
    [uwsgi]
    chdir=/home/example/example.com/wwwroot
    pidfile=/home/example/example.com/example_uwsgi.pid
    socket=/home/example/example.com/example_uwsgi.sock
    chmod-socket=777
    virtualenv=/home/example/example.com/env
    pythonpath=.
    pythonpath=example
    module=example.wsgi:application
    callable=app
    master=true
    processes=2
    harakiri=30
    buffer-size=32768
    

    "supervisor/example.conf"

    
    [program:example_uwsgi]
    environment=PATH=/home/example/example.com/env/bin/
    numprocs=1
    directory=/home/example/example.com/
    command=/home/example/example.com/env/bin/uwsgi uwsgi/production.ini
    user=example
    autostart=true
    autorestart=true
    redirect_stderr=true
    stopwaitsecs=60
    stopsignal=INT
    stderr_logfile=/home/example/example.com/logs/example_wsgi_err.log
    stdout_logfile=/home/example/example.com/logs/example_wsgi_out.log
    stdout_logfile_maxbytes=100MB
    stdout_logfile_backups=30
    stdout_capture_maxbytes=1MB
    
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 24 мая 2015 г. 10:09, спустя 43 минуты 54 секунды

    @adw0rd, у тебя раньше на любой вопрос была ссылка на пост в блоге)

    все умрут, а я изумруд

Пожалуйста, авторизуйтесь, чтобы написать комментарий!