upgrade.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/bin/bash
  2. # This script will prepare NetBox to run after the code has been upgraded to
  3. # its most recent release.
  4. cd "$(dirname "$0")"
  5. VIRTUALENV="$(pwd -P)/venv"
  6. # Remove the existing virtual environment (if any)
  7. if [ -d "$VIRTUALENV" ]; then
  8. COMMAND="rm -rf ${VIRTUALENV}"
  9. echo "Removing old virtual environment..."
  10. eval $COMMAND
  11. else
  12. WARN_MISSING_VENV=1
  13. fi
  14. # Create a new virtual environment
  15. COMMAND="/usr/bin/python3 -m venv ${VIRTUALENV}"
  16. echo "Creating a new virtual environment at ${VIRTUALENV}..."
  17. eval $COMMAND || (
  18. echo "Failed to create the virtual environment. Check that you have the"
  19. echo "required system packages installed."
  20. exit 1
  21. )
  22. # Activate the virtual environment
  23. source "${VIRTUALENV}/bin/activate"
  24. # Install Python packages
  25. COMMAND="pip3 install -r requirements.txt"
  26. echo "Installing Python packages ($COMMAND)..."
  27. eval $COMMAND
  28. # Apply any database migrations
  29. COMMAND="python3 netbox/manage.py migrate"
  30. echo "Applying database migrations ($COMMAND)..."
  31. eval $COMMAND
  32. # Collect static files
  33. COMMAND="python3 netbox/manage.py collectstatic --no-input"
  34. echo "Collecting static files ($COMMAND)..."
  35. eval $COMMAND
  36. # Delete any stale content types
  37. COMMAND="python3 netbox/manage.py remove_stale_contenttypes --no-input"
  38. echo "Removing stale content types ($COMMAND)..."
  39. eval $COMMAND
  40. # Clear all cached data
  41. COMMAND="python3 netbox/manage.py invalidate all"
  42. echo "Clearing cache data ($COMMAND)..."
  43. eval $COMMAND
  44. if [ WARN_MISSING_VENV ]; then
  45. echo "No existing virtual environment was detected. A new one has been"
  46. echo "created. Update your systemd service files to reflect the new"
  47. echo "executables."
  48. echo " Python: ${VIRTUALENV}/bin/python"
  49. echo " gunicorn: ${VIRTUALENV}/bin/gunicorn"
  50. fi
  51. echo "Upgrade complete! Don't forget to restart the NetBox services:"
  52. echo " sudo systemctl restart netbox netbox-rq"