mirror of
https://github.com/YunoHost-Apps/moodle_ynh.git
synced 2024-09-03 19:46:23 +02:00
Added backup and restore
This commit is contained in:
parent
ff6b923d32
commit
3390389acc
5 changed files with 225 additions and 37 deletions
|
@ -18,5 +18,5 @@ all manner of organisations and individuals.
|
||||||
- [X] Install script
|
- [X] Install script
|
||||||
- [X] Remove script
|
- [X] Remove script
|
||||||
- [ ] Upgrade script
|
- [ ] Upgrade script
|
||||||
- [ ] Backup and Restore scripts
|
- [X] Backup and Restore scripts(need testing)
|
||||||
- [ ] LDAP integration
|
- [ ] LDAP integration
|
||||||
|
|
|
@ -33,7 +33,7 @@ ynh_remove_php7 () {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Create a dedicated php-fpm config
|
# Create a dedicated php-fpm config for php7.1
|
||||||
#
|
#
|
||||||
# usage: ynh_add_fpm_config
|
# usage: ynh_add_fpm_config
|
||||||
ynh_add_php7.1-fpm_config () {
|
ynh_add_php7.1-fpm_config () {
|
||||||
|
@ -58,11 +58,8 @@ ynh_add_php7.1-fpm_config () {
|
||||||
sudo systemctl reload php7.1-fpm
|
sudo systemctl reload php7.1-fpm
|
||||||
}
|
}
|
||||||
|
|
||||||
<<<<<<< HEAD
|
|
||||||
# Remove the dedicated php-fpm config for php7.1
|
# Remove the dedicated php-fpm config for php7.1
|
||||||
=======
|
|
||||||
# Remove the dedicated php-fpm config
|
|
||||||
>>>>>>> 4d1446000580d39209c48e91f1e764e3bb677881
|
|
||||||
#
|
#
|
||||||
# usage: ynh_remove_fpm_config
|
# usage: ynh_remove_fpm_config
|
||||||
ynh_remove_php7.1-fpm_config () {
|
ynh_remove_php7.1-fpm_config () {
|
||||||
|
@ -70,28 +67,3 @@ ynh_remove_php7.1-fpm_config () {
|
||||||
ynh_secure_remove "/etc/php/7.1/fpm/conf.d/20-$app.ini" 2>&1
|
ynh_secure_remove "/etc/php/7.1/fpm/conf.d/20-$app.ini" 2>&1
|
||||||
sudo systemctl reload php7.1-fpm
|
sudo systemctl reload php7.1-fpm
|
||||||
}
|
}
|
||||||
<<<<<<< HEAD
|
|
||||||
|
|
||||||
ynh_install_php7 () {
|
|
||||||
|
|
||||||
ynh_package_update
|
|
||||||
ynh_package_install apt-transport-https --no-install-recommends
|
|
||||||
|
|
||||||
wget -q -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
|
|
||||||
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.list
|
|
||||||
|
|
||||||
ynh_package_update
|
|
||||||
ynh_install_app_dependencies php7.1 php7.1-zip php7.1-fpm php7.1-mysql php7.1-xml php7.1-intl php7.1-mbstring php7.1-gd php7.1-curl php7.1-soap php7.1-pgsql
|
|
||||||
sudo update-alternatives --install /usr/bin/php php /usr/bin/php5 70
|
|
||||||
sudo systemctl reload php7.1-fpm
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ynh_remove_php7 () {
|
|
||||||
sudo rm -f /etc/apt/sources.list.d/php7.list
|
|
||||||
sudo apt-key del 4096R/89DF5277
|
|
||||||
sudo apt-key del 2048R/11A06851
|
|
||||||
ynh_remove_app_dependencies php7.1 php7.1-zip php7.1-fpm php7.1-mysql php7.1-xml php7.1-intl php7.1-mbstring php7.1-gd php7.1-curl php7.1-soap php7.1-pgsql
|
|
||||||
}
|
|
||||||
=======
|
|
||||||
>>>>>>> 4d1446000580d39209c48e91f1e764e3bb677881
|
|
||||||
|
|
78
scripts/backup
Normal file
78
scripts/backup
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# GENERIC START
|
||||||
|
#=================================================
|
||||||
|
# IMPORT GENERIC HELPERS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
if [ ! -e _common.sh ]; then
|
||||||
|
# Get the _common.sh file if it's not in the current directory
|
||||||
|
cp ../settings/scripts/_common.sh ./_common.sh
|
||||||
|
chmod a+rx _common.sh
|
||||||
|
fi
|
||||||
|
source _common.sh
|
||||||
|
source psql.sh
|
||||||
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# MANAGE SCRIPT FAILURE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# Exit if an error occurs during the execution of the script
|
||||||
|
ynh_abort_if_errors
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# LOAD SETTINGS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
|
final_path=$(ynh_app_setting_get $app final_path)
|
||||||
|
domain=$(ynh_app_setting_get $app domain)
|
||||||
|
db_name=$(ynh_app_setting_get $app psql_db)
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# STANDARD BACKUP STEPS
|
||||||
|
#=================================================
|
||||||
|
# BACKUP THE APP MAIN DIR
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_backup "$final_path"
|
||||||
|
# BACKUP APP home directory
|
||||||
|
ynh_backup "/home/yunohost.app/$app"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# BACKUP THE NGINX CONFIGURATION
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# BACKUP THE PHP-FPM CONFIGURATION
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_backup "/etc/php/7.1/fpm/pool.d/$app.conf"
|
||||||
|
ynh_backup "/etc/php/7.1/fpm/conf.d/20-$app.ini"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# BACKUP THE PSQL DATABASE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_psql_dump_db "$db_name" > db.sql
|
||||||
|
ynh_backup "db.sql"
|
||||||
|
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SPECIFIC BACKUP
|
||||||
|
#=================================================
|
||||||
|
# BACKUP LOGROTATE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_backup "/etc/logrotate.d/$app"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# BACKUP THE CRON FILE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_backup "/etc/cron.d/$app"
|
|
@ -33,7 +33,9 @@ ynh_psql_execute_as_root () {
|
||||||
# | arg: file - the file containing SQL commands
|
# | arg: file - the file containing SQL commands
|
||||||
# | arg: db - the database to connect to
|
# | arg: db - the database to connect to
|
||||||
ynh_psql_execute_file_as_root() {
|
ynh_psql_execute_file_as_root() {
|
||||||
ynh_die "ynh_psql_execute_file_as_root is not yet implemented"
|
file="$1"
|
||||||
|
db="$2"
|
||||||
|
su -c "psql $db" postgres < "$file"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create a database and grant optionnaly privilegies to a user
|
# Create a database and grant optionnaly privilegies to a user
|
||||||
|
@ -70,7 +72,8 @@ ynh_psql_drop_db() {
|
||||||
# | arg: db - the database name to dump
|
# | arg: db - the database name to dump
|
||||||
# | ret: the psqldump output
|
# | ret: the psqldump output
|
||||||
ynh_psql_dump_db() {
|
ynh_psql_dump_db() {
|
||||||
ynh_die "ynh_psql_dump_db is not yet implemented"
|
db="$1"
|
||||||
|
su --command="pg_dump \"${db}\"" postgres
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,13 +100,25 @@ ynh_psql_test_if_first_run() {
|
||||||
then
|
then
|
||||||
echo "PostgreSQL is already installed, no need to create master password"
|
echo "PostgreSQL is already installed, no need to create master password"
|
||||||
else
|
else
|
||||||
local pgsql=$(ynh_string_random)
|
pgsql=$(ynh_string_random)
|
||||||
|
pg_hba=""
|
||||||
echo "$pgsql" >> /etc/yunohost/psql
|
echo "$pgsql" >> /etc/yunohost/psql
|
||||||
|
|
||||||
|
if [ -e /etc/postgresql/9.4/ ]
|
||||||
|
then
|
||||||
|
pg_hba=/etc/postgresql/9.4/main/pg_hba.conf
|
||||||
|
elif [ -e /etc/postgresql/9.6/ ]
|
||||||
|
then
|
||||||
|
pg_hba=/etc/postgresql/9.6/main/pg_hba.conf
|
||||||
|
else
|
||||||
|
ynh_die "postgresql shoud be 9.4 or 9.6"
|
||||||
|
fi
|
||||||
|
|
||||||
systemctl start postgresql
|
systemctl start postgresql
|
||||||
sudo -u postgres psql -c"ALTER user postgres WITH PASSWORD '${pgsql}'"
|
su --command="psql -c\"ALTER user postgres WITH PASSWORD '${pgsql}'\"" postgres
|
||||||
# we can't use peer since YunoHost create users with nologin
|
# we can't use peer since YunoHost create users with nologin
|
||||||
sed -i '/local\s*all\s*all\s*peer/i \
|
sed -i '/local\s*all\s*all\s*peer/i \
|
||||||
local all all password' /etc/postgresql/9.4/main/pg_hba.conf
|
local all all password' "$pg_hba"
|
||||||
systemctl enable postgresql
|
systemctl enable postgresql
|
||||||
systemctl reload postgresql
|
systemctl reload postgresql
|
||||||
fi
|
fi
|
||||||
|
|
123
scripts/restore
Normal file
123
scripts/restore
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# GENERIC START
|
||||||
|
#=================================================
|
||||||
|
# IMPORT GENERIC HELPERS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
if [ ! -e _common.sh ]; then
|
||||||
|
# Get the _common.sh file if it's not in the current directory
|
||||||
|
cp ../settings/scripts/_common.sh ./_common.sh
|
||||||
|
chmod a+rx _common.sh
|
||||||
|
fi
|
||||||
|
source _common.sh
|
||||||
|
source psql.sh
|
||||||
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# MANAGE SCRIPT FAILURE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# Exit if an error occurs during the execution of the script
|
||||||
|
ynh_abort_if_errors
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# LOAD SETTINGS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
|
domain=$(ynh_app_setting_get $app domain)
|
||||||
|
path_url=$(ynh_app_setting_get $app path)
|
||||||
|
final_path=$(ynh_app_setting_get $app final_path)
|
||||||
|
db_name=$(ynh_app_setting_get $app psql_db)
|
||||||
|
db_pwd=$(ynh_app_setting_get $app psqlpwd)
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# CHECK IF THE APP CAN BE RESTORED
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_webpath_available $domain $path_url \
|
||||||
|
|| ynh_die "Path not available: ${domain}${path_url}"
|
||||||
|
test ! -d $final_path \
|
||||||
|
|| ynh_die "There is already a directory: $final_path "
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# STANDARD RESTORATION STEPS
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE NGINX CONFIGURATION
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE APP MAIN DIR
|
||||||
|
#=================================================
|
||||||
|
var_root=/home/yunohost.app/$app
|
||||||
|
ynh_restore_file "$final_path"
|
||||||
|
ynh_restore_file "$var_root"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE psql DATABASE
|
||||||
|
#=================================================
|
||||||
|
ynh_psql_test_if_first_run
|
||||||
|
ynh_psql_create_user $app $db_pwd
|
||||||
|
ynh_psql_execute_as_root \
|
||||||
|
"CREATE DATABASE $db_name ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER $app;"
|
||||||
|
ynh_psql_execute_file_as_root ./db.sql "$db_name"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RECREATE THE DEDICATED USER
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# Create the dedicated user (if not existing)
|
||||||
|
ynh_system_user_create $app
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE USER RIGHTS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# Restore permissions on app files
|
||||||
|
chown -R $app: $final_path
|
||||||
|
chown -R root: $final_path/config.php
|
||||||
|
mkdir -p $var_root
|
||||||
|
chown -R $app:root $var_root
|
||||||
|
chmod -R 700 $var_root
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE PHP-FPM CONFIGURATION
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_restore_file "/etc/php/7.1/pool.d/$app.conf"
|
||||||
|
ynh_restore_file "/etc/php/7.1/conf.d/20-$app.ini"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SPECIFIC RESTORATION
|
||||||
|
#=================================================
|
||||||
|
# REINSTALL DEPENDENCIES
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# Define and install dependencies
|
||||||
|
ynh_install_php7
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE CRON FILE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_restore_file "/etc/cron.d/$app"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE LOGROTATE CONFIGURATION
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_restore_file "/etc/logrotate.d/$app"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# GENERIC FINALIZATION
|
||||||
|
#=================================================
|
||||||
|
# RELOAD NGINX AND PHP-FPM
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
systemctl reload php7.1-fpm
|
||||||
|
systemctl reload nginx
|
Loading…
Add table
Reference in a new issue