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 pustyapp = 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
ansible-galaxy install lex00.flask-uwsgi-nginx