2020-11-08: Création
L'objectif est de déployé Django sur la plateforme suivante:
Pour la réalisation du projet, cest Pipenv qui a étét utilisé. Je préfère maintenant utiliser cet outil qui permet de linker facilement l'environnement virtuel grace au fichierPipfile.
Ce guide explique les subtilité de Pipenv et les dépendance des les projets : https://www.codeflow.site/fr/article/pipenv-guide
La précaution à prendre est de bien utiliser Pipenv pour avoir la nomenclature des versions de librairies de l'environnement virtuel. Si l'on utilise le fichier (historique) requirements.txt il est possible de l'utiliser et de profiter des avantages de Pipenv:
Exemple: Mise à jour de requirements.txt pour un projet éxistant:
$ pip freeze > requirements.txt
Enrichissement de Pipenv avec requirements.txt
$ pipenv install -r requirements.txt Requirements file provided! Importing into Pipfile… Pipfile.lock not found, creating… Locking [dev-packages] dependencies… Locking [packages] dependencies… ✔ Success! Updated Pipfile.lock (71fee3)! Installing dependencies from Pipfile.lock (71fee3)… 🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 75/75 — 00:02:44 To activate this project's virtualenv, run pipenv shell. Alternatively, run a command inside the virtualenv with pipenv run.
Extrait de Pipfile:
$ cat Pipfile [[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true [dev-packages] [packages] aioredis = "==1.3.1" argon2-cffi = "==20.1.0" asgiref = "==3.2.10" async-timeout = "==3.0.1" attrs = "==20.2.0" autobahn = "==20.7.1" bcrypt = "==3.2.0" begins = "==0.9" [...] Django = "==3.1.2" Jinja2 = "==2.11.2" [...] Twisted = "==20.3.0" Werkzeug = "==1.0.1" "zope.interface" = "==5.1.2" [requires] python_version = "3.8"
Extrait de Pipfile.lock qui fait office de référence de build pour la production :
{ "_meta": { "hash": { "sha256": "360ee962e7ecdb9ce3967cb5a08616d51347e3b35ae2f2c5fef4a1138c6ce7b7" }, "pipfile-spec": 6, "requires": { "python_version": "3.8" }, "sources": [ { "name": "pypi", "url": "https://pypi.org/simple", "verify_ssl": true } ] }, [...] "django": { "hashes": [ "sha256:a2127ad0150ec6966655bedf15dbbff9697cc86d61653db2da1afa506c0b04cc", "sha256:c93c28ccf1d094cbd00d860e83128a39e45d2c571d3b54361713aaaf9a94cac4" ], "index": "pypi", "version": "==3.1.2" }, [...]
$ mkdir ~/django.git $ cd ~/django.git $ git --bare init Dépôt Git vide initialisé dans /home/open1024django/django.git/ fatal: this operation must be run in a work tree
$ mkdir ~/django_www $ mkdir ~/scripts
Organisation générale:
tree -L 2 . ├── django.git │ ├── branches │ ├── config │ ├── description │ ├── HEAD │ ├── hooks │ ├── info │ ├── objects │ └── refs ├── django_www └── scripts
$ remote add open1024 ssh://user@open1024.fr:xxx/home/user/django.git $ git push open1024 master
Ceci est une méthode basique de clonage du projet. Dans un 2ème temps nous utiliseront les hooks de git pour déployer après le push depuis le machine de développement.
$ cd ~/django_www $ git clone ../django.git Clonage dans 'django'... fait.
Visu du clonage du projet:
$ ls django
argonautes docs manage.py Pipfile project_cfg README.md README.MD web
Aller dans le dossier de clonage et lancer l'installation avec pipenv install :
$ cd ~/django_www/django $ pipenv install 153 19:43:11 Creating a virtualenv for this project… Using /usr/bin/python3 (3.8.6) to create virtualenv… created virtual environment CPython3.8.6.final.0-64 in 273ms creator CPython3Posix(dest=/home/open1024django/.local/share/virtualenvs/django_www-9HFou1gn, clear=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/open1024django/.local/share/virtualenv) added seed packages: pip==20.1.1, pkg_resources==0.0.0, setuptools==44.0.0, wheel==0.34.2 activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator Virtualenv location: /home/open1024django/.local/share/virtualenvs/django_www-9HFou1gn Creating a Pipfile for this project… Pipfile.lock not found, creating… Locking [dev-packages] dependencies… Locking [packages] dependencies… Updated Pipfile.lock (9e16cc)! Installing dependencies from Pipfile.lock (9e16cc)…