Update the upgrade script & instructions to use a virtual environment

This commit is contained in:
Jeremy Stretch
2020-02-26 13:54:07 -05:00
parent 1b64f67f2b
commit 0851b97ba5
5 changed files with 55 additions and 49 deletions

View File

@@ -1,52 +1,50 @@
#!/bin/bash
# This script will prepare NetBox to run after the code has been upgraded to
# its most recent release.
#
# Once the script completes, remember to restart the WSGI service (e.g.
# gunicorn or uWSGI).
cd "$(dirname "$0")"
VIRTUALENV="$(pwd -P)/venv"
PYTHON="python3"
PIP="pip3"
# Remove the existing virtual environment (if any)
if [ -d "$VIRTUALENV" ]; then
COMMAND="rm -rf ${VIRTUALENV}"
echo "Removing old virtual environment..."
eval $COMMAND
fi
# Uninstall any Python packages which are no longer needed
COMMAND="${PIP} uninstall -r old_requirements.txt -y"
echo "Removing old Python packages ($COMMAND)..."
# Create a new virtual environment
COMMAND="/usr/bin/python3 -m venv ${VIRTUALENV}"
echo "Creating a new virtual environment at ${VIRTUALENV}..."
eval $COMMAND
# Install any new Python packages
COMMAND="${PIP} install -r requirements.txt --upgrade"
echo "Updating required Python packages ($COMMAND)..."
eval $COMMAND
# Activate the virtual environment
source "${VIRTUALENV}/bin/activate"
# Validate Python dependencies
COMMAND="${PIP} check"
echo "Validating Python dependencies ($COMMAND)..."
eval $COMMAND || (
echo "******** PLEASE FIX THE DEPENDENCIES BEFORE CONTINUING ********"
echo "* Manually install newer version(s) of the highlighted packages"
echo "* so that 'pip3 check' passes. For more information see:"
echo "* https://github.com/pypa/pip/issues/988"
exit 1
)
# Install Python packages
COMMAND="pip3 install -r requirements.txt"
echo "Installing Python packages ($COMMAND)..."
eval $COMMAND
# Apply any database migrations
COMMAND="${PYTHON} netbox/manage.py migrate"
COMMAND="python3 netbox/manage.py migrate"
echo "Applying database migrations ($COMMAND)..."
eval $COMMAND
# Delete any stale content types
COMMAND="${PYTHON} netbox/manage.py remove_stale_contenttypes --no-input"
echo "Removing stale content types ($COMMAND)..."
eval $COMMAND
# Collect static files
COMMAND="${PYTHON} netbox/manage.py collectstatic --no-input"
COMMAND="python3 netbox/manage.py collectstatic --no-input"
echo "Collecting static files ($COMMAND)..."
eval $COMMAND
# Delete any stale content types
COMMAND="python3 netbox/manage.py remove_stale_contenttypes --no-input"
echo "Removing stale content types ($COMMAND)..."
eval $COMMAND
# Clear all cached data
COMMAND="${PYTHON} netbox/manage.py invalidate all"
COMMAND="python3 netbox/manage.py invalidate all"
echo "Clearing cache data ($COMMAND)..."
eval $COMMAND
echo "Upgrade complete! Don't forget to restart the NetBox services:"
echo " sudo systemctl restart netbox"
echo " sudo systemctl restart netbox-rq"