Pytition icon indicating copy to clipboard operation
Pytition copied to clipboard

Install on gandi simple hosting

Open JLuc opened this issue 4 years ago • 6 comments

I opened an instance of gandi python simple hosting platform.

Le dossier racine du site par défaut est /srv/data/web/vhosts/default. Il n'y a donc pas de www comme dans la doc d'install, mais je suppose que default est l'équivalent de www. Il y a d'autre différences qui ont nécessité de petites adaptations

  • le dossier vhosts n'est pas accessible en écriture donc j'ai fait le pytition_venv dans default (avec du recul je comprend que j'aurais mieux du le mettre en dehors de l'espace accessible sur le web, par exemple dans /srv/data/home où on peut écrire aussi )
  • /srv/data/var/log/www/ existe bien mais il est réservé aux logs de gandi, et pip ne peut pas y écrire son fichier de log, ce qui déclenche une palanquée d'erreurs lors de l'install, mais ça ne bloque pas l'install. Peut-on/comment configurer la destination des logs ? cf piplogerrors.txt

À cette étape, ç'a a l'air un peu en place puisque django-admin --version renvoie : 2.2.11

Après c'est plus coton. Il n'y a pas de fichier settings.py à l'endroit indiqué par la doc d'install, et je n'en connais pas le format. Une recherche sur internet me donne des pistes. La doc pourrait elle donner un fichier settings.py exemple ? Est ce normal qu'il n'existe pas au début ? Je copie plus loin le fichier auquel j'aboutis après quelques recherches.

J'ai alors galéré à essayer de trouver comment le faire prendre en compte pour django-admin car il y avait le message en rouge : Note that only Django core commands are listed as settings are not properly configured (error: No module named 'pytition').. J'ai notamment essayé avec DJANGO_SETTINGS_MODULE='/srv/data/web/vhosts/default/pytition/pytition/pytition/settings.py' et idem sans py, mais ça donné : Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.).

Puis j'ai vu qu'il était correctement positionné à l'intérieur même du code de manage.py alors j'ai laissé tomber le pb de django-admin.

Donc je fais python3 manage.py migrate, et j'ai l'erreur _mysql_exceptions.OperationalError: (1045, "Access denied for user 'hosting-user'@'localhost' (using password: NO)") qui semble indiquer que le fichier de settings n'est pas pris en compte.

Que faut il faire ?

mon my.cnf

[client]
database = "pytitionbdd"
user = "xxxxxxx"
password = "pytitionmdp"
default-character-set = utf8

Rq : j'ai au préalable créé la base de donnée.

mon settings.py :

"""
Django settings - créé par JLuc 
...
"""
...
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
SECRET_KEY = 'uneclesecrete'
ALLOWED_HOSTS = ['mywebsite.ext']
DATABASES = DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/srv/data/web/vhosts/default/pytition/my.cnf',
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
        },
    }
}
STATIC_ROOT = '/srv/data/web/vhosts/default/static'

JLuc avatar Mar 28 '20 18:03 JLuc

Salut, si tu utilises la version 2.0 de pytition (ou bien la tête de la branche master) il faut éditer le fichier base.py. C'est lui qui contient la config (l'équivalent de settings.py dans la plupart des projets Django). Il est là : https://github.com/pytition/Pytition/blob/master/pytition/pytition/settings/base.py Donc dans pytition/pytition/settings/base.py

fallen avatar Mar 28 '20 20:03 fallen

Je viens de voir que la doc n'était pas à jour, je l'ai mise à jour, merci :)

fallen avatar Mar 28 '20 20:03 fallen

Après nos discussions sur le ticket #167 , j'ai testé aussi Simple hosting, mais avec un autre projet et en utilisant postgreSQL. J'ai rédigé ce tutoriel, qui doit pouvoir être adapté pour du MySQL aussi.

Je voulais mettre un deuxième site, mais apparemment on ne peut avoir qu'un seul dépôt git pour une instance python.

numahell avatar Apr 18 '20 09:04 numahell

Salut @numahell et @JLuc . Je suis en train de "proprifier" la manière de gérer la config de pytition. Du coup, sur les derniers commits de la branche master, il faut maintenant copier config_example.py en config.py (ou autre nom) et éditer la config à l'intérieur. Les valeurs "par défaut" sont toujours dans base.py qui est importé au début du config_example.py. Ca a l'avantage que maintenant on ne modifie plus un des fichiers distribué par Pytition. Donc typiquement si on a déployé son instance à partir d'un git clone du dépot, on n'a plus de modification locale d'un fichier versionné par git. Donc on peut plus facilement mettre à jour via git pull.

Ca rajoute en revanche la contrainte de devoir exporter la variable d'environnement suivante : DJANGO_SETTINGS_MODULE=pytition.settings.config (ou .le_nom_de_ma_config) dans son Apache/nginx/uwsgi.

Ca me parait plus propre comme ça mais ça peut encore évoluer :) Aussi, je suis en train de rédiger la documentation d'installation et de configuration, c'est encore lacunaire et basique mais ça ressemble à ça : https://pytition.readthedocs.io/en/latest/

Voilà :)

fallen avatar Apr 18 '20 10:04 fallen

Je pense que c'est une bonne pratique d'avoir un fichier de settings local à part et non commité, ça évite les erreurs. Je rajouterais config.py dans le fichier .gitignore pour éviter de commiter le mot de passe de la base de données. Au moment du déploiement, on le transfère manuellement vers le serveur via ssh ou ftp.

De toutes manières, quoiqu'on fasse il faut indiquer quelque part dans quelle configuration on se trouve : dev, test, prod… donc l'indiquer au niveau du wsgi.py est tout à fait valable.

numahell avatar Apr 18 '20 12:04 numahell

Sinon il y a local_settings.py dans le .gitignore déjà, à voir comment appeler le fichier de config local ^^

numahell avatar Apr 18 '20 13:04 numahell