Bonjour,
Mon moteur de blog django étant à peu près terminé, j’aimerai profiter des vacances pour le mettre en ligne. Première fois pour moi.
J’ouvre un topic unique pour toutes mes questions sur le sujet. Je déterrerai au fur et à mesure que de nouvelles questions arrivent.
J’ai fait mes premiers tests dans une debian virtuelle cet après-midi, en suivant le tuto de zds. Ça à l’air de fonctionner. Je crois. J’ai pas réussi à accéder à mon site depuis mon navigateur, mais je ne suis pas sûr que le localhost soit le même sur mon ordi et sur la vm. Ça vient peut-être de là. Avec curl dans la machine virtuelle j’ai eu une erreur 400. Mais en même temps j’ai dû modifier un peu l’app pour faire le premier migrate, donc c’est peut-être pour ça. Je referai des tests demain.
Pour le moment j’ai quatre questions principales.
En regardant plusieurs tutos, j’ai vu que le répertoire d’installation n’est pas toujours le même. Sur ZdS, c’est /home/[username]/public_html/[appname]. Déjà à ce stade: lorsque je travaille dans le répertoire toto (pour l’exemple). Le virtual env est donc créer dans toto. Je demande ensuite à django de me créer une nouvelle application website, django crée un sous-répertoire website. puis ce site utilisera une application blog.
J’ai donc :
./
|->toto/
|->env/
|->website/
|->settings.py
|->wsgi.py
|…
|->blog/
|->urls.py
|->views.py
|->admin.py
|…
|->manage.py
|…
sur le tutoriel il semble que l’arborescence soit plus un truc du style :
./
|->public_html/
|->website/
|->env/
|->settings.py
|->wsgi.py
|->manage.py
|…
|->blog # Et lui je ne sais pas où il est censé se trouver
|->urls.py
|->views.py
|->admin.py
|…
|…
ou peut-être
./
|->public_html/
|->manage.py
|->website/
|->env/
|->settings.py
|->wsgi.py
|…
|->blog # Et lui je ne sais pas où il est censé se trouver
|->urls.py
|->views.py
|->admin.py
|…
|…
Du coup, je ne comprends pas trop comment est organisé le répertoire.
public_html
est-il le répertoire dans lequel il va mettre tout ses sites web (un dossier par site dans public_html) ? Où est-ce le projet django dans lequels il va mettre ses app ? Dans ce cas, il y a un environnement virtuel par application ?
Ensuite en regardant dans d’autres tutoriels il y en a aussi qui installent leur applications dans /django
plutôt que dans `/home/[username]/
Question 1 : quelles sont les règles de bonnes pratiques, ou a défaut les avantages et inconvénients des différentes méthodes quand à l’organisation des répertoire du serveur ? Accessoirement, plusieurs tuto parles de créer un user www-data. Même question pour les utilisateurs.
Ensuite le fichier settings.prod :
Offuscation de la clé secrète : La méthode écrite dans la doc est simple à mettre en œuvre et vu que c’est la doc officielle, j’imagine qu’elle est fiable :
with open('/etc/secret_key.txt') as f:
SECRET_KEY = f.read().strip()
Très bien.
Question 2 : est-ce une bonne pratique de faire la même chose pour le réglage de DATABASES
. La doc dit « Vous devez les protéger aussi bien que SECRET_KEY » sans donner plus d’information. Je mets aussi le fichier dans /etc
?
Question 3 : une fois que ces deux opérations sont effectuées, est-ce que je peux considérer que mon fichier settings est safe ? Ça ne pose pas de problème s’il traîne sur gitlab ? Dans le cas contraire, ça signifie que je devrais le réediter à chaque git pull
ou à minima mettre des information bidon lors du premier push, l’éditer sur le serveur, et ensuite l’ajouter à gitignore ?
Question 4 : mon projet en dev est sur gitlab. Y compris le fichier settings (version dev). Du coup la clé secrète n’est plus utilisable en production. Je peux mettre la clé que je veux (par exemple générée aléatoirement avec un autre logiciel) et juste éditer mon /etc/secret_key.txt, ou doit-elle correspondre à un paramètre de django pour être valide ?
J’aurai sûrement d’autres questions, mais on va déjà se concentrer sur ces quatre là.
Merci d’avance.