second commit
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
|
||||
function detectWordpress() {
|
||||
local result=$(pwd)
|
||||
while [[ ! ("$result" == / || -f "$result/wp-config.php") ]]; do
|
||||
result=$(dirname "$result")
|
||||
done
|
||||
|
||||
if [[ "$result" == / ]]; then
|
||||
echo >&2 "no WORDPRESS detected from current folder <$(pwd)>!"
|
||||
exit 100
|
||||
fi
|
||||
|
||||
echo "$result"
|
||||
}
|
||||
|
||||
## MAIN
|
||||
## ----
|
||||
|
||||
set -Eeuo pipefail
|
||||
WP_BASE=$(detectWordpress)
|
||||
WP_CONFIG="$WP_BASE/wp-config.php"
|
||||
DB_HOST=$(grep DB_HOST $WP_CONFIG | cut -d"'" -f4)
|
||||
DB_NAME=$(grep DB_NAME $WP_CONFIG | cut -d"'" -f4)
|
||||
DB_USER=$(grep DB_USER $WP_CONFIG | cut -d"'" -f4)
|
||||
DB_PASSWORD=$(grep DB_PASSWORD $WP_CONFIG | cut -d"'" -f4)
|
||||
TODAY=$(date +%F)
|
||||
BACKUP_DIR="/mnt/SHARED/wordpress-backup/$DB_NAME-$TODAY"
|
||||
|
||||
[[ -d "$BACKUP_DIR" ]] && find "$BACKUP_DIR" -mindepth 1 -delete || mkdir -p "$BACKUP_DIR"
|
||||
|
||||
echo -n "backing up database..."
|
||||
mariadb-dump -h "$DB_HOST" -u "$DB_NAME" -p"$DB_PASSWORD" "$DB_NAME" | gzip >"$BACKUP_DIR/$DB_NAME".mariadb.gz
|
||||
echo OK
|
||||
|
||||
echo -n "compressing as tar.gz the wp-content folder ..."
|
||||
tar -czvf "$BACKUP_DIR/wp-content.tgz" -C "$WP_BASE" wp-content
|
||||
echo OK
|
||||
|
||||
echo -n "copying wp-config.php file ..."
|
||||
cp "$WP_BASE/wp-config.php" "$BACKUP_DIR"
|
||||
echo OK
|
||||
|
||||
echo "successful backup in $BACKUP_DIR, db + wp-content + wp-config"
|
||||
@@ -0,0 +1,37 @@
|
||||
server {
|
||||
listen {{ env.APP_PORT }} default_server;
|
||||
|
||||
access_log /var/log/nginx/{{ env.APP_NAME }}/wp-access.log;
|
||||
error_log /var/log/nginx/{{ env.APP_NAME }}/wp-error.log;
|
||||
|
||||
client_max_body_size 50M;
|
||||
root /var/www/wordpress/{{ env.APP_NAME }};
|
||||
index index.php index.html index.htm;
|
||||
charset UTF-8;
|
||||
|
||||
location / {
|
||||
try_files $uri/ /index.php?$args;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
try_files $uri =404;
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_pass unix:/run/php/php-fpm.sock;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi.conf;
|
||||
}
|
||||
|
||||
location ~* \.(js|css|png|jpg|jpeg|svg|gif|ico|eot|otf|ttf|woff|woff2|mp3|wav|ogg)$ {
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
access_log off; log_not_found off; expires 30d;
|
||||
}
|
||||
|
||||
# Mailpoet - tinyMCE quick fix
|
||||
location ~ /wp-content/plugins/wysija-newsletters/js/tinymce/.*\.(htm|html)$ {
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
access_log off; log_not_found off; expires 30d;
|
||||
}
|
||||
|
||||
location = /robots.txt { access_log off; log_not_found off; }
|
||||
location ~ /\. { deny all; access_log off; log_not_found off; }
|
||||
}
|
||||
@@ -0,0 +1,176 @@
|
||||
#!/bin/bash
|
||||
|
||||
### error_handling
|
||||
|
||||
function trap_error() {
|
||||
error_code=$1
|
||||
error_line=$2
|
||||
|
||||
if [[ ${error_code} -lt 100 ]]; then
|
||||
printf "\nEXIT #${error_code} due to error at line ${error_line} : \n-----------------------------------------\n"
|
||||
sed "${error_line}q;d" $0
|
||||
echo
|
||||
fi
|
||||
exit $error_code
|
||||
}
|
||||
set -e
|
||||
trap 'trap_error $? $LINENO' ERR
|
||||
|
||||
### ------------------
|
||||
|
||||
function detectWordpress() {
|
||||
local result=$(pwd)
|
||||
while [[ ! ("$result" == / || -f "$result/wp-config.php") ]]; do
|
||||
result=$(dirname "$result")
|
||||
done
|
||||
|
||||
if [[ "$result" == / ]]; then
|
||||
echo >&2 "no WORDPRESS detected!"
|
||||
exit 100
|
||||
fi
|
||||
|
||||
echo "$result"
|
||||
}
|
||||
|
||||
function getConfigComment() {
|
||||
local result=$(grep -e "^#" $WP_CONFIG | grep "$1" | head -n1 | cut -d ',' -f2 | cut -d \' -f2)
|
||||
if [[ -z "$result" ]]; then
|
||||
echo "config comment: $1 not found!"
|
||||
exit 2
|
||||
fi
|
||||
echo "$result"
|
||||
}
|
||||
function getConfigEntry() {
|
||||
local result=$(grep "$1" $WP_CONFIG | head -n1 | cut -d ',' -f2 | cut -d \' -f2)
|
||||
if [[ -z "$result" ]]; then
|
||||
echo "config entry: $1 not found!"
|
||||
exit 2
|
||||
fi
|
||||
echo "$result"
|
||||
}
|
||||
|
||||
function sql() {
|
||||
local result=$(echo "$1" | mysql -srN -u $DB_USER -h $DB_HOST $DB_NAME -p$DB_PASS 2>&1)
|
||||
if [[ $result =~ ^ERROR ]]; then
|
||||
echo >&2 "sql failure: $result"
|
||||
exit 3
|
||||
else
|
||||
echo "$result"
|
||||
fi
|
||||
}
|
||||
|
||||
function sqlFile() {
|
||||
local result=$(cat "$1" | mysql -srN -u $DB_USER -h $DB_HOST $DB_NAME -p$DB_PASS 2>&1)
|
||||
if [[ $result =~ ^ERROR ]]; then
|
||||
echo >&2 "sql failure: $result"
|
||||
exit 3
|
||||
else
|
||||
echo "$result"
|
||||
fi
|
||||
}
|
||||
function changeHome() {
|
||||
local FROM=$1
|
||||
local TO=$2
|
||||
sql "UPDATE wp_options SET option_value = replace(option_value, '$FROM', '$TO') WHERE option_name = 'home' OR option_name = 'siteurl'"
|
||||
sql "UPDATE wp_posts SET guid = replace(guid, '$FROM','$TO')"
|
||||
sql "UPDATE wp_posts SET post_content = replace(post_content, '$FROM', '$TO')"
|
||||
sql "UPDATE wp_postmeta SET meta_value = replace(meta_value,'$FROM','$TO')"
|
||||
}
|
||||
|
||||
function lastMigration() {
|
||||
sql "SELECT migration_file FROM migrations ORDER BY last_run DESC LIMIT 1"
|
||||
}
|
||||
|
||||
function upgradeMigration() {
|
||||
local LAST_MIGRATION=$1
|
||||
local UPGRADE=false
|
||||
if [[ "$LAST_MIGRATION" == '' ]]; then
|
||||
UPGRADE=true
|
||||
fi
|
||||
|
||||
local MIG_BASE="$WP_BASE/wp-content/migrations"
|
||||
local MIGRATIONS=$(ls -p1 $MIG_BASE | grep -v /)
|
||||
local MIG_FILE
|
||||
for mig in $MIGRATIONS; do
|
||||
if [[ "$UPGRADE" == true ]]; then
|
||||
printf "applying %50s ... " $mig
|
||||
printf "%d %d" $(sqlFile $MIG_BASE/$mig)
|
||||
echo " DONE"
|
||||
MIG_FILE=$mig
|
||||
else
|
||||
printf "useless %50s \n" $mig
|
||||
if [[ "$LAST_MIGRATION" == "$mig" ]]; then
|
||||
UPGRADE=true
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $UPGRADE == true && $MIG_FILE != '' ]]; then
|
||||
local done=$(sql "INSERT INTO migrations(migration_file, last_run) VALUES ('$mig', NOW())")
|
||||
echo "all migrations succeeded, wrote: $mig"
|
||||
else
|
||||
echo "already up-to-date"
|
||||
fi
|
||||
}
|
||||
|
||||
function buildMigrations() {
|
||||
if [[ ! -d "$WP_BASE"/wp-content/migrations ]]; then
|
||||
mkdir -p "$WP_BASE"/wp-content/migrations
|
||||
echo "migrations folder created!"
|
||||
fi
|
||||
|
||||
sql "CREATE TABLE IF NOT EXISTS migrations (id int(11) NOT NULL AUTO_INCREMENT, migration_file varchar(255) COLLATE utf8_unicode_ci NOT NULL, last_run varchar(45) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (id) )"
|
||||
|
||||
}
|
||||
|
||||
function playEnvironment() {
|
||||
|
||||
buildMigrations
|
||||
|
||||
local PLATFORM=$1
|
||||
local PLATFORM_BASE="$WP_BASE/wp-content/migrations/$PLATFORM"
|
||||
if [[ -d "$PLATFORM_BASE" ]]; then
|
||||
echo play platform $PLATFORM
|
||||
|
||||
local MIGRATIONS=$(ls -p1 $PLATFORM_BASE | grep -v /)
|
||||
for mig in $MIGRATIONS; do
|
||||
printf "applying %50s ... " $mig
|
||||
printf "%d %d" $(sqlFile $PLATFORM_BASE/$mig)
|
||||
echo " DONE"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
## MAIN
|
||||
## ----
|
||||
|
||||
WP_BASE=$(detectWordpress)
|
||||
WP_CONFIG="$WP_BASE/wp-config.php"
|
||||
echo "WP_BASE = $WP_BASE"
|
||||
|
||||
WP_HOME=$(getConfigComment WP_HOME)
|
||||
echo "WP_HOME = $WP_HOME"
|
||||
|
||||
DB_HOST=$(getConfigEntry DB_HOST)
|
||||
DB_NAME=$(getConfigEntry DB_NAME)
|
||||
DB_USER=$(getConfigEntry DB_USER)
|
||||
DB_PASS=$(getConfigEntry DB_PASSWORD)
|
||||
|
||||
CURRENT_HOME=$(sql "SELECT option_value FROM wp_options WHERE option_name = 'home'")
|
||||
if [[ "$CURRENT_HOME" != "$WP_HOME" ]]; then
|
||||
echo "HOME detected = $CURRENT_HOME , needs to apply changes"
|
||||
$(changeHome "$CURRENT_HOME" "$WP_HOME")
|
||||
fi
|
||||
|
||||
if [[ "$WP_HOME" =~ https?:\/\/beta[0-9]*\..*|https?:\/\/.*\.beta[0-9]*\..* ]]; then
|
||||
playEnvironment BETA
|
||||
else
|
||||
if [[ "$WP_HOME" =~ https?:\/\/dev[0-9]*\..*|https?:\/\/.*\.dev[0-9]*\..* ]]; then
|
||||
playEnvironment DEV
|
||||
else
|
||||
playEnvironment PROD
|
||||
fi
|
||||
fi
|
||||
|
||||
CURRENT_MIGRATION=$(lastMigration)
|
||||
upgradeMigration "$CURRENT_MIGRATION"
|
||||
Reference in New Issue
Block a user