lex00.flask-uwsgi-nginx

README.md

Ansible Rola: flask-uwsgi-nginx

Ta rola dla Ansible wdraża Twoją aplikację Flask z repozytorium źródłowego Git.

Rola pakuje Twoją aplikację Flask jako paczkę (wheel) i następnie instaluje ją w wirtualnym środowisku (virtualenv).

Wymagania

  • Plik .python-version

    Ten plik musi zawierać wersję Pythona, której używasz.

  • python setup.py bdist_wheel

    Rola wykona to polecenie. Przetestuj wcześniej, aby upewnić się, że Twój projekt potrafi zbudować paczkę.

Zmienne roli

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

  • Repozytorium Pythona z aplikacją Flask

app_subfolder: ''

  • Jeśli Twój projekt znajduje się w podfolderze repozytorium, określ go tutaj, w przeciwnym razie pozostaw puste

app_description: 'Flask, który wyświetla oferty pracy z API githuba'

  • To wejdzie do skryptu usługi systemowej

app_name: 'flask_github_jobs'

  • Nazwa folderów aplikacji i usługi

app_user: 'flask_github_jobs'

  • Użytkownik i grupa systemowa będą miały tę wartość

app_domain: 'notarealdomain.com'

  • Domeną, na którą będzie odpowiadać Nginx

app_module: 'flask_github_jobs'

  • Moduł Pythona do uwsgi.ini

app_callable: 'app'

  • Wywołanie Pythona do uwsgi.ini

app_port: '80'

  • Port usługi

app_health_ep: '/'

  • Punkt końcowy zdrowia

uwsgi_process_count: '4'

  • Liczba procesów uwsgi

uwsgi_thread_count: '2'

  • Liczba wątków uwsgi

Zależności

Brak

Przykład playbooka

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

Konfiguracja Pythona

Możesz używać dowolnej wersji Pythona.

  • Plik .python-version

    • Twój projekt musi mieć ten plik
  • /home/{{ app_user }}/.pyenv/versions

    • pyenv zbuduje i zainstaluje Pythona tutaj
  • /opt/{{ app_name }}/venv

    • Aplikacja zostanie zainstalowana w tym wirtualnym środowisku

Konfiguracja Uwsgi

Uwsgi zostanie zainstalowane w wirtualnym środowisku. Żadne pakiety systemowe dla Uwsgi nie będą instalowane.

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

    • Plik konfiguracyjny Uwsgi
  • /var/run/{{ app_name }}/{{ app_name }}.sock

    • Plik gniazda Uwsgi

Statyczne zasoby Flask

Ta rola automatycznie odkryje Twoje foldery z zasobami statycznymi i skonfiguruje je w Nginx.

Aby to zadziałało:

  • Umieść swoje zasoby w folderze o nazwie static w module aplikacji Flask.

  • Ustaw static_url_path na pusty

    app = Flask(__name__, static_url_path='')
    

Zarządzanie usługami

Ubuntu 14.04 Uruchom/Zatrzymaj usługę Uwsgi

sudo start {{ app_name }}

Ubuntu 14.04 Uruchom/Zatrzymaj Nginx

sudo start nginx

Ubuntu >= 16 Uruchom/Zatrzymaj usługę Uwsgi

sudo systemctl start {{ app_name }}

Ubuntu >= 16 Uruchom/Zatrzymaj Nginx

sudo systemctl start nginx

Logi

Logi będą umieszczane w /var/log/{{ app_name }}

Będą należały do {{ app_user }}

Przykład Vagrant + Galaxy

Utwórz plik requirements.yml z następującą zawartością:

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

Provisoner potrzebuje, aby galaxy_role_file był ustawiony na to.

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

Przykład Packer + Galaxy

Utwórz plik requirements.yml z następującą zawartością:

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

Provisoner potrzebuje, aby galaxy_file był ustawiony na to.

{
  "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\"" ]
}

Testowanie z Vagrant

Dołączono plik Vagrantfile, aby pomóc w lokalnym testowaniu roli.

Wymagana jest wersja Vagrant > 2.0.

Uruchom Vagrant

Podczas pierwszego uruchomienia, zostanie wykonane Ansible.

flask-uwsgi-nginx$ vagrant up

Vagrant powinien być zainstalowany bez problemów.

Ponowne wdrożenie Vagrant

Możesz ponownie uruchomić rolę za pomocą:

flask-uwsgi-nginx/tests $ vagrant provision

Licencja

MIT

O projekcie

Deploy Flask from a git source repository

Zainstaluj
ansible-galaxy install lex00.flask-uwsgi-nginx
Licencja
mit
Pobrania
76
Właściciel