lex00.flask-uwsgi-nginx
README.md
Rôle Ansible : flask-uwsgi-nginx
Ce rôle Ansible déploie votre application Flask depuis un dépôt git.
Le rôle emballe votre application Flask sous forme de "wheel" et l'installe ensuite dans un environnement virtuel (virtualenv).
Exigences
Fichier
.python-version
Ce fichier doit contenir la version de Python que vous ciblez.
Commande
python setup.py bdist_wheel
Le rôle exécutera cette commande. Testez à l'avance et assurez-vous que votre projet peut construire une wheel.
Variables du Rôle
app_repo_url : 'https://github.com/lex00/flask-github-jobs'
- dépôt Python contenant l'application Flask
app_subfolder : ''
- si votre projet se trouve dans un sous-dossier du dépôt, spécifiez-le ici, sinon laissez vide
app_description : 'Une Flask qui liste les emplois depuis l’API des emplois de GitHub'
- cela sera utilisé dans le script de service système
app_name : 'flask_github_jobs'
- noms des dossiers d'app et du service
app_user : 'flask_github_jobs'
- utilisateur et groupe système auront cette valeur
app_domain : 'notarealdomain.com'
- domaine auquel Nginx répondra
app_module : 'flask_github_jobs'
- module Python pour uwsgi.ini
app_callable : 'app'
- appelable Python pour uwsgi.ini
app_port : '80'
- port du service
app_health_ep : '/'
- point de terminaison de santé
uwsgi_process_count : '4'
- nombre de processus uwsgi
uwsgi_thread_count : '2'
- nombre de threads uwsgi
Dépendances
Aucune
Exemple de Playbook
- hosts: all
tasks:
- import_role:
name: lex00.flask-uwsgi-nginx
Configuration de Python
Vous pouvez utiliser n'importe quelle version de Python que vous souhaitez.
Fichier
.python-version
- Votre projet doit avoir ce fichier
/home/{{ app_user }}/.pyenv/versions
pyenv
construira et installera Python ici
/opt/{{ app_name }}/venv
- L'application sera installée dans cet environnement virtuel
Configuration de Uwsgi
Uwsgi sera installé dans l'environnement virtuel. Aucun package système pour Uwsgi ne sera installé.
/etc/{{ app_name }}/app_name.ini
- Fichier de configuration Uwsgi
/var/run/{{ app_name }}/{{ app_name }}.sock
- Fichier socket Uwsgi
Actifs statiques de Flask
Ce rôle découvrira automatiquement vos dossiers d'actifs statiques et les configurera dans Nginx.
Pour que cela fonctionne :
Placez vos actifs dans un dossier appelé
static
dans votre module application Flask.réglez
static_url_path
sur videapp = Flask(__name__, static_url_path='')
Gestion du service
Ubuntu 14.04 Démarrer/Arrêter le service Uwsgi
sudo start {{ app_name }}
Ubuntu 14.04 Démarrer/Arrêter Nginx
sudo start nginx
Ubuntu >= 16 Démarrer/Arrêter le service Uwsgi
sudo systemctl start {{ app_name }}
Ubuntu >= 16 Démarrer/Arrêter Nginx
sudo systemctl start nginx
Journaux
Les journaux seront placés dans /var/log/{{ app_name }}
Ils seront possédés par {{ app_user }}
Exemples Vagrant + Galaxy
Créez un requirements.yml
avec ce contenu :
---
- src: lex00.flask-uwsgi-nginx
Le provisionneur doit avoir galaxy_role_file
défini sur ceci.
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
Exemples Packer + Galaxy
Créez un requirements.yml
avec ce contenu :
---
- src: lex00.flask-uwsgi-nginx
Le provisionneur doit avoir galaxy_file
défini sur ceci.
{
"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\"" ]
}
Tests avec Vagrant
Un Vagrantfile
est inclus pour aider à tester le rôle localement.
Vagrant > 2.0 est requis.
Démarrer le Vagrant
La première fois que vous faites cela, cela exécutera Ansible.
flask-uwsgi-nginx$ vagrant up
Le Vagrant devrait être provisionné correctement.
Reprovisionner le Vagrant
Vous pouvez exécuter à nouveau le rôle avec :
flask-uwsgi-nginx/tests $ vagrant provision
Licence
MIT