Why can't I upload files directly into my website?

Because our servers are set up for security first. You have "sudo" privileges, so you can pretty much do anything you like from a terminal session, but we prefer to keep the web server's folders locked down so only the web server can directly manipulate their contents.

So how to get around this?

Well the simplest way is to order a Jenkins continous integration job from us, which will do deployment of files for you. Then, for the most part, you won't need to worry about uploading files at all.

Firstly, upload your files to your home directory. You could do this with an FTP client that supports SFTP, or you could use a local command like this:

rsync -avvz /path/to/my/site/ username@server.codeenigma.com:~/site/

(Note, it can be quicker, when you are moving lots of smaller files, to use `rsync -az` and drop the 'vv'.)

Once the files are on your server, you can open a terminal window and SSH connect to your server. Once you are logged in, you can run a command like this:

sudo rsync -avvz ~/site/ /var/www/mysite/

Remember, your sudo password is the password you set on your Code Enigma account.

You'll then want to set the correct file ownership and permissions:

sudo chown -Rf www-data:www-data /var/www/mysite/
sudo chmod -Rf 755 /var/www/mysite/

You just made the folder and all its contents belong to the web server user and also made them readable and writeable for the web server, but read only for any other user.