Report this

What is the reason for this report?

Whats the best way to update my Django site on DigitalOcean?

Posted on November 16, 2016

I have a basic website that I have in Git, recently I created an Ubuntu droplet here on DO and then cloned my site from git in the new server and finished setting it up running on Nginx.

I have since then made changes to my site locally and pushed the changes to git, what is the best way to update the site on DO now? Should I clone it again from git or upload via ftp or is there another solution?

thank you



This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Either option would work. I would recommend using a git pull to pull the updates to your master branch since this will also clean up any files that have been removed. Using FTP/SFTP would simply copy the new files over the old and would not handle deletions.

If you wanted to take things a step further you could add a script to your site that acts as a webhook. With this in place, merging your changes into the master branch on github could kick off a git pull on your server and keep your live site in sync with the master branch of your git repository.

I’ve written a bash script that does it, given that we do not have any changes on server. Feel free to add/comment on improvements:

APP_NAME = Name of Application to display APP_FOLDER = Django project’s GIT root folder

Make sure to give Execute permissions on this script: chmod 777 /home/django/update_app.sh

#!/bin/bash
echo 'Updating <APP_NAME>...'
cd /home/django/<APP_FOLDER>/
source venv/bin/activate

if [ -z "$(git status --untracked-files=no --porcelain)" ]; then 

  if git pull origin master; then
    echo 'GIT PULL completed'
  else
    echo 'GIT PULL failed: exiting program.'
    exit
  fi

  echo 'Upgrading DB to latest...'
  export DJANGO_SETTINGS_MODULE=<APP>.settings-prod
  python3 manage.py migrate

  echo 'Restarting servers...'
  sudo systemctl daemon-reload
  sudo service gunicorn restart
  sudo service nginx restart
else
  echo 'There are modified files. Aborting update process..'
fi
echo 'Finished updating.'

i am using the git pull origin master command but it isn’t updating my python files like views, forms etc. All other files like html files are updated

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.