I'm sure that you'll get many opinions, but:
I've had success with git, presuming that filesystem space is not very tight on the remote server. You arrange your deployment scripts to run on the remote (there are several tools to help with that, or for small scale operations, ssh in and run them directly. These scripts do a pull from your central git repository (if you've got that on something other than your development box, such as github, then your code and version history are now redundantly in 3 places, at least), and then check out the revision that has passed continuous integration (you will want to eventually) and code review (buddy up with someone in the same boat if need be - I don't care how good you are, a second set of eyes is a treasure). And if it bombs, or a problem shows up, rollback to the previous version is just another checkout, your typed commands being the only things that must cross the network. If you had migrations with the new version, you may have to run reverse migrations (a DB backup on the remote or DB server just before installing a update is a good idea).
As to the security of the user account on the server box, that depends on whether the user does anything else, and how automagically someone cracking your development box can leverage that into access on the server. Worse that having stuff in a random user account also used for other things is having this stuff under root. It means that you have to get into root way too often, and also a bug that tries to blow things away has the root access to do it. I've often deployed with apache, and made the /www directory belong to apache. Nothing there is served by apache except by being explicitly listed in the apache configuration, such as directories for CSS and js that are populated by running django's collectstatic management command, which your scripts should run, among other things, after checkout of a different revision.. The project directory and probably a venv directory are there for convenience, but can't be served by apache. I presume that Nginx is similarly competent. It was used at a few places I worked, but I didn't have to deploy it, so I've not learned the details.
Bill