PnX-SI / GeoNature-citizen

Portail web d'inventaire citoyen de la biodiversité à destination du grand public
https://pnx-si.github.io/GeoNature-citizen/
GNU Affero General Public License v3.0
19 stars 28 forks source link

Installation GeoNature-citizen #352

Closed geobrun closed 5 months ago

geobrun commented 1 year ago

Bonjour tout le monde,

Je souhaite procéder à l'installation de GeoNature-citizen 0.99.4-dev sur un serveur Debian 11 où sont déjà installés GeoNature 2.12.2 et TaxHub 1.11.1.

D'après ce que j'ai compris, étant donné que TaxHub est déjà installé, je dois procéder à une installation manuelle. J'en suis actuellement au téléchargement du référentiel des géométries communales. Pour cela, je dois télécharger des fichiers SQL qui se trouvent normalement dans le répertoire suivant : https://github.com/PnX-SI/GeoNature/raw/master/data/core

Or, on dirait que ce répertoire n'existe plus dans les dernières versions de GeoNature. Quelqu'un sait si son contenu a été rebasculé dans un autre répertoire ?

Bonne journée

gildeluermoz commented 6 months ago

Je tente une installation sur debian 12. J'utilise la branche dev après un git clone du projet. Je vous fais un retour des difficultés rencontrées. Premier lancement de install/install_app.sh :

E: Le paquet « python-setuptools » n'a pas de version susceptible d'être installée
E: Le paquet « python-dev » n'a pas de version susceptible d'être installée

Dans install/install_app.sh, je remplace python-dev par python-dev-is-python3 et python-setuptools par python3-setuptools Je relance install/install_app.sh L'installation des paquets se déroule alors normalement mais l'erreur suivante remonte : error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.

    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

Dans install/install_app.sh je commente la ligne 31 pip3 install --upgrade pip et je mets ce code dans la partie correpondant à l'exécution de pip dans le venv. C'est à dire après l'activation du venv

...
source .venv/bin/activate
#Maj  de pip
pip3 install --upgrade pip
pip install -r requirements.txt
...

Je relance install/install_app.sh. Cette fois-ci pip se met à jour en version 24 puis installe tout sans erreur. Puis nouvelle erreur :

Successfully installed alembic-1.13.1 attrs-23.2.0 blinker-1.7.0 cachelib-0.9.0 certifi-2024.2.2 charset-normalizer-3.3.2 click-8.1.7 click-plugins-1.1.1 cligj-0.7.2 coloredlogs-15.0.1 fiona-1.9.5 flasgger-0.9.7.1 flask-2.3.3 flask-admin-1.6.1 flask-caching-2.1.0 flask-ckeditor-0.4.6 flask-cors-3.0.10 flask-jwt-extended-4.6.0 flask-migrate-4.0.5 flask-sqlalchemy-2.5.1 geoalchemy2-0.14.3 geojson-2.5.0 greenlet-3.0.3 gunicorn-20.1.0 humanfriendly-10.0 idna-3.6 itsdangerous-2.1.2 jinja2-3.1.3 jsonschema-4.21.1 jsonschema-specifications-2023.12.1 mako-1.3.2 markupsafe-2.1.5 marshmallow-3.20.2 marshmallow-geojson-0.5.0 marshmallow-sqlalchemy-1.0.0 mistune-3.0.2 packaging-23.2 passlib-1.7.4 psycopg2-binary-2.9.9 pyjwt-2.8.0 python-dateutil-2.8.2 pyyaml-6.0.1 referencing-0.33.0 requests-2.31.0 rpds-py-0.17.1 setuptools-69.0.3 shapely-1.8.5.post1 six-1.16.0 sqlalchemy-1.4.51 toml-0.10.2 typing-extensions-4.9.0 urllib3-2.2.0 utils-flask-sqlalchemy-0.4.1 utils-flask-sqlalchemy-geo-0.2.8 werkzeug-3.0.1 wtforms-3.1.2 xlwt-1.3.0
Traceback (most recent call last):
  File "/home/geonatureadmin/gncitizen/backend/.venv/bin/flask", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/geonatureadmin/gncitizen/backend/.venv/lib/python3.11/site-packages/flask/cli.py", line 1064, in main
    cli.main()
  File "/home/geonatureadmin/gncitizen/backend/.venv/lib/python3.11/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/home/geonatureadmin/gncitizen/backend/.venv/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/geonatureadmin/gncitizen/backend/.venv/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/geonatureadmin/gncitizen/backend/.venv/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/geonatureadmin/gncitizen/backend/.venv/lib/python3.11/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/geonatureadmin/gncitizen/backend/.venv/lib/python3.11/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/geonatureadmin/gncitizen/backend/.venv/lib/python3.11/site-packages/flask/cli.py", line 355, in decorator
    app = __ctx.ensure_object(ScriptInfo).load_app()
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/geonatureadmin/gncitizen/backend/.venv/lib/python3.11/site-packages/flask/cli.py", line 313, in load_app
    app = locate_app(import_name, None, raise_if_not_found=False)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/geonatureadmin/gncitizen/backend/.venv/lib/python3.11/site-packages/flask/cli.py", line 219, in locate_app
    __import__(module_name)
  File "/home/geonatureadmin/gncitizen/backend/wsgi.py", line 13, in <module>
    app = get_app(config)
          ^^^^^^^^^^^^^^^
  File "/home/geonatureadmin/gncitizen/backend/server.py", line 85, in get_app
    from gncitizen.core.commons.routes import commons_api
  File "/home/geonatureadmin/gncitizen/backend/gncitizen/core/commons/routes.py", line 39, in <module>
    admin.add_view(FileAdmin(MEDIA_DIR, "/api/media/", name="Medias"))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/geonatureadmin/gncitizen/backend/.venv/lib/python3.11/site-packages/flask_admin/contrib/fileadmin/__init__.py", line 1239, in __init__
    storage = LocalFileStorage(base_path)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/geonatureadmin/gncitizen/backend/.venv/lib/python3.11/site-packages/flask_admin/contrib/fileadmin/__init__.py", line 34, in __init__
    raise IOError('FileAdmin path "%s" does not exist or is not accessible' % self.base_path)
OSError: FileAdmin path "/home/geonatureadmin/gncitizen/media" does not exist or is not accessible

Je passe sur une exécution manuelle du script install/install_app.sh L'erreur ci-dessus est levée par la commande flask db upgrade et est dûe au fait que le répertoire media n'existe pas. On voit dans https://github.com/PnX-SI/GeoNature-citizen/blob/dev/install/install_app.sh#L83 que la création du répertoire media est faite après la commande flask db upgrade. Il faut donc inverser l'ordre de ces 2 actions dans le script d'installation. Pour tester je crée manuellement le répertoire media et j'y copie les medias depuis frontend/src/assets/. Puis je relance flask db upgrade. La création des schémas de citizen dans la base geonature se créent correctement. Je fini l'installation manuellement en reprenant les commandes du fichier ìnstall/install_app.sh`

A noter qu'il manque un deactivate après l'exécution de la commande flask db upgrade.

A noter également : dans le fichier settings.ini, il y a cette ligne : api_endpoint=http://mydomain.net/api # Url for the geonature api don't forget /api

On peut être tenter de mettre l'url de l'api de geonature comme indiqué. Mais il faut mettre l'url de l'api de citizen. A modifier ainsi : api_endpoint=http://mydomain.net/api # Url for the gncitizen api don't forget /api

En poursuivant l'installation + configuration apache et https avec letsencript, l'application est disponible et fonctionnelle sur son url. L'url d'admin est accessible et fonctionnelle également.

Merci à tous pour vos commentaires et éclairages. Je reviens vers vous si dysfonctionnements manifestement en lien avec debian 12 une fois les enquêtes configurées.

xavyeah39 commented 6 months ago

Salut,

Retour sur une installation faite ce jour sur la branche dev en Debian 12 suite aux retours de @gildeluermoz et au taff de @hypsug0 pour finaliser la release d'une v1.0 (grand merci en passant !)

Voici une PR avec les fix appliqués pour ces 3 derniers points #387

Après ça install OK, config OK, création d'un programme OK, saisie OK...

Merci encore !!

camillemonchicourt commented 6 months ago

Trop bien, on tient le bon bout ! Merci pour les retours et la PR.

camillemonchicourt commented 5 months ago

Installation corrigée et améliorée dans la version 1.0.0.