From 98da20f348bbea16d1f2685ff0162b9da3014296 Mon Sep 17 00:00:00 2001 From: frju365 Date: Sun, 5 Mar 2017 15:18:47 +0100 Subject: [PATCH 1/3] Create backup --- scripts/backup | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 scripts/backup diff --git a/scripts/backup b/scripts/backup new file mode 100644 index 0000000..536d233 --- /dev/null +++ b/scripts/backup @@ -0,0 +1,49 @@ +#!/bin/bash + +set -eu + +# This is a multi-instance app, meaning it can be installed several times independently +# The id of the app as stated in the manifest is available as $YNH_APP_ID +# The instance number is available as $YNH_APP_INSTANCE_NUMBER (equals "1", "2", ...) +# The app instance name is available as $YNH_APP_INSTANCE_NAME +# - the first time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample +# - the second time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample__2 +# - ynhexample__{N} for the subsequent installations, with N=3,4, ... +# The app instance name is probably what you are interested the most, since this is +# guaranteed to be unique. This is a good unique identifier to define installation path, +# db names, ... +app=$YNH_APP_INSTANCE_NAME + +# Source YunoHost helpers +source /usr/share/yunohost/helpers + +# Retrieve arguments +domain=$(ynh_app_setting_get $app domain) + +### MySQL (remove if not used) ### +# If a MySQL database is used: +# # Dump the database +dbname=$app +dbuser=$app +dbpass=$(ynh_app_setting_get "$app" mysqlpwd) +mysqldump -u "$dbuser" -p"$dbpass" --no-create-db "$dbname" > ./dump.sql +### MySQL end ### + + +# Backup directory location for the app from where the script is executed and +# which will be compressed afterward +backup_dir=$YNH_APP_BACKUP_DIR + +# Backup sources & data +ynh_backup "/var/www/$app" "sources" + +# Copy Nginx conf +sudo mkdir -p ./conf +ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "conf/nginx.conf" + +### PHP (remove if not used) ### +# If a dedicated php-fpm process is used: +# # Copy PHP-FPM pool configuration +ynh_backup "/etc/php5/fpm/pool.d/${app}.conf" "php-fpm.conf" +ynh_backup "/etc/php5/fpm/conf.d/20-$app.ini" "php-fpm.ini" +### PHP end ### From 981e41422a3b1f8d6f9eeac9ffaf43e72599fc7c Mon Sep 17 00:00:00 2001 From: frju365 Date: Sun, 5 Mar 2017 15:21:01 +0100 Subject: [PATCH 2/3] Create restore --- scripts/restore | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 scripts/restore diff --git a/scripts/restore b/scripts/restore new file mode 100644 index 0000000..8e8b334 --- /dev/null +++ b/scripts/restore @@ -0,0 +1,53 @@ +#!/bin/bash + +# Note: each files and directories you've saved using the ynh_backup helper +# will be located in the current directory, regarding the last argument. + +# Exit on command errors and treat unset variables as an error +set -eu + +# See comments in install script +app=$YNH_APP_INSTANCE_NAME + +# Source YunoHost helpers +source /usr/share/yunohost/helpers + +# Retrieve old app settings +domain=$(ynh_app_setting_get "$app" domain) +path=$(ynh_app_setting_get "$app" path) + +# Check domain/path availability +sudo yunohost app checkurl "${domain}${path}" -a "$app" \ + || ynh_die "Path not available: ${domain}${path}" + +# Restore sources & data +src_path="/var/www/${app}" +sudo cp -a ./sources "$src_path" + +# Restore permissions to app files +# you may need to make some file and/or directory writeable by www-data (nginx user) +sudo chown -R root: "$src_path" + +### MySQL (remove if not used) ### +# If a MySQL database is used: +# # Create and restore the database +dbname=$app +dbuser=$app +dbpass=$(ynh_app_setting_get "$app" mysqlpwd) +ynh_mysql_create_db "$dbname" "$dbuser" "$dbpass" +ynh_mysql_connect_as "$dbuser" "$dbpass" "$dbname" < ./dump.sql +### MySQL end ### + +# Restore NGINX configuration +sudo cp -a ./nginx.conf "/etc/nginx/conf.d/${domain}.d/${app}.conf" + +### PHP (remove if not used) ### +# If a dedicated php-fpm process is used: +# # Copy PHP-FPM pool configuration and reload the service +sudo cp -a ./php-fpm.conf "/etc/php5/fpm/pool.d/${app}.conf" +sudo cp -a ./php-fpm.ini "/etc/php5/fpm/conf.d/20-$app.ini" +sudo service php5-fpm reload +### PHP end ### + +# Restart webserver +sudo service nginx reload From db482f77df1c2e1fc592f7b9c1f6ee6d6d012b3e Mon Sep 17 00:00:00 2001 From: frju365 Date: Sun, 5 Mar 2017 15:29:13 +0100 Subject: [PATCH 3/3] =?UTF-8?q?=C3=80=20revoir?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/upgrade | 96 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 scripts/upgrade diff --git a/scripts/upgrade b/scripts/upgrade new file mode 100644 index 0000000..360e5d6 --- /dev/null +++ b/scripts/upgrade @@ -0,0 +1,96 @@ +#!/bin/bash + +# Exit on command errors and treat unset variables as an error +set -eu + +# See comments in install script +app=$YNH_APP_INSTANCE_NAME + +# Source YunoHost helpers +source /usr/share/yunohost/helpers + +# Retrieve app settings +domain=$(ynh_app_setting_get "$app" domain) +path_url=$(ynh_app_setting_get "$app" path_url) +admin=$(ynh_app_setting_get "$app" admin) +is_public=$(ynh_app_setting_get "$app" is_public) +language=$(ynh_app_setting_get "$app" language) + +# Remove trailing "/" for next commands +path_url=${path_url%/} + +sudo cp $final_path/conf/config.yml /tmp/ + +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= + +final_path=/var/www/$app +ynh_app_setting_set $app final_path $final_path +SETUP_SOURCE # Télécharge la source, décompresse et copie dans $final_path + +# Set permissions to app files +# you may need to make some file and/or directory writeable by www-data (nginx user) +sudo chown -R root: $src_path + +sudo mv /tmp/config.yml $final_path/conf/config.yml + +pushd $final_path +sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" +sudo php -r "if (hash_file('SHA384', 'composer-setup.php') === '55d6ead61b29c7bdee5cccfb50076874187bd9f21f65d8991d46ec5cc90518f447387fb9f76ebae1fbbacf329e583e30') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" +sudo php composer-setup.php +sudo php -r "unlink('composer-setup.php');" +sudo ./composer.phar install --no-dev -o; +# Install base fixtures +sudo ./bin/roadiz install -n +# Install DefaultTheme +sudo ./bin/roadiz themes:install -n "/Themes/DefaultTheme/DefaultThemeApp" +# Install DefaultTheme node-type, settings and tags +sudo ./bin/roadiz themes:install -n --data "/Themes/DefaultTheme/DefaultThemeApp" +# Generate node-type Doctrine entities +sudo ./bin/roadiz generate:nsentities +# Update database with new node-types +sudo ./bin/roadiz orm:schema-tool:update -n --force +# Add DefaultTheme node fixtures +sudo ./bin/roadiz themes:install -n --nodes "/Themes/DefaultTheme/DefaultThemeApp" +# Clear caches +sudo ./bin/roadiz cache:clear -e dev +sudo ./bin/roadiz cache:clear -e prod +sudo php ./bin/roadiz cache:clear -e prod --preview +popd + +# Modify Nginx configuration file and copy it to Nginx conf directory +nginx_conf=../conf/nginx.conf +sed -i "s@YNH_WWW_PATH@$path_url@g" $nginx_conf +sed -i "s@YNH_WWW_ALIAS@$src_path/@g" $nginx_conf +# If a dedicated php-fpm process is used: +# +# sed -i "s@YNH_WWW_APP@$app@g" $nginx_conf +sudo cp $nginx_conf /etc/nginx/conf.d/$domain.d/$app.conf + +### PHP (remove if not used) ### +# If a dedicated php-fpm process is used: +# # Modify PHP-FPM pool configuration and copy it to the pool directory +final_path=/var/www/$app +sed -i "s@__NAMETOCHANGE__@$app@g" ../conf/php-fpm.conf +sed -i "s@__FINALPATH__@$final_path@g" ../conf/php-fpm.conf +sed -i "s@__USER__@$app@g" ../conf/php-fpm.conf +finalphpconf=/etc/php5/fpm/pool.d/$app.conf +sudo cp ../conf/php-fpm.conf $finalphpconf +sudo chown root: $finalphpconf +sudo chmod 644 $finalphpconf +finalphpini=/etc/php5/fpm/conf.d/20-$app.ini +sudo cp ../conf/php-fpm.ini $finalphpini +sudo chown root: $finalphpini +sudo chmod 644 $finalphpini +sudo service php5-fpm restart +### PHP end ### + +# If app is public, add url to SSOWat conf as skipped_uris +if [[ $is_public -eq 1 ]]; then + # See install script + ynh_app_setting_set "$app" unprotected_uris "/" +fi + +# Reload nginx service +sudo service nginx reload