Как установить gunicorn linux

Обновлено: 02.07.2024

Пошаговое руководство по настройке Linux Mint 17.3 с Python 3, Django и Green Unicorn (Gunicorn).

Инструменты, которые нам нужны

Наша установка будет использовать несколько системных пакетов и библиотек кода, чтобы получить запущен и работает. Пока не беспокойтесь об установке этих зависимостей, мы доберемся до них по мере прохождения обучения. Инструменты и их текущие версии по состоянию на июнь 2016 года:

    с
  • рабочий стол Cinnamon по умолчанию
  • Версия Python
  • Версия веб-фреймворка Django
  • Версия Зеленого Единорога (Gunicorn)

Если у вас Mac OS X или Windows, я рекомендую использовать программное обеспечение для виртуализации, такое как Parallels или VirtualBox с Рабочий стол Linux Mint Cinnamon .iso .

Мы должны увидеть такой экран рабочего стола при загрузке операционной системы. система впервые.

Откройте терминал, чтобы продолжить настройку.

Системные пакеты

Мы видим версию Python для Linux Mint, а также ее исполняемый файл сохраняется.

вывод этих двух команд должен быть (это не команды для запуска):

Мы действительно хотим использовать последнюю версию Python вместо версии по умолчанию 3.4. при запуске нового проекта Python, так что давайте скачаем и установим 3.5.1 сейчас.

Выполните эти команды в терминале, чтобы загрузить исходный код Python 3.5.1:

Извлеките исходный код Python:

Linux Mint по умолчанию не настроен для сборки исходного кода Python. Мы необходимо обновить наши системные списки пакетов и установить несколько пакетов, чтобы сделать возможным создание исходного кода Python. Если у вас есть пароль на свою учетную запись пользователя, введите ее, когда будет предложено разрешить установку продолжить.

После установки пакетов мы можем настроить и установить Python из источник.

Проверьте правильность установки, запустив Python REPL:

Если REPL запускается правильно с Python 3.5.1 на выходе, тогда мы хорошо пойти.

Основные системные пакеты, которые нам нужны, теперь установлены, поэтому мы можем перейти к наши зависимости, специфичные для Python.

Виртуальная среда и пип

Python 3.5 поставляется с виртуальной средой и pip-приложениями, поэтому мы может использовать их для обработки наших зависимости приложений.

Создайте каталог для хранения виртуальных сред, затем создайте virtualenv для нашего проекта Django.

Наша виртуальная среда активируется правильно, когда мы видим (djangoproj) добавлено к нашей подсказке.

Наш virtualenv с Python 3.5.1 активирован, поэтому мы можем установить все зависимости, которые нам нужны, такие как Django и Gunicorn. Наш python по умолчанию команда также настроена на использование установки Python 3.5.1 вместо Версия Python 2.7, поставляемая с Linux Mint.

Джанго и Gunicorn

Теперь мы можем установить Django и Green Unicorn в нашу виртуальную среду.

Если в выводе pip нет ошибок, это хороший знак, что мы можем продолжить.

Создайте новый проект Django с именем djangoproj или как хотите. ваш проект. Перейдите в каталог для нового проекта.

Мы можем запустить Django, используя сервер разработки с Команда python manage.py runserver . Однако запустите Django с Гунникорн вместо этого.

Теперь вы готовы к разработке Django!

Готов к развитию

Это первые несколько шагов для начала разработки с Django и Gunicorn на Linux Mint 17.3 «Роза». Если вам нужно еще более подробное руководство для развертывая веб-приложение Python в производственной среде, проверьте снаружи Книга Full Stack Python Guide to Deployments .

Чтобы выяснить, что делать дальше для вашего проекта Python, прочтите темы находится на странице содержания.

Вопросов? Свяжитесь со мной через Twitter @fullstackpython или @mattmakai . Я также на GitHub с имя пользователя mattmakai .

Что-то не так в этом посте? Вилка исходный код этой страницы на GitHub и отправьте запрос на перенос.

Предполагается, что VPS с дистрибутивом Linux (например, Ubuntu) уже установлен.

Для удобства данное руководство разделено на 2 части. Первая часть (разделы 1 – 6) охватывает только установку. Продвинутые пользователи Django, которым необходимы только инструкции по установке остального ПО, могут сразу же переходить к разделу 6. Пользователи, которым необходимы советы по настройке, могут переходить к разделу 7.

    Обновление пакетов
    Прежде чем начать установку, необходимо обновить программные пакеты на VPS. Для этого подключитесь к VPS по SSH и запустите следующие команды:

Теперь нужно создать virtualenv (или виртуальную среду), чтобы разместить и постоянно хранить в ней Django и другие пакеты Python:

Теперь можно приступить к установке Django. Для этого используйте pip, менеджер пакетов Python (аналог easy_install). Запустите команду:

Django установлен внутри активной virtualenv. Теперь нужно запустить сервер баз данных.

Данная команда дезактивирует текущую активную виртуальную среду. Теперь необходимо установить зависимости PostgreSQL (для его работы с Django) с помощью следующей команды:

Установив все необходимые зависимости, установите PostgreSQL:

Убедитесь в том, что «myenv» внесен в начало терминальной строки. Активировав виртуальную среду, запустите команду:

Это создаст базу даных под названием mydb (если в команду не были внесены изменения). Конечно, базу данных можно назвать как угодно. Теперь создайте пользователя базы данных с помощью следующей команды:

На данном этапе появятся 6 извещений. Первое запрашивает имя нового пользователя (выберите любое удобное имя). Следующие два извещения запросят установить и подтвердить пароль для нового пользователя. В последних трех извещениях нужно настроить права. Теперь активируйте интерфейс командной строки PostgreSQL:

В завершение откройте новому пользователю доступ к базе данных, выполнив команду:

Теперь убедитесь в том, что виртуальная среда активна. Для этого можно запустить следующую команду:

Теперь, когда виртуальная среда активна, запустите следующую команду, которая создаст новый проект Django:

В каталоге виртуальной среды должен появиться новый каталог по имени myproject. Именно в нем хранятся файлы нового проекта Django. Чтобы Django имел возможность взаимодействовать с базой данных, нужно установить бекэнд PostgreSQL. Убедитесь, что виртуальная среда активна, и запустите команду:

Перейдите в каталог myproject, а затем в его подкаталог с таким же именем:

В текстовом редакторе откройте файл settings.py:

Найдите настройки БД и отредактируйте их следующим образом:

Сохраните изменения и закройте файл. Теперь поднимитесь на каталог выше, в главный каталог проекта Django ( /opt/myenv/myproject ).

Если виртуальная среда не была активирована, активируйте ее.

Активировав virtualenv, запустите следующую команду, чтобы Django мог добавить начальные конфигурации и другие таблицы в базу данных:

Поскольку NGINX будет обслуживать статические файлы, теперь нужно определить, где именно эти файлы будут храниться. Откройте файл settings.py проекта Django и отредактируйте строку STATIC_ROOT следующим образом:

Конечно, данные файлы можно расположить где угодно но для поддержания чистоты рекомендуется разместить их вне папки проекта Django, но внутри каталога виртуальной среды. Указав местонахождение статических файлов, можно переходить к настройке NGINX для обработки этих файлов. Откройте новый конфигурационный файл NGINX с помощью следующей команды (в случае необходимости замените «nano» другим редактором):

Конечно, файл можно назвать как угодно, но в целом таким файлам принято давать название, связанное с сайтом. Внесите в файл следующее:

Теперь нужно установить символьную ссылку, указывающую на данный конфигурационный файл, в каталог /etc/nginx/sites-enabled . Таким образом NGINX определяет, активен ли сайт. Перейдите в каталог /etc/nginx/sites-enabled:

В данном каталоге запустите:

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

Кроме того, нужно удалить блок NGINX по умолчанию:

Теперь нужно перезапустить NGINX, чтобы внесенные изменения вступили в силу. Для этого запустите:

И наполните его подобным содержимым:

Далее необходимо создать первый конфигурационный файл для первого проекта:

И наполнить его примерно таким содержимым:

После создание файла конфигурации необходимо создать директорию для логов и лог файл. Для этого используем команды:

Теперь необходимо лишь запустить Ваш проект командой:

Так же с помощью команды restart можно перезагрузить проект и с помощью команды stop остановить.
Если нужно что бы Supervisor перезагрузил конфигурацию выполните данные команды:

Теперь нужно выполнить команду после которой необходимо заполнить имя пользователя, E-Mail и пароль:

DigitalOcean

Из всех VPS-провайдеров я выбрал DigitalOcean, так как:

  • Начальный бонус 10$ после регистрации по ссылке (это месяц использования VPS в подарок)
  • Бонус в 50$ для студентов
  • Высокое качество и надёжность (за 3 года использования проблемы были только 2 раза, о них старались предупреждать заранее, и устранялись в кратчайшие сроки), а также низкая цена.

Впрочем, большая часть статьи подходит для VPS от любого провайдера.

Для активации аккаунта и получения стартового бонуса необходимо либо привязать банковскую карту, либо заплатить хотя бы 5$ через PayPal.

После этого можно выбрать тариф: для начала достаточно и самого дешёвого за 5$, но как только нагрузка на ваше приложение увеличится, ресурсов может не хватить. Тарифа за 10$ мне хватает вполне, поэтому, если у вас нет ничего экстраординарного, выше брать не стоит.

Ubuntu

Необходимо произвести начальную настройку. Если кратко:

  • Создать нового пользователя (не будем же мы всё из-под root-а делать?)
  • Дать ему права на выполнение команд через sudo
  • (опционально) авторизация не по паролю, а по ключу

Подробнейшие инструкции на русском есть на сайте DigitalOcean, не считаю нужным повторяться.

Предположим, нового пользователя назовём steve (это понадобится в дальнейшем, когда будем прописывать пути, будьте внимательны и меняйте на имя созданного Вами пользователя!)

PostgreSQL

Запускаем консоль PostgreSQL

Некоторые приложения (и Misago в том числе) могут устанавливать расширения (extension) для PostgreSQL. Если у вас именно такой случай, необходимо ещё на время дать права суперпользователя базы новому пользователю:

Теперь можно выйти из консоли PostgreSQL

virtualenv

Устанавливаем pip и virtualenv :

Создаём новое виртуальное окружение:

Если вам нужно будет удалить виртуальное окружение, достаточно сделать rm -rf

Теперь активировать окружение можно с помощью команды

запущенной из директории newproject .

Вы увидите, что после этой команды изменится приглашение интерпретатора bash: в начале появится (newenv).

Django

Установить Django в виртуальное окружение можно с помощью

в вашем окружении (заметьте, не pip3 , несмотря на третий Python!)

Для выхода из окружения используйте команду deactivate (заметьте, она работает только в виртуальном окружении!)

Создаём Django-проект

В моём случае (приложение Misago) была отдельная команда

Меняем настройки для доступа к базе данных. В settings.py прописываем:

Далее, стандартные действия:

После чего следует отобрать права суперпользователя для пользователя базы данных (если вы их выдавали).

nginx

Устанавливаем свежий nginx

Конфигурируем наш сервер

gunicorn

Вернёмся в виртуальное окружение (если вы из него выходили), и установим gunicorn

Создадим файл конфигурации для gunicorn

Теперь мы можем запустить gunicorn, а далее он будет автоматически запускаться при загрузке.

Подробно на английском (с решением некоторых возможных проблем) описано в статье на DigitalOcean.

memcached

Устанавливаем Python библиотеку (в виртуальное окружение) для связывания Django и memcached

Установка Gunicorn + Nginx + Django на Ubuntu

Сейчас есть широкий выбор серверов, обслуживающих Django [1] . Тесты показывают, что наиболее производительные - это Gunicorn и uWSGI, причем первый развивается и поддерживается более активно.

Нам также понадобится средство для запуска, остановки и перезапуска сервера. В мире Django наиболее популярна система Supervisor, хотя пользователям Ubuntu возможно проще будет воспользоваться Upstart.

Окружение

Gunicorn

Проверить работу Gunicorn на проекте Django очень просто: Опять, указываем адрес 0.0.0.0 только для проверки гуникорна. На рабочем сервере сервере не рекомендуется открывать прямой доступ к gunicorn; желательно запускать его на 127.0.0.1:port и проксировать через веб-сервер (в нашем случае это будет nginx, см. ниже). Открываем севрер в браузере, убеждаемся что гуникорн работает.

Теперь составим конфигурацию для сервера в окружении (вы ведь запускаете проект в виртуальном окружении?). Параметры удобно записать в файле-скрипте:

Устанавливаем разрешения на выполнение скрипта chmod ug+x script.sh . И тестируем в командной строке Еще раз обращаем внимание, что умолчанию Gunicorn работает на локальном адресе 127.0.0.1:8000 (на том же, что и сервер отладки Django), что есть хорошо, если Nginx находится на той же машине – обычно его не открывают для всех, и только Nginx обрабатывает входящие подключения. Мы взяли адрес 0.0.0.0:port только для целей проверки, чтобы была возможность подключиться удаленно, если вы настраиваете удаленный сервер (см. выше).

Чтобы запустить несколько проектов Django на одной машине, всем проектам нужно указать разные порты.

Update: При очередном развертывании, на которое убил целый день, gunicorn_django заводился только без указания пользователя и группы (строку переместить в конец и закомментировать).

Update 2: Можно запустить демона gunicorn и без супервизора с параметром -D :

Supervisor

У Supervisor отличная документация, здесь ее приводить не будем. Конфигурационный файл для запуска сервера - /etc/supervisord.conf), если его нет, нужно создать шаблонный: В нем указать примерно такие параметры: Теперь можно проверить: Если мы добавляем новый процесс в конфигурацию, то его надо добавить командой Просмотр процессов: или Также можно перечитать файл конфигурации Важно! Это должно запускаться под тем же пользователем, под которым работает supervisord . Если что-то пойдет не так, отлаживать командой (у меня была проблема в том, что при запуске supervisor уже запущен под рутом (вероятно)).

Upstart

В Ubuntu есть альтернативное средство - Upstart, у которого похожий конфигурационный файл (находится /etc/init/hello.conf). Например: Тестируем:

Nginx

Настроим Nginx в качестве обратного прокси: Для тестирования конфигурации введите nginx -t или nginx -s reload для перезагрузки конфигурации.

Это все. Поскольку сервер установлен изолировано, на одной машине можно запустить множество приложений django с различными окружениями.

Читайте также: