From 19fadfe080174bc567b7b482644cc6e6bedf90dc Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Holcroft Date: Thu, 21 Sep 2017 10:22:34 +0200 Subject: [PATCH] add changesite name and change_url --- README.md | 12 ++--- conf/nginx.conf | 2 +- scripts/change_url | 122 +++++++++++++++++++++++++++++++++++++++++++++ scripts/install | 2 +- 4 files changed, 128 insertions(+), 10 deletions(-) create mode 100644 scripts/change_url diff --git a/README.md b/README.md index 84f9df7..dab5e16 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,13 @@ # Weblate translation platform for YunoHost -The YunoHost team uses [Weblate](https://weblate.org) for its community: http://translate.yunohost.org/ +The YunoHost team uses [Weblate](https://weblate.org) for translations: https://translate.yunohost.org -## Weblate & Mysql + +## Weblate and databases Weblate [recommands PostgreSQL](https://docs.weblate.org/en/latest/admin/install.html#database-setup-for-weblate), but YunoHost uses Mysql. -Carefull, this script modify your mysql config file: - -* set global innodb_file_format = BARRACUDA; -* set global innodb_large_prefix = ON; - -If you experience some transaction issues, please read [Transaction-locking help](https://docs.weblate.org/en/latest/admin/install.html#transaction-locking). +Carefull, this installs PostgreSQL and change default configuration to ask for every connexion and every user a password (local all all password). ## LDAP connexion diff --git a/conf/nginx.conf b/conf/nginx.conf index bad1d0a..2758322 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -6,7 +6,7 @@ location __PATH__ { include uwsgi_params; # Needed for long running operations in admin interface uwsgi_read_timeout 3600; - uwsgi_param SCRIPT_NAME /__PATH__; + uwsgi_param SCRIPT_NAME __PATH__; uwsgi_modifier1 30; uwsgi_pass unix://__FINALPATH__//socket; diff --git a/scripts/change_url b/scripts/change_url new file mode 100644 index 0000000..abe4ff9 --- /dev/null +++ b/scripts/change_url @@ -0,0 +1,122 @@ +#!/bin/bash + +#================================================= +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS +#================================================= +set -eu +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# RETRIEVE ARGUMENTS +#================================================= + +old_domain=$YNH_APP_OLD_DOMAIN +old_path=$YNH_APP_OLD_PATH + +new_domain=$YNH_APP_NEW_DOMAIN +new_path=$YNH_APP_NEW_PATH + +app=$YNH_APP_INSTANCE_NAME +final_path=/var/www/$app + +#================================================= +# CHECK THE SYNTAX OF THE PATHS +#================================================= + +test -n "$old_path" || old_path="/" +test -n "$new_path" || new_path="/" +new_path=$(ynh_normalize_url_path $new_path) +old_path=$(ynh_normalize_url_path $old_path) + +#================================================= +# CHECK WHICH PARTS SHOULD BE CHANGED +#================================================= + +change_domain=0 +if [ "$old_domain" != "$new_domain" ] +then + change_domain=1 +fi + +change_path=0 +if [ "$old_path" != "$new_path" ] +then + change_path=1 +fi + +#================================================= +# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +#================================================= + +if [ $change_domain -eq 0 ] +then + # The backup process will failed if the domain has changed, because the file settings.yml has already changed + BACKUP_BEFORE_UPGRADE # Backup the current version of the app + ynh_clean_setup () { + BACKUP_FAIL_UPGRADE # restore it if the upgrade fails + } + ynh_abort_if_errors # Active trap pour arrêter le script si une erreur est détectée. +fi + +#================================================= +# STANDARD MODIFICATIONS +#================================================= +# MODIFY URL IN NGINX CONF +#================================================= + +nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf + +# Change the path in the nginx config file +if [ $change_path -eq 1 ] +then + ynh_replace_string "location $old_path" "location $new_path" "$nginx_conf_path" + ynh_replace_string "SCRIPT_NAME $old_path" "SCRIPT_NAME $new_path" "$nginx_conf_path" +fi + +# Change the domain for nginx +if [ $change_domain -eq 1 ] +then + mv "$nginx_conf_path" "/etc/nginx/conf.d/$new_domain.d/$app.conf" +fi + +#================================================= +# MODIFY settings.py +#================================================= + +settingspy_conf_path="$final_path/venv/lib/python2.7/site-packages/weblate/settings.py" + +# Change the path in the nginx config file +if [ $change_path -eq 1 ] +then + ynh_replace_string "URL_PREFIX = '$old_path" "URL_PREFIX = '$new_path" "$settingspy_conf_path" +fi + +# Change the domain for nginx +if [ $change_domain -eq 1 ] +then + # replace SERVER_EMAIL + ynh_replace_string "noreply@$old_domain" "noreply@$new_domain" "$settingspy_conf_path" + # replace ALLOWED_HOSTS + ynh_replace_string "['$old_domain']" "['$new_domain']" "$settingspy_conf_path" +fi + +#================================================= +# ChangeSite inside weblate +#========================================== +( + set +eu + source "${final_path}/venv/bin/activate" + export DJANGO_SETTINGS_MODULE="weblate.settings" + weblate changesite --set-name "$new_domain" +) + +#================================================= +# GENERIC FINALISATION +#================================================= +# RELOAD NGINX and Weblate +#================================================= +systemctl reload "$app.service" +systemctl reload nginx diff --git a/scripts/install b/scripts/install index fcd273f..ef9bf79 100755 --- a/scripts/install +++ b/scripts/install @@ -166,11 +166,11 @@ ynh_replace_string "__FINALPATH__" "$final_path" "$final_path/venv/lib/python2.7 set +eu source "${final_path}/venv/bin/activate" export DJANGO_SETTINGS_MODULE="weblate.settings" - cd "${final_path}" # the user needs to be weblate for postgresql weblate migrate --noinput # generate static files weblate collectstatic --noinput + weblate changesite --set-name "$domain" ) #=================================================