Merge pull request #35 from YunoHost/upgrade_script
[enh] Upgrade upgrade script
This commit is contained in:
		
						commit
						bb4f0cad1e
					
				
							
								
								
									
										170
									
								
								scripts/upgrade
									
									
									
									
									
								
							
							
						
						
									
										170
									
								
								scripts/upgrade
									
									
									
									
									
								
							@ -1,59 +1,133 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# Exit on command errors and treat unset variables as an error
 | 
			
		||||
set -eu
 | 
			
		||||
#=================================================
 | 
			
		||||
# GENERIC START
 | 
			
		||||
#=================================================
 | 
			
		||||
# IMPORT GENERIC HELPERS
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
# See comments in install script
 | 
			
		||||
app=$YNH_APP_INSTANCE_NAME
 | 
			
		||||
 | 
			
		||||
# Source YunoHost helpers
 | 
			
		||||
source _common.sh
 | 
			
		||||
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)
 | 
			
		||||
#=================================================
 | 
			
		||||
# LOAD SETTINGS
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
# Remove trailing "/" for next commands
 | 
			
		||||
path_url=${path_url%/}
 | 
			
		||||
app=$YNH_APP_INSTANCE_NAME
 | 
			
		||||
 | 
			
		||||
# Copy source files
 | 
			
		||||
src_path=/var/www/$app
 | 
			
		||||
sudo mkdir -p $src_path
 | 
			
		||||
sudo cp -a ../sources/. $src_path
 | 
			
		||||
domain=$(ynh_app_setting_get $app domain)
 | 
			
		||||
path_url=$(ynh_app_setting_get $app path)
 | 
			
		||||
admin=$(ynh_app_setting_get $app admin)
 | 
			
		||||
is_public=$(ynh_app_setting_get $app is_public)
 | 
			
		||||
final_path=$(ynh_app_setting_get $app final_path)
 | 
			
		||||
port=$(ynh_app_setting_get $app port)
 | 
			
		||||
db_name=$(ynh_app_setting_get $app db_name)
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
#=================================================
 | 
			
		||||
# ENSURE DOWNWARD COMPATIBILITY
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
# 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
 | 
			
		||||
# sed -i "s@YNH_WWW_APP@$app@g" ../conf/php-fpm.conf
 | 
			
		||||
# sed -i "s@YNH_WWW_ALIAS@$src_path/@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
 | 
			
		||||
# 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 "/"
 | 
			
		||||
if [ "$is_public" = "Yes" ]; then
 | 
			
		||||
	ynh_app_setting_set $app is_public 1	# Fix is_public as a boolean value
 | 
			
		||||
	is_public=1
 | 
			
		||||
elif [ "$is_public" = "No" ]; then
 | 
			
		||||
	ynh_app_setting_set $app is_public 0
 | 
			
		||||
	is_public=0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Reload nginx service
 | 
			
		||||
sudo service nginx reload
 | 
			
		||||
if [ -z $db_name ]; then	# If db_name doesn't exist, create it
 | 
			
		||||
	db_name=$(ynh_sanitize_dbid $app)
 | 
			
		||||
	ynh_app_setting_set $app db_name $db_name
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#=================================================
 | 
			
		||||
# CHECK THE PATH
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
# Normalize the URL path syntax
 | 
			
		||||
path_url=$(ynh_normalize_url_path $path_url)
 | 
			
		||||
 | 
			
		||||
#=================================================
 | 
			
		||||
# STANDARD UPGRADE STEPS
 | 
			
		||||
#=================================================
 | 
			
		||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
# Download, check integrity, uncompress and patch the source from app.src
 | 
			
		||||
ynh_setup_source "$final_path"
 | 
			
		||||
 | 
			
		||||
#=================================================
 | 
			
		||||
# NGINX CONFIGURATION
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
# Create a dedicated nginx config
 | 
			
		||||
ynh_nginx_config
 | 
			
		||||
 | 
			
		||||
#=================================================
 | 
			
		||||
# CREATE DEDICATED USER
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
# Create a system user
 | 
			
		||||
ynh_system_user_create $app
 | 
			
		||||
 | 
			
		||||
#=================================================
 | 
			
		||||
# PHP-FPM CONFIGURATION
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
# Create a dedicated php-fpm config
 | 
			
		||||
ynh_fpm_config
 | 
			
		||||
 | 
			
		||||
#=================================================
 | 
			
		||||
# SPECIFIC UPGRADE
 | 
			
		||||
#=================================================
 | 
			
		||||
# ...
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
# Verify the checksum and backup the file if it's different
 | 
			
		||||
ynh_backup_if_checksum_is_different "$final_path/CONFIG_FILE"
 | 
			
		||||
# Recalculate and store the config file checksum into the app settings
 | 
			
		||||
ynh_store_file_checksum "$final_path/CONFIG_FILE"
 | 
			
		||||
 | 
			
		||||
#=================================================
 | 
			
		||||
# SETUP LOGROTATE
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
# Use logrotate to manage app-specific logfile(s)
 | 
			
		||||
ynh_use_logrotate
 | 
			
		||||
 | 
			
		||||
#=================================================
 | 
			
		||||
# SETUP SYSTEMD
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
# Create a dedicated systemd config
 | 
			
		||||
ynh_systemd_config
 | 
			
		||||
 | 
			
		||||
#=================================================
 | 
			
		||||
# GENERIC FINALIZATION
 | 
			
		||||
#=================================================
 | 
			
		||||
# SECURE FILES AND DIRECTORIES
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
# Set right permissions for curl installation
 | 
			
		||||
sudo chown -R root: $final_path
 | 
			
		||||
 | 
			
		||||
#=================================================
 | 
			
		||||
# SETUP SSOWAT
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
if [ $is_public -eq 0 ]
 | 
			
		||||
then	# Remove the public access
 | 
			
		||||
	ynh_app_setting_delete $app skipped_uris
 | 
			
		||||
fi
 | 
			
		||||
# Make app public if necessary
 | 
			
		||||
if [ $is_public -eq 1 ]
 | 
			
		||||
then
 | 
			
		||||
	# unprotected_uris allows SSO credentials to be passed anyway
 | 
			
		||||
	ynh_app_setting_set $app unprotected_uris "/"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#=================================================
 | 
			
		||||
# RELOAD NGINX
 | 
			
		||||
#=================================================
 | 
			
		||||
 | 
			
		||||
sudo systemctl reload nginx
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user