forked from Fred/gwift-book
finished reviewed of part 2 - deployment
This commit is contained in:
parent
b422705c44
commit
f28c650446
|
@ -77,6 +77,7 @@ Qu'est-ce qu'on fait des logs après ? :-)
|
|||
|
||||
include::infrastructure.adoc[]
|
||||
|
||||
include::database.adoc[]
|
||||
|
||||
include::centos+debian.adoc[]
|
||||
|
||||
include::database.adoc[]
|
|
@ -3,18 +3,29 @@
|
|||
[source,bash]
|
||||
----
|
||||
yum update
|
||||
groupadd --system webapps
|
||||
groupadd --system gunicorn_sockets
|
||||
useradd --system --gid webapps --shell /bin/bash --home /home/gwift gwift
|
||||
mkdir -p /home/gwift
|
||||
chown gwift:webapps /home/gwift
|
||||
groupadd --system webapps <1>
|
||||
groupadd --system gunicorn_sockets <2>
|
||||
useradd --system --gid webapps --shell /bin/bash --home /home/gwift gwift <3>
|
||||
mkdir -p /home/gwift <4>
|
||||
chown gwift:webapps /home/gwift <5>
|
||||
----
|
||||
<1> On ajoute un groupe intitulé `webapps`
|
||||
<2> On crée un groupe pour les communications via sockets
|
||||
<3> On crée notre utilisateur applicatif; ses applications seront placées dans le répertoire `/home/gwift`
|
||||
<4> On crée le répertoire home/gwift
|
||||
<5> On pourrait sans doute fusioner les étapes 3, 4 et 5.
|
||||
|
||||
|
||||
=== Installation des dépendances systèmes
|
||||
|
||||
La version 3.6 de Python se trouve dans les dépôts officiels de CentOS.
|
||||
Si vous souhaitez utiliser une version ultérieure, il suffit de l'installer en parallèle de la version officiellement supportée par votre distribution.
|
||||
|
||||
Pour CentOS, vous avez donc deux possibilités :
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
yum install python36 git tree -y
|
||||
yum install python36 -y
|
||||
|
||||
# CentOS 7 ne dispose que de la version 3.7 d'SQLite. On a besoin d'une version 3.8 au minimum:
|
||||
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.8.11/1.fc21/x86_64/sqlite-devel-3.8.11-1.fc21.x86_64.rpm
|
||||
|
@ -22,6 +33,20 @@ wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.8.11/1.fc21/x86_64/sq
|
|||
sudo yum install sqlite-3.8.11-1.fc21.x86_64.rpm sqlite-devel-3.8.11-1.fc21.x86_64.rpm -y
|
||||
----
|
||||
|
||||
Ou passer par une installation alternative:
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
sudo yum -y groupinstall "Development Tools"
|
||||
sudo yum -y install openssl-devel bzip2-devel libffi-devel
|
||||
|
||||
wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
|
||||
cd Python-3.8*/
|
||||
./configure --enable-optimizations
|
||||
sudo make altinstall <1>
|
||||
----
|
||||
<1> *Attention !* Le paramètre `altinstall` est primordial. Sans lui, vous écraserez l'interpréteur initialement supporté par la distribution, et cela pourrait avoir des effets de bord non souhaités.
|
||||
|
||||
=== Préparation de l'environnement utilisateur
|
||||
|
||||
[source,bash]
|
||||
|
@ -36,7 +61,7 @@ mkdir webapps
|
|||
python3.6 -m venv .venvs/gwift
|
||||
source .venvs/gwift/bin/activate
|
||||
cd /home/gwift/webapps
|
||||
git clone git@vmwmedtools:institutionnel/gwift.git
|
||||
git clone ...
|
||||
----
|
||||
|
||||
La clé SSH doit ensuite être renseignée au niveau du dépôt, afin de pouvoir y accéder.
|
||||
|
@ -59,10 +84,13 @@ gunicorn config.wsgi:application --bind localhost:3000 --settings=config.setting
|
|||
|
||||
[source,bash]
|
||||
----
|
||||
SECRET_KEY=<set your secret key here>
|
||||
SECRET_KEY=<set your secret key here> <1>
|
||||
ALLOWED_HOSTS=*
|
||||
STATIC_ROOT=/var/www/gwift/static
|
||||
DATABASE= <2>
|
||||
----
|
||||
<1> La variable `SECRET_KEY` est notamment utilisée pour le chiffrement des sessions.
|
||||
<2> On fait confiance à django_environ pour traduire la chaîne de connexion à la base de données.
|
||||
|
||||
=== Création des répertoires de logs
|
||||
|
||||
|
@ -119,7 +147,9 @@ exec gunicorn ${DJANGO_WSGI_MODULE}:application \
|
|||
--log-file=-
|
||||
----
|
||||
|
||||
=== Supervision
|
||||
=== Supervision, keep-alive et autoreload
|
||||
|
||||
Pour la supervision, on passe par Supervisor. Il existe d'autres superviseurs,
|
||||
|
||||
[source,bash]
|
||||
----
|
||||
|
@ -190,12 +220,16 @@ gwift: started
|
|||
|
||||
=== Ouverture des ports
|
||||
|
||||
et 443 (HTTPS).
|
||||
|
||||
[source,text]
|
||||
----
|
||||
firewall-cmd --permanent --zone=public --add-service=http
|
||||
firewall-cmd --permanent --zone=public --add-service=https
|
||||
firewall-cmd --permanent --zone=public --add-service=http <1>
|
||||
firewall-cmd --permanent --zone=public --add-service=https <2>
|
||||
firewall-cmd --reload
|
||||
----
|
||||
<1> On ouvre le port 80, uniquement pour autoriser une connexion HTTP, mais qui sera immédiatement redirigée vers HTTPS
|
||||
<2> Et le port 443 (forcément).
|
||||
|
||||
=== Installation d'Nginx
|
||||
|
||||
|
@ -228,7 +262,7 @@ server {
|
|||
gzip_types gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
|
||||
|
||||
|
||||
location /static/ {
|
||||
location /static/ { <2>
|
||||
access_log off;
|
||||
expires 30d;
|
||||
add_header Pragma public;
|
||||
|
@ -238,7 +272,7 @@ server {
|
|||
}
|
||||
|
||||
location / {
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; <3>
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_redirect off;
|
||||
|
||||
|
@ -246,6 +280,8 @@ server {
|
|||
}
|
||||
}
|
||||
----
|
||||
<2> Ce répertoire sera complété par la commande `collectstatic` que l'on verra plus tard. L'objectif est que les fichiers ne demandant aucune intelligence soit directement servis par Nginx. Cela évite d'avoir un processus Python (relativement lent) qui doive être instancié pour servir un simple fichier statique.
|
||||
<3> Afin d'éviter que Django ne reçoive uniquement des requêtes provenant de 127.0.0.1
|
||||
|
||||
=== Configuration des sauvegardes
|
||||
|
||||
|
@ -266,7 +302,7 @@ Et dans le fichier crontab :
|
|||
0 23 * * * /home/gwift/bin/backup.sh
|
||||
----
|
||||
|
||||
|
||||
|
||||
=== Rotation des jounaux
|
||||
|
||||
[source,bash]
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
On l'a déjà vu, Django se base sur un pattern type ActiveRecords pour l'ORM.
|
||||
== Bases de données
|
||||
|
||||
NOTE: à vérifier ;-)
|
||||
On l'a déjà vu, Django se base sur un pattern type https://www.martinfowler.com/eaaCatalog/activeRecord.html[ActiveRecords] pour l'ORM et supporte les principaux moteurs de bases de données connus:
|
||||
|
||||
et supporte les principaux moteurs de bases de données connus: MariaDB (en natif depuis Django 3.0), PostgreSQL au travers de psycopg2 (en natif aussi), Microsoft SQLServer grâce aux drivers [...à compléter] ou Oracle via https://oracle.github.io/python-cx_Oracle/[cx_Oracle].
|
||||
* MariaDB (en natif depuis Django 3.0),
|
||||
* PostgreSQL au travers de psycopg2 (en natif aussi),
|
||||
* Microsoft SQLServer grâce aux drivers [...à compléter]
|
||||
* ou Oracle via https://oracle.github.io/python-cx_Oracle/[cx_Oracle].
|
||||
|
||||
WARNING: Chaque pilote doit être utilisé précautionneusement ! Chaque version de Django n'est pas toujours compatible avec chacune des versions des pilotes, et chaque moteur de base de données nécessite parfois une version spécifique du pilote. De fait, vous serez parfois bloqué sur une version de Django, simplement parce que votre serveur de base de données se trouvera dans une version spécifique (eg. Django 2.3 à cause d'un Oracle 12.1).
|
||||
WARNING: Chaque pilote doit être utilisé précautionneusement ! Chaque version de Django n'est pas toujours compatible avec chacune des versions des pilotes, et chaque moteur de base de données nécessite parfois une version spécifique du pilote. Par ce fait, vous serez parfois bloqué sur une version de Django, simplement parce que votre serveur de base de données se trouvera dans une version spécifique (eg. Django 2.3 à cause d'un Oracle 12.1).
|
||||
|
||||
Ci-dessous, quelques procédures d'installation pour mettre un serveur à disposition. Les deux plus simples seront MariaDB et PostgreSQL, qu'on couvrira ci-dessous. Oracle et Microsoft SQLServer se trouveront en annexes.
|
||||
|
||||
== PostgreSQL
|
||||
=== PostgreSQL
|
||||
|
||||
On commence par installer PostgreSQL.
|
||||
|
||||
|
@ -46,7 +49,14 @@ $$$
|
|||
|
||||
NOTE: penser à inclure un bidule pour les backups.
|
||||
|
||||
== MariaDB
|
||||
=== MariaDB
|
||||
|
||||
Idem, installation, configuration, backup, tout ça.
|
||||
A copier de grimboite, je suis sûr d'avoir des notes là-dessus.
|
||||
|
||||
|
||||
=== Microsoft SQL Server
|
||||
|
||||
|
||||
=== Oracle
|
||||
|
||||
|
|
Loading…
Reference in New Issue