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
 | 
					#!/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
 | 
					source _common.sh
 | 
				
			||||||
app=$YNH_APP_INSTANCE_NAME
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Source YunoHost helpers
 | 
					 | 
				
			||||||
source /usr/share/yunohost/helpers
 | 
					source /usr/share/yunohost/helpers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Retrieve app settings
 | 
					#=================================================
 | 
				
			||||||
domain=$(ynh_app_setting_get "$app" domain)
 | 
					# LOAD SETTINGS
 | 
				
			||||||
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
 | 
					app=$YNH_APP_INSTANCE_NAME
 | 
				
			||||||
path_url=${path_url%/}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Copy source files
 | 
					domain=$(ynh_app_setting_get $app domain)
 | 
				
			||||||
src_path=/var/www/$app
 | 
					path_url=$(ynh_app_setting_get $app path)
 | 
				
			||||||
sudo mkdir -p $src_path
 | 
					admin=$(ynh_app_setting_get $app admin)
 | 
				
			||||||
sudo cp -a ../sources/. $src_path
 | 
					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)
 | 
					# ENSURE DOWNWARD COMPATIBILITY
 | 
				
			||||||
sudo chown -R root: $src_path
 | 
					#=================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Modify Nginx configuration file and copy it to Nginx conf directory
 | 
					if [ "$is_public" = "Yes" ]; then
 | 
				
			||||||
nginx_conf=../conf/nginx.conf
 | 
						ynh_app_setting_set $app is_public 1	# Fix is_public as a boolean value
 | 
				
			||||||
sed -i "s@YNH_WWW_PATH@$path_url@g" $nginx_conf
 | 
						is_public=1
 | 
				
			||||||
sed -i "s@YNH_WWW_ALIAS@$src_path/@g" $nginx_conf
 | 
					elif [ "$is_public" = "No" ]; then
 | 
				
			||||||
# If a dedicated php-fpm process is used:
 | 
						ynh_app_setting_set $app is_public 0
 | 
				
			||||||
#
 | 
						is_public=0
 | 
				
			||||||
# 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 "/"
 | 
					 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Reload nginx service
 | 
					if [ -z $db_name ]; then	# If db_name doesn't exist, create it
 | 
				
			||||||
sudo service nginx reload
 | 
						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