Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Install on gandi simple hosting #217

Open
JLuc opened this issue Mar 28, 2020 · 6 comments
Open

Install on gandi simple hosting #217

JLuc opened this issue Mar 28, 2020 · 6 comments

Comments

@JLuc
Copy link

JLuc commented Mar 28, 2020

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'
@fallen
Copy link
Member

fallen commented Mar 28, 2020

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
Copy link
Member

fallen commented Mar 28, 2020

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

@numahell
Copy link
Contributor

numahell commented Apr 18, 2020

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.

@fallen
Copy link
Member

fallen commented Apr 18, 2020

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à :)

@numahell
Copy link
Contributor

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
Copy link
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants