You have a third service sitting in between GitHub and your server that clones your repository and deploys (can also test) to any of your servers. This is helpful when you deploy to multiple servers or have some more complicated steps involved. You separate the concerns which makes maintenance easier.
You can use a self-hosted or SaaS solution for that. Jenkins would come to mind as a great self-hosted solution, Hosted solutions would be:
Codeship
Deployhq
Cloudbees
SemaPhoreApp
CircleCI
and My Choice https://hitandfut.deploybot.com/