flask-uwsgi-nginx

README.md

Ansible Роль: flask-uwsgi-nginx

Эта роль для Ansible разворачивает ваше Flask-приложение из репозитория git.

Роль упаковывает ваше Flask-приложение в wheel и затем устанавливает его в virtualenv.

Требования

  • Файл .python-version

    Этот файл должен содержать версию Python, которую вы используете.

  • python setup.py bdist_wheel

    Роль выполнит эту команду. Протестируйте заранее и убедитесь, что ваш проект может собрать wheel.

Переменные роли

app_repo_url: 'https://github.com/lex00/flask-github-jobs'

  • репозиторий Python, содержащий Flask-приложение

app_subfolder: ''

  • если ваш проект находится в подпапке репозитория, укажите это здесь, в противном случае оставьте пустым

app_description: 'Flask-приложение, которое выводит вакансии из API github'

  • это будет указано в скрипте системной службы

app_name: 'flask_github_jobs'

  • имя папки приложения и службы

app_user: 'flask_github_jobs'

  • системный пользователь и группа будут иметь это значение

app_domain: 'notarealdomain.com'

  • домен, на который будет отвечать nginx

app_module: 'flask_github_jobs'

  • модуль Python для uwsgi.ini

app_callable: 'app'

  • вызываемая функция Python для uwsgi.ini

app_port: '80'

  • порт службы

app_health_ep: '/'

  • конечная точка для проверки здоровья

uwsgi_process_count: '4'

  • количество процессов uwsgi

uwsgi_thread_count: '2'

  • количество потоков uwsgi

Зависимости

Отсутствуют

Пример плейбука

- hosts: all
  tasks:
  - import_role:
       name: lex00.flask-uwsgi-nginx

Конфигурация Python

Вы можете использовать любую версию Python.

  • Файл .python-version

    • Ваш проект должен содержать этот файл
  • /home/{{ app_user }}/.pyenv/versions

    • pyenv будет собирать и устанавливать Python здесь
  • /opt/{{ app_name }}/venv

    • Приложение будет установлено в этот virtualenv

Конфигурация Uwsgi

Uwsgi будет установлен в virtualenv. Системные пакеты для Uwsgi не будут установлены.

  • /etc/{{ app_name }}/app_name.ini

    • Файл конфигурации Uwsgi
  • /var/run/{{ app_name }}/{{ app_name }}.sock

    • Файл сокета Uwsgi

Статические ресурсы Flask

Эта роль автоматически обнаружит ваши папки со статическими ресурсами и настроит их в nginx.

Для этого:

  • Поместите свои ресурсы в папку с названием static в вашем Flask-модуле.

  • установите static_url_path в пустое значение

    app = Flask(__name__, static_url_path='')
    

Управление службой

Ubuntu 14.04 Запуск/Остановка службы Uwsgi

sudo start {{ app_name }}

Ubuntu 14.04 Запуск/Остановка Nginx

sudo start nginx

Ubuntu >= 16 Запуск/Остановка службы Uwsgi

sudo systemctl start {{ app_name }}

Ubuntu >= 16 Запуск/Остановка Nginx

sudo systemctl start nginx

Логи

Логи будут помещены в /var/log/{{ app_name }}

Они будут принадлежать {{ app_user }}

Пример Vagrant + Galaxy

Создайте файл requirements.yml со следующим содержимым:

---
- src: lex00.flask-uwsgi-nginx

Программному обеспечению требуется, чтобы galaxy_role_file был установлен на этот файл.

config.vm.provision "ansible", type: "ansible_local" do |ansible|
  ansible.verbose = true
  ansible.become = true
  ansible.extra_vars = "vars.json"
  ansible.config_file = "ansible.cfg"
  ansible.galaxy_roles_path = "roles"
  ansible.galaxy_role_file = "requirements.yml"
  ansible.playbook = "playbook.yml"
end

Пример Packer + Galaxy

Создайте файл requirements.yml со следующим содержимым:

---
- src: lex00.flask-uwsgi-nginx

Программному обеспечению требуется, чтобы galaxy_file был установлен на этот файл.

{
  "type": "ansible-local",
  "host_vars": "{{ user `vars_path` }}",
  "playbook_dir": "{{ user `ansible_path` }}",
  "playbook_paths": "{{ user `ansible_path` }}",
  "role_paths": "{{ user `ansible_path` }}/roles",
  "playbook_file": "{{ user `ansible_path` }}/playbook.yml",
  "galaxy_file": "{{ user `ansible_path` }}/requirements.yml",
  "extra_arguments": [ "--extra-vars \"@host_vars/vars.json\"" ]
}

Тестирование с Vagrant

Включен файл Vagrantfile, чтобы помочь протестировать роль локально.

Требуется Vagrant > 2.0.

Запустите Vagrant

В первый раз, когда вы это сделаете, он запустит Ansible.

flask-uwsgi-nginx$ vagrant up

Vagrant должен корректно настроиться.

Повторное развертывание Vagrant

Вы можете запустить роль еще раз с помощью:

flask-uwsgi-nginx/tests $ vagrant provision

Лицензия

MIT

О проекте

Deploy Flask from a git source repository

Установить
ansible-galaxy install lex00/flask-uwsgi-nginx
Лицензия
mit
Загрузки
66
Владелец