diff --git a/VERSION b/VERSION index c043eea..b1b25a5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.2.1 +2.2.2 diff --git a/app/app.py b/app/app.py index 6f93886..4d51788 100644 --- a/app/app.py +++ b/app/app.py @@ -43,8 +43,8 @@ def configure_alembic(alembic_config): def create_app(): app = Flask(__name__) app.config.from_pyfile("../config/config.py") - app.config['APPLICATION_ROOT'] = urlsplit(app.config['URL_APPLICATION']).path - if 'SCRIPT_NAME' not in os.environ: + app.config['APPLICATION_ROOT'] = urlsplit(app.config['URL_APPLICATION']).path or '/' + if 'SCRIPT_NAME' not in os.environ and app.config['APPLICATION_ROOT'] != '/': os.environ['SCRIPT_NAME'] = app.config['APPLICATION_ROOT'] app.config["URL_REDIRECT"] = "{}/{}".format(app.config["URL_APPLICATION"], "login") app.secret_key = app.config["SECRET_KEY"] diff --git a/config/config.py.sample b/config/config.py.sample index 566840b..eb04ea3 100644 --- a/config/config.py.sample +++ b/config/config.py.sample @@ -3,9 +3,6 @@ SQLALCHEMY_DATABASE_URI = "postgresql://monuser:monpassachanger@localhost/usersh SQLALCHEMY_TRACK_MODIFICATIONS = False URL_APPLICATION = 'http://localhost:5001' -# Liste d'URL depuis lesquels on accepte des requetes croisées -URLS_COR = ['http://localhost:5000'] - SECRET_KEY = 'super secret key' # Authentification crypting method (hash or md5) diff --git a/docs/changelog.rst b/docs/changelog.rst index b4ee4a2..99c121f 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -2,12 +2,29 @@ CHANGELOG ========= +2.2.2 (2021-12-22) +------------------ + +**Corrections** + +* Complément de la documentation Apache pour préciser quand UsersHub est sur un sous-domaine (https://usershub.readthedocs.io/fr/latest/installation.html#installation-de-usershub-sur-un-sous-domaine) (#148) +* Correction de la configuration quand UsersHub est à la racine d'un sous-domaine (#148) +* Correction de la génération automatique de la documentation sur Read the Docs (https://usershub.readthedocs.io) +* Suppression de l'extension ``Flask-Cors`` et du paramètre associé (``URLS_COR``) (#148) +* Si le fichier ``config/config.py`` existe, alors on n'écrase plus ses valeurs à partir de celles du fichier ``config/settings.ini`` quand on lance le script ``install_app.sh``, lors d'une mise à jour de UsersHub notamment + +**Note de version** + +Si vous mettez à jour UsersHub : + +* Vous pouvez supprimer le paramètre ``URLS_COR`` de votre fichier ``config/config.py`` car celui-ci n'est plus utilisé + 2.2.1 (2021-09-29) ------------------ **Nouveautés** -* Le fichier de configuration Apache fourni par UsersHub n’est plus automatiquement activé ; il peut l’être manuellement avec la commande ``a2enconf usershub``. +* Le fichier de configuration Apache fourni par UsersHub n’est plus automatiquement activé; il peut l’être manuellement avec la commande ``a2enconf usershub``. * Une dépendance Alembic de la branche ``usershub`` vers la dernière révision de la branche ``utilisateurs`` permet d’obtenir automatiquement la dernière version du schéma ``utilisateurs`` avec la commande ``flask db upgrade usershub@head`` (tel que fait dans le script ``install_db.sh``). 2.2.0 (2021-09-29) @@ -54,7 +71,7 @@ Si vous mettez à jour UsersHub : * Le script d’installation ``install_app.sh`` aura installé le fichier ``/etc/apache2/conf-available/usershub.conf`` permettant de servir UsersHub sur le préfixe ``/usershub``. * Vous pouvez utiliser ce fichier de configuration soit en l’activant (``sudo a2enconf usershub``), soit en l’incluant dans la configuration de votre vhost (``Include /etc/apache2/conf-available/usershub.conf``). * Si vous gardez votre propre fichier de configuration et que vous servez UsersHub sur un préfixe (typiquement ``/usershub``), assurez vous que ce préfixe figure bien également à la fin des directives ``ProxyPass`` et ``ProxyPassReverse`` comme c’est le cas dans le fichier ``/etc/apache2/conf-available/usershub.conf``. - * Si vous décidez d’utiliser le fichier fourni, pensez à supprimer votre ancienne configuration apache (``sudo a2dissite usershub && sudo rm /etc/apache2/sites-available/usershub.conf``). + * Si vous décidez d’utiliser le fichier fourni, pensez à supprimer votre ancienne configuration Apache (``sudo a2dissite usershub && sudo rm /etc/apache2/sites-available/usershub.conf``). * **Si vous n’utilisez pas GeoNature**, vous devez appliquer les évolutions du schéma ``utilisateurs`` depuis UsersHub : diff --git a/docs/index.rst b/docs/index.rst index 2f85fa3..30beee9 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,10 +1,13 @@ +.. image:: http://geonature.fr/img/logo-pne.jpg + :target: http://www.ecrins-parcnational.fr + +================================= Bienvenue dans la doc de UsersHub ================================= .. toctree:: :maxdepth: 2 - server installation migration-v1v2 FAQ diff --git a/docs/installation.rst b/docs/installation.rst index 08f815d..680cc31 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -1,17 +1,76 @@ -=========== -APPLICATION -=========== +============ +INSTALLATION +============ + +Cette documentation décrit l'installation indépendante de UsersHub. Il est aussi possible de réaliser l'installation avec le script automatisé d'installation globale de GeoNature (http://docs.geonature.fr/installation.html#installation-globale). + +Prérequis +========= + +Pour installer UsersHub, il vous faut un serveur avec : + +* Debian 10 ou 11 +* 1 Go de RAM +* 5 Go d’espace disque + +Création d’un utilisateur +========================= + +Vous devez disposer d'un utilisateur Linux pour faire tourner UsersHub (nommé ``synthese`` dans notre exemple). L’utilisateur doit appartenir au groupe ``sudo``. Le répertoire de cet utilisateur ``synthese`` doit être dans ``/home/synthese``. Si vous souhaitez utiliser un autre utilisateur Linux, vous devrez adapter les lignes de commande proposées dans cette documentation. + +:: + + $ adduser --home /home/synthese synthese + $ adduser synthese sudo :Note: Pour la suite de l'installation, veuillez utiliser l'utilisateur Linux créé précedemment (``synthese`` dans l'exemple), et non l'utilisateur ``root``. -Configuration de la base de données PostgreSQL -============================================== +Installation des dépendances requises +===================================== + +Installez les dépendances suivantes : + +:: + + $ sudo apt install -y python3-venv libpq-dev postgresql apache2 + +Installer NVM (Node version manager), Node.js et npm : + +:: + + $ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash + +Fermer la console et la réouvrir pour que l’environnement npm soit pris en compte. + +Configuration de PostgresQL +=========================== + +Créer un utilisateur PostgreSQL : + +:: -* Créer et mettre à jour le fichier ``config/settings.ini`` + $ sudo -u postgres psql -c "CREATE ROLE geonatuser WITH LOGIN PASSWORD 'monpassachanger';" + +Téléchargement de UsersHub +========================== + +Récupérer le zip de l'application sur le Github du projet (X.Y.Z à remplacer par la version souhaitée de UsersHub) + +:: + + $ cd /home/synthese + $ wget https://github.com/PnX-SI/UsersHub/archive/X.Y.Z.zip + $ unzip X.Y.Z.zip + $ mv UsersHub-X.Y.Z usershub + +Configuration de UsersHub +========================= + +Créer et mettre à jour le fichier ``config/settings.ini`` : - :: +:: $ cd ~/usershub $ cp config/settings.ini.sample config/settings.ini @@ -29,20 +88,20 @@ ATTENTION : Les valeurs renseignées dans ce fichier sont utilisées par le scri Configuration de l'application ============================== -* Installation et configuration de l'application - - :: +* Installation de l'application : + +:: cd ~/usershub ./install_app.sh -Création de la base de données -============================== +Création et installation de la base de données +============================================== -* Création de la base de données et chargement des données initiales +* Création de la base de données et chargement des données initiales : - :: +:: cd ~/usershub ./install_db.sh @@ -50,7 +109,7 @@ Création de la base de données * Si vous souhaitez les données utilisateurs d’exemple, en particulier l’utilisateur ``admin`` (mot de passe : ``admin``), executez : - :: +:: cd ~/usershub source venv/bin/activate @@ -60,20 +119,39 @@ Création de la base de données Configuration Apache ==================== -Copier le fichier de configuration apache d’exemple : +Activez les modules ``mod_proxy`` et ``mod_proxy_http``, et redémarrez Apache : :: - sudo cp ~/usershub/usershub_apache.conf /etc/apache2/conf-available/usershub.conf + $ sudo a2enmod proxy proxy_http + $ sudo systemctl restart apache + +UsersHub peut être classiquement déployé sur 2 types d’URL distincts : + +* Sur un préfixe : https://mon-domaine.fr/usershub/ +* Sur un sous-domaine : https://usershub.mon-domaine.fr -Activer le site et recharger la configuration Apache : +Installation de UsersHub sur un préfixe +--------------------------------------- + +Le processus d’installation de l’application créer le fichier de configuration Apache ``/etc/apache2/conf-available/usershub.conf`` permettant de servir UsersHub sur le préfixe ``/usershub/``. Pour activer ce fichier de configuration, exécutez les commandes suivantes : :: sudo a2enconf usershub sudo service apache2 reload -* Pour tester, se connecter à l'application via http://mon-domaine.fr/usershub/ avec l'utilisateur ``admin`` et son mot de passe ``admin``. +Installation de UsersHub sur un sous-domaine +-------------------------------------------- + +Dans le cas où UsersHub est installé sur un sous-domaine et non sur un préfixe (c’est-à-dire ``https://usershub.mon-domaine.fr``), veuillez ajouter dans le fichier de configuration de votre virtualhost (*e.g.* ``/etc/apache2/sites-enabled/usershub.conf``) la section suivante : + +:: + + + ProxyPass http://127.0.0.1:5001/ + ProxyPassReverse http://127.0.0.1:5001/ + Mise à jour de l'application @@ -102,7 +180,7 @@ Mise à jour de l'application cp /home/`whoami`/usershub_old/config/config.py /home/`whoami`/usershub/config/config.py cp /home/`whoami`/usershub_old/config/settings.ini /home/`whoami`/usershub/config/settings.ini -* Lancer le script d'installation de l'application : +* Lancer le script d'installation de l'application (attention si vous avez modifiez certains paramètres dans le fichier ``config.py`` tels que les paramètres de connexion à la base de données, ils seront écrasés par les paramètres présent dans le fichier ``settings.ini``) : :: diff --git a/docs/server.rst b/docs/server.rst deleted file mode 100644 index af762dd..0000000 --- a/docs/server.rst +++ /dev/null @@ -1,70 +0,0 @@ -.. image:: http://geonature.fr/img/logo-pne.jpg - :target: http://www.ecrins-parcnational.fr - -======= -SERVEUR -======= - -Cette documentation décrit l'installation indépendante de UsersHub. Il est aussi possible de réaliser l'installation avec le script automatisé d'installation globale de GeoNature (https://github.com/PnEcrins/GeoNature/tree/master/docs/install_all). - -Prérequis -========= - -* Ressources minimum du serveur : - -Un serveur disposant d'au moins de 1 Go RAM et de 5 Go d'espace disque. - -* Disposer d'un utilisateur linux (nommé ``synthese`` dans notre exemple). Le répertoire de cet utilisateur ``synthese`` doit être dans ``/home/synthese``. Si vous souhaitez utiliser un autre utilisateur linux, vous devrez adapter les lignes de commande proposées dans cette documentation. - - :: - - # adduser --home /home/synthese synthese - # adduser synthese sudo - -:Note: - - Pour la suite de l'installation, veuillez utiliser l'utilisateur Linux créé précedemment (``synthese`` dans l'exemple), et non l'utilisateur ``root``. - -* Récupérer le zip de l'application sur le Github du projet (X.Y.Z à remplacer par la version souhaitée de UsersHub) - - :: - - $ cd /home/synthese - $ wget https://github.com/PnX-SI/UsersHub/archive/X.Y.Z.zip - $ unzip X.Y.Z.zip - $ mv UsersHub-X.Y.Z usershub - - -Installation et configuration du serveur -======================================== - -Installation pour Debian 10 et Debian 11. - -:: - - $ sudo apt install -y python3-venv libpq-dev postgresql apache2 - -* Installer NVM (Node version manager), node et npm - -:: - - $ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash - - -Fermer la console et la réouvrir pour que l’environnement npm soit pris en compte. - - -Installation et configuration de PostgreSQL -=========================================== - -* Installation de PostgreSQL - - :: - - $ sudo apt-get install postgresql - -* Création d'un utilisateur PostgreSQL - - :: - - $ sudo -u postgres psql -c "CREATE ROLE geonatuser WITH LOGIN PASSWORD 'monpassachanger';" diff --git a/install_app.sh b/install_app.sh index 53b633a..1c34568 100755 --- a/install_app.sh +++ b/install_app.sh @@ -9,19 +9,18 @@ cd config echo "Création du fichier de configuration ..." if [ ! -f config.py ]; then cp config.py.sample config.py || exit 1 -fi - - -echo "préparation du fichier config.py..." -sed -i "s/SQLALCHEMY_DATABASE_URI = .*$/SQLALCHEMY_DATABASE_URI = \"postgresql:\/\/$user_pg:$user_pg_pass@$db_host:$pg_port\/$db_name\"/" config.py || exit 1 -url_application="${url_application//\//\\/}" -# on enleve le / final -if [ "${url_application: -1}" = '/' ] -then -url_application="${url_application::-1}" + echo "préparation du fichier config.py..." + sed -i "s/SQLALCHEMY_DATABASE_URI = .*$/SQLALCHEMY_DATABASE_URI = \"postgresql:\/\/$user_pg:$user_pg_pass@$db_host:$pg_port\/$db_name\"/" config.py || exit 1 + + url_application="${url_application//\//\\/}" + # on enleve le / final + if [ "${url_application: -1}" = '/' ] + then + url_application="${url_application::-1}" + fi + sed -i "s/URL_APPLICATION =.*$/URL_APPLICATION ='$url_application'/g" config.py || exit 1 fi -sed -i "s/URL_APPLICATION =.*$/URL_APPLICATION ='$url_application'/g" config.py || exit 1 cd .. diff --git a/requirements-common.txt b/requirements-common.txt index d6bb8c8..a85a441 100644 --- a/requirements-common.txt +++ b/requirements-common.txt @@ -3,7 +3,6 @@ bcrypt==3.1.4 click==6.7 decorator==4.3.0 Flask-Bootstrap==3.3.7.1 -Flask-Cors==3.0.10 Flask-Migrate==3.1.0 Flask-SQLAlchemy==2.3.2 Flask-WTF==0.14.2