1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/prestashop_ynh.git synced 2024-09-03 20:06:39 +02:00

Refactoriser upgrade/restore

This commit is contained in:
magikcypress 2017-03-10 16:23:28 +01:00
parent 53f26cbea7
commit 2316d91531
3 changed files with 138 additions and 93 deletions

View file

@ -4,47 +4,98 @@
#--MULTISITE--} #--MULTISITE--}
location __PATHTOCHANGE__ { location __PATHTOCHANGE__ {
alias __FINALPATH__/; alias __FINALPATH__;
index index.php; index index.php;
# if (!-e $request_filename) if (!-e $request_filename)
# { {
# rewrite ^(.+)$ __PATHTOCHANGE__/index.php?q=$1 last; # /prestashop/index.php?id_category=5&controller=category
# } rewrite ^/([^/]*)/recherche/(.*)$ __PATHTOCHANGE__/index.php?id_categorie$1&controller$2 last;
if ($scheme = http) { # rewrite "^__PATHTOCHANGE__/([a-zA-Z]+)/([a-zA-Z]+)$" /index.php?id_category=$1&controller=$2 last;
rewrite ^ https://$server_name$request_uri? permanent; rewrite ^(.+)$ __PATHTOCHANGE__/index.php?q=$1 last;
} rewrite ^/.*$ __PATHTOCHANGE__/index.php last;
client_max_body_size 30m; }
# Add headers to serve security related headers
add_header Strict-Transport-Security "max-age=15768000;";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
location ~^/(\.ht)/{ if ($scheme = http) {
deny all; rewrite ^ https://$server_name$request_uri? permanent;
} }
location ~* \.(jpg|jpeg|gif|css|png|js|ico|swf|mp3|pdf)$ {
# Le contenu statique, est signalé au navigateur comme étant client_max_body_size 30m;
# à garder en cache une semaine. Si il y a un proxy sur la
# route, celui-ci est autorisé à faire une copie et à la # Add headers to serve security related headers
# cacher. add_header Strict-Transport-Security "max-age=15768000;";
expires 1w; add_header X-Content-Type-Options nosniff;
add_header Cache-Control public; add_header X-Frame-Options "SAMEORIGIN";
} add_header X-XSS-Protection "1; mode=block";
location ~ [^/]\.php(/|$) { add_header X-Robots-Tag none;
fastcgi_split_path_info ^(.+?\.php)(/.*)$; add_header X-Download-Options noopen;
fastcgi_pass unix:/var/run/php5-fpm-__NAMETOCHANGE__.sock; add_header X-Permitted-Cross-Domain-Policies none;
fastcgi_index index.php;
include fastcgi_params; try_files $uri $uri/ /__PATHTOCHANGE__/index.php?q=$uri&$args;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param PATH_INFO $fastcgi_path_info; # Old image system ?
fastcgi_param SCRIPT_FILENAME $request_filename; rewrite ^/([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$1$2$3.jpg last;
} rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$1$2$3$4.jpg last;
rewrite ^/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$1$2$3$4$5.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg last;
rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg last;
rewrite ^/c/([0-9]+)(-[.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+.jpg$ /img/c/$1$2$3.jpg last;
rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+.jpg$ /img/c/$1$2.jpg last;
# Symfony controllers
location ~ /(international|_profiler|module|product|combination|specific-price)/(.*)$ {
try_files $uri $uri/ /index.php?q=$uri&$args $admin_dir/index.php$is_args$args;
}
# Redirect needed to "hide" index.php
# location / {
# try_files $uri $uri/ /index.php$uri&$args;
# }
error_page 404 /index.php?controller=404;
# Deny access to .htaccess .DS_Store .htpasswd etc
location ~ /\. {
deny all;
}
# Deny access file theme
location ~ \.tpl {
deny all;
}
location ~* \.(css|js|docx|zip|pptx|swf|txt|jpg|jpeg|png|gif|swf|webp|flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|mp4|m4v|ogg|webm|aac)$ {
expires max;
log_not_found off;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/run/php5-fpm-__NAMETOCHANGE__.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_keep_conn on;
fastcgi_intercept_errors on;
fastcgi_max_temp_file_size 0;
fastcgi_temp_file_write_size 256k;
fastcgi_buffer_size 8k;
fastcgi_buffers 64 8k;
fastcgi_busy_buffers_size 8k;
fastcgi_connect_timeout 30;
fastcgi_read_timeout 30s;
fastcgi_send_timeout 30s;
client_max_body_size 10m;
}
#--PRIVATE--# Include SSOWAT user panel. #--PRIVATE--# Include SSOWAT user panel.
#--PRIVATE--include conf.d/yunohost_panel.conf.inc; #--PRIVATE--include conf.d/yunohost_panel.conf.inc;

View file

@ -4,11 +4,8 @@
# Exit on command errors and treat unset variables as an error # Exit on command errors and treat unset variables as an error
set -eu set -eu
# The parameter $1 is the backup directory location dedicated to the app
backup_dir=$1
# The parameter $2 is the id of the app instance ex: ynhexample__2 # The parameter $2 is the id of the app instance ex: ynhexample__2
app=$2 app=$YNH_APP_INSTANCE_NAME
# Source app helpers # Source app helpers
source /usr/share/yunohost/helpers source /usr/share/yunohost/helpers
@ -17,47 +14,55 @@ source /usr/share/yunohost/helpers
domain=$(ynh_app_setting_get $app domain) domain=$(ynh_app_setting_get $app domain)
path=$(ynh_app_setting_get $app path) path=$(ynh_app_setting_get $app path)
is_public=$(ynh_app_setting_get $app is_public) is_public=$(ynh_app_setting_get $app is_public)
final_path=$(ynh_app_setting_get $app final_path) with_mysql=$(ynh_app_setting_get "$app" with_mysql)
# Check domain/path availability
sudo yunohost app checkurl "${domain}${path}" -a "$app" \
|| ynh_die "Path not available: ${domain}${path}"
# Check $final_path
final_path="/var/www/${app}"
if [ -d $final_path ]; then if [ -d $final_path ]; then
ynh_die "There is already a directory: $final_path" ynh_die "There is already a directory: $final_path"
fi fi
conf=/etc/nginx/conf.d/$domain.d/$app.conf # Check configuration files nginx
if [ -f $conf ]; then nginx_conf="/etc/nginx/conf.d/${domain}.d/${app}.conf"
ynh_die "There is already a nginx conf file at this path: $conf" if [ -f $nginx_conf ]; then
ynh_die "The NGINX configuration already exists at '${nginx_conf}'. You should safely delete it before restoring this app."
# Check configuration files php-fpm
phpfpm_conf="/etc/php5/fpm/pool.d/${app}.conf"
if [ -f $phpfpm_conf ]; then
ynh_die "The PHP FPM configuration already exists at '${phpfpm_conf}'. You should safely delete it before restoring this app."
fi fi
# Restore conf files
sudo cp -a "${backup_dir}/conf/nginx.conf" $conf
# Reload Nginx phpfpm_ini="/etc/php5/fpm/conf.d/20-${app}.ini"
sudo service nginx reload if [ -f $phpfpm_ini ]; then
ynh_die "The PHP FPM INI configuration already exists at '${phpfpm_ini}'. You should safely delete it before restoring this app."
fi
sudo cp -a "${backup_dir}/var/www/$app" $final_path # Restore sources & data
sudo cp -a ./sources "$final_path"
db_pwd=$(ynh_app_setting_get $app mysqlpwd)
db_user=$app
ynh_mysql_create_db $db_user $db_user $db_pwd
sudo su -c "mysql -u $db_user -p$db_pwd $app < ${backup_dir}/db.sql"
sudo rm -f "${backup_dir}/db.sql"
sudo sed -i -e "s/'DB_USER', *'[^']*'/'DB_USER', '$app'/g" $final_path/config/connect.php
sudo sed -i -e "s/'DB_NAME', *'[^']*'/'DB_NAME', '$app'/g" $final_path/config/connect.php
# Set permissions # Set permissions
# Les fichiers appartiennent à www-data, pour permettre les mises à jour.
sudo chown -R www-data: $final_path sudo chown -R www-data: $final_path
# Sauf le fichier de config connect.php qui appartient à root
sudo chown root: $final_path/config/connect.php
# Copy dedicated php-fpm process from backup folder to the right location # Restore db
sudo cp -a $backup_dir/conf/php-fpm.conf /etc/php5/fpm/pool.d/$app.conf if [[ $with_mysql -eq 1 ]]; then
sudo cp -a $backup_dir/conf/php-fpm.ini /etc/php5/fpm/conf.d/20-$app.ini db_pwd=$(ynh_app_setting_get $app mysqlpwd)
# And restart service db_user=$app
sudo service php5-fpm reload ynh_mysql_create_db $db_user $db_user $db_pwd
sudo su -c "mysql -u $db_user -p$db_pwd $app < ./db.sql"
# Set ssowat config sudo rm -f "./db.sql"
if [ "$is_public" = "No" ];
then
ynh_app_setting_delete $app skipped_uris
fi fi
sudo yunohost app ssowatconf
# Restore nginx configuration files
sudo cp -a ./nginx.conf "$nginx_conf"
# Restore php-fpm configuration files
sudo cp -a ./php-fpm.conf "$phpfpm_conf"
sudo cp -a ./php-fpm.ini "$phpfpm_ini"
# Reload services
sudo service php5-fpm reload || true
sudo service nginx reload || true

View file

@ -3,14 +3,12 @@
# Exit on command errors and treat unset variables as an error # Exit on command errors and treat unset variables as an error
set -eu set -eu
source .fonctions # Charge les fonctions génériques habituellement utilisées dans le script source .fonctions # Loads the generic functions usually used in the script
source /usr/share/yunohost/helpers # Source YunoHost helpers
# See comments in install script # See comments in install script
app=$YNH_APP_INSTANCE_NAME app=$YNH_APP_INSTANCE_NAME
# Source YunoHost helpers
source /usr/share/yunohost/helpers
# Retrieve app settings # Retrieve app settings
domain=$(ynh_app_setting_get "$app" domain) domain=$(ynh_app_setting_get "$app" domain)
path=$(ynh_app_setting_get "$app" path) path=$(ynh_app_setting_get "$app" path)
@ -18,7 +16,7 @@ admin=$(ynh_app_setting_get "$app" admin)
is_public=$(ynh_app_setting_get "$app" is_public) is_public=$(ynh_app_setting_get "$app" is_public)
language=$(ynh_app_setting_get "$app" language) language=$(ynh_app_setting_get "$app" language)
CHECK_PATH # Vérifie et corrige la syntaxe du path. CHECK_PATH # Checks and corrects the syntax of the path.
# Check if admin is not null # Check if admin is not null
if [[ "$admin" = "" || "$is_public" = "" || "$language" = "" ]]; then if [[ "$admin" = "" || "$is_public" = "" || "$language" = "" ]]; then
@ -32,24 +30,15 @@ final_path=/var/www/$app
db_name=$app db_name=$app
CHECK_MD5_CONFIG "connect.php" "$final_path/config/connect.php" # Créé un backup du fichier de config si il a été modifié.
# Modify Nginx configuration file and copy it to Nginx conf directory # Modify Nginx configuration file and copy it to Nginx conf directory
sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf* sed -i "s@__PATHTOCHANGE__@$app@g" ../conf/nginx.conf*
sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf* sed -i "s@__FINALPATH__@$final_path/@g" ../conf/nginx.conf*
if [ $is_public = "Yes" ];
then
sudo cp ../conf/nginx.conf-public /etc/nginx/conf.d/$domain.d/$app.conf
else
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
fi
# If app is public, add url to SSOWat conf as skipped_uris # If app is public, add url to SSOWat conf as skipped_uris
if [[ $is_public -eq 1 ]]; then if [ $is_public = "Yes" ];
# See install script then
ynh_app_setting_set "$app" unprotected_uris "/" ynh_app_setting_set "$app" unprotected_uris "/"
sudo cp ../conf/nginx.conf-public /etc/nginx/conf.d/$domain.d/$app.conf sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
else else
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
fi fi