diff --git a/debian/postinst b/debian/postinst index 7e67da421..06860f8d0 100755 --- a/debian/postinst +++ b/debian/postinst @@ -135,6 +135,36 @@ setup-sshcommand() { fi } +disable-default-vhost-path() { + local path="$1" + local backup_path="${path}.dokku-disabled" + + if [ ! -e "$path" ] && [ ! -L "$path" ]; then + return + fi + + if [ -e "$backup_path" ] || [ -L "$backup_path" ]; then + return + fi + + case "$path" in + /etc/nginx/sites-enabled/*) + rm -f "$path" + echo "Removed conflicting nginx default at $path" 1>&2 + return + ;; + esac + + if [ -L "$path" ]; then + rm -f "$path" + echo "Removed conflicting nginx default symlink at $path" 1>&2 + return + fi + + mv -n "$path" "$backup_path" + echo "Disabled $path (renamed to $backup_path)" 1>&2 +} + setup-default-site() { db_get "dokku/install_default_site" if [ "$RET" != "true" ]; then @@ -153,10 +183,7 @@ setup-default-site() { fi for path in /etc/nginx/sites-enabled/default /etc/nginx/sites-available/default /etc/nginx/conf.d/default.conf; do - if [ -e "$path" ] && [ ! -e "${path}.dokku-disabled" ]; then - mv -n "$path" "${path}.dokku-disabled" - echo "Disabled $path (renamed to ${path}.dokku-disabled)" 1>&2 - fi + disable-default-vhost-path "$path" done echo "Installing nginx default catch-all site at $default_vhost_target" diff --git a/tests/unit/nginx-vhosts_14.bats b/tests/unit/nginx-vhosts_14.bats index 46d424064..51046b609 100644 --- a/tests/unit/nginx-vhosts_14.bats +++ b/tests/unit/nginx-vhosts_14.bats @@ -25,7 +25,6 @@ teardown() { mv "${NGINX_DEFAULT_VHOST_PATH}.bats-bak" "$NGINX_DEFAULT_VHOST_PATH" fi rm -f /etc/nginx/sites-enabled/default.bats-stub - rm -f /etc/nginx/sites-enabled/default.bats-stub.dokku-disabled [[ -f "$DOKKU_ROOT/VHOST.bak" ]] && mv "$DOKKU_ROOT/VHOST.bak" "$DOKKU_ROOT/VHOST" && chown dokku:dokku "$DOKKU_ROOT/VHOST" if sudo nginx -t &>/dev/null; then sudo systemctl reload nginx || true @@ -90,7 +89,7 @@ STOCK echo "status: $status" assert_failure - sudo mv /etc/nginx/sites-enabled/default.bats-stub /etc/nginx/sites-enabled/default.bats-stub.dokku-disabled + sudo rm -f /etc/nginx/sites-enabled/default.bats-stub run /bin/bash -c "sudo nginx -t" echo "output: $output"