Modification de la détection de l'environnement
This commit is contained in:
parent
ecb332d2aa
commit
d45fdae408
1
.env
1
.env
@ -1,4 +1,3 @@
|
|||||||
ENV = "public"
|
|
||||||
ENV_CODE = "dev"
|
ENV_CODE = "dev"
|
||||||
PORT=8501
|
PORT=8501
|
||||||
DOT_FILE = "schema.txt"
|
DOT_FILE = "schema.txt"
|
||||||
|
|||||||
24
README.md
24
README.md
@ -34,17 +34,33 @@ Le fichier **.env.local** qui contient GITEA_TOKEN n'est pas dans le dépôt car
|
|||||||
|
|
||||||
Pour l'environnement de pré-production, (https://fabnum-dev.peccini.fr)[https://fabnum-dev.peccini.fr] :
|
Pour l'environnement de pré-production, (https://fabnum-dev.peccini.fr)[https://fabnum-dev.peccini.fr] :
|
||||||
|
|
||||||
ENV=dev
|
ENV_CODE = "dev"
|
||||||
PORT=8502
|
PORT=8502
|
||||||
|
DOT_FILE = "schema.txt"
|
||||||
GITEA_URL = "https://fabnum-git.peccini.fr/api/v1"
|
GITEA_URL = "https://fabnum-git.peccini.fr/api/v1"
|
||||||
ORGANISATION = "fabnum"
|
ORGANISATION = "fabnum"
|
||||||
DEPOT_FICHES = "fiches"
|
DEPOT_FICHES = "fiches"
|
||||||
|
DEPOT_CODE = "code"
|
||||||
|
ID_PROJET = "3"
|
||||||
|
INSTRUCTIONS = "Instructions.md"
|
||||||
|
FICHE_IHH = "Fiches/Criticités/Fiche technique IHH.md"
|
||||||
|
FICHE_ICS = "Fiches/Criticités/Fiche technique ICS.md"
|
||||||
|
FICHE_ISG = "Fiches/Criticités/Fiche technique ISG.md"
|
||||||
|
FICHE_IVC = "Fiches/Criticités/Fiche technique IVC.md"
|
||||||
|
|
||||||
Pour l'environnement de production, (https://fabnum.peccini.fr)[https://fabnum.peccini.fr], le fichier est identique sauf pour :
|
Pour l'environnement de production, (https://fabnum.peccini.fr)[https://fabnum.peccini.fr], le fichier est identique sauf pour :
|
||||||
|
|
||||||
ENV=public
|
|
||||||
PORT=8501
|
PORT=8501
|
||||||
|
|
||||||
|
La différence entre les deux environnements se fait au travers de la configuration du proxy Nginx (ici celle de dev ; il suffit de changer dev en public pour l'environnement de production) :
|
||||||
|
|
||||||
|
# Ajout d'un en-tête personnalisé pour indiquer l'environnement
|
||||||
|
add_header X-Environment "dev" always;
|
||||||
|
# Transmettre l'en-tête d'environnement au backend
|
||||||
|
proxy_set_header X-Environment "dev";
|
||||||
|
|
||||||
|
Cette configuration est utilisée par config.py.
|
||||||
|
|
||||||
dev et public sont les deux branches officielles du dépôt.
|
dev et public sont les deux branches officielles du dépôt.
|
||||||
|
|
||||||
L'application se lance simplement sous la forme :
|
L'application se lance simplement sous la forme :
|
||||||
@ -66,12 +82,10 @@ Pour automatiser le lancement, il est intégré dans systemd :
|
|||||||
[Service]
|
[Service]
|
||||||
User=fabnum
|
User=fabnum
|
||||||
WorkingDirectory=/home/fabnum/fabnum-dev
|
WorkingDirectory=/home/fabnum/fabnum-dev
|
||||||
ExecStart=/home/fabnum/fabnum-dev/venv/bin/streamlit run /home/fabnum/fabnum-dev/fa
|
ExecStart=/home/fabnum/fabnum-dev/venv/bin/streamlit run /home/fabnum/fabnum-dev/fabnum.py --server.port 8502
|
||||||
bnum.py
|
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
Environment=PYTHONUNBUFFERED=1
|
Environment=PYTHONUNBUFFERED=1
|
||||||
SELinuxContext=system_u:system_r:httpd_t:s0
|
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
22
config.py
22
config.py
@ -1,15 +1,35 @@
|
|||||||
import os
|
import os
|
||||||
|
import streamlit as st
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
load_dotenv(".env")
|
load_dotenv(".env")
|
||||||
load_dotenv(".env.local", override=True)
|
load_dotenv(".env.local", override=True)
|
||||||
|
|
||||||
|
# Fonction pour déterminer l'environnement à partir de l'en-tête X-Environment
|
||||||
|
def determine_environment():
|
||||||
|
# Valeur par défaut (si aucun en-tête n'est détecté)
|
||||||
|
environment = "dev"
|
||||||
|
|
||||||
|
# Si nous sommes dans une session Streamlit
|
||||||
|
if hasattr(st, 'context') and hasattr(st.context, 'headers'):
|
||||||
|
try:
|
||||||
|
# Lire directement l'en-tête X-Environment défini par Nginx : dev/public
|
||||||
|
nginx_env = st.context.headers.get("x-environment")
|
||||||
|
|
||||||
|
if nginx_env:
|
||||||
|
environment = nginx_env.lower()
|
||||||
|
except Exception as e:
|
||||||
|
st.error(f"Erreur lors de la lecture de l'en-tête X-Environment: {e}\nEnvironnement dev par défaut")
|
||||||
|
|
||||||
|
return environment
|
||||||
|
|
||||||
|
ENV = determine_environment()
|
||||||
|
|
||||||
GITEA_URL = os.getenv("GITEA_URL", "https://fabnum-git.peccini.fr/api/v1")
|
GITEA_URL = os.getenv("GITEA_URL", "https://fabnum-git.peccini.fr/api/v1")
|
||||||
GITEA_TOKEN = os.getenv("GITEA_TOKEN", "")
|
GITEA_TOKEN = os.getenv("GITEA_TOKEN", "")
|
||||||
ORGANISATION = os.getenv("ORGANISATION", "fabnum")
|
ORGANISATION = os.getenv("ORGANISATION", "fabnum")
|
||||||
DEPOT_FICHES = os.getenv("DEPOT_FICHES", "fiches")
|
DEPOT_FICHES = os.getenv("DEPOT_FICHES", "fiches")
|
||||||
DEPOT_CODE = os.getenv("DEPOT_CODE", "code")
|
DEPOT_CODE = os.getenv("DEPOT_CODE", "code")
|
||||||
ENV = os.getenv("ENV")
|
|
||||||
ENV_CODE = os.getenv("ENV_CODE")
|
ENV_CODE = os.getenv("ENV_CODE")
|
||||||
DOT_FILE = os.getenv("DOT_FILE")
|
DOT_FILE = os.getenv("DOT_FILE")
|
||||||
INSTRUCTIONS = os.getenv("INSTRUCTIONS", "Instructions.md")
|
INSTRUCTIONS = os.getenv("INSTRUCTIONS", "Instructions.md")
|
||||||
|
|||||||
22
fabnum.py
22
fabnum.py
@ -1,4 +1,12 @@
|
|||||||
import streamlit as st
|
import streamlit as st
|
||||||
|
|
||||||
|
st.set_page_config(
|
||||||
|
page_title="Fabnum – Analyse de chaîne",
|
||||||
|
page_icon="assets/weakness.png", # ajout
|
||||||
|
layout="centered",
|
||||||
|
initial_sidebar_state="expanded"
|
||||||
|
)
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
# Configuration Gitea
|
# Configuration Gitea
|
||||||
@ -69,13 +77,6 @@ from app.visualisations import interface_visualisations
|
|||||||
from app.personnalisation import interface_personnalisation
|
from app.personnalisation import interface_personnalisation
|
||||||
from app.analyse import interface_analyse
|
from app.analyse import interface_analyse
|
||||||
|
|
||||||
st.set_page_config(
|
|
||||||
page_title="Fabnum – Analyse de chaîne",
|
|
||||||
page_icon="assets/weakness.png", # ajout
|
|
||||||
layout="centered",
|
|
||||||
initial_sidebar_state="expanded"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Initialisation des traductions (langue française par défaut)
|
# Initialisation des traductions (langue française par défaut)
|
||||||
init_translations()
|
init_translations()
|
||||||
|
|
||||||
@ -84,6 +85,13 @@ set_language("fr")
|
|||||||
|
|
||||||
session_id = st.context.headers.get("x-session-id")
|
session_id = st.context.headers.get("x-session-id")
|
||||||
|
|
||||||
|
#
|
||||||
|
# Important
|
||||||
|
# Avec Selinux, il faut mettre les bons droits :
|
||||||
|
#
|
||||||
|
# sudo semanage fcontext -a -t var_log_t '/var/log/nginx/fabnum-public\.access\.log'
|
||||||
|
# sudo restorecon -v /var/log/nginx/fabnum-public.access.log
|
||||||
|
#
|
||||||
def get_total_bytes_for_session(session_id):
|
def get_total_bytes_for_session(session_id):
|
||||||
total_bytes = 0
|
total_bytes = 0
|
||||||
try:
|
try:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user