Question

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

Posted November 16, 2016 5.7k views
DjangoUbuntu 16.04

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

1 comment
  • I use git pull to update the site. But the problem is with the pycache. If i run migrations on my localserver to test the changes i made and than pull the changes in the server, it creates difficulty in running migrations.

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.

×
4 answers

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 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

[deleted]

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:

APPNAME = 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.'
Submit an Answer