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
ansible-galaxy install lex00/flask-uwsgi-nginx