Over at Hexapod Systems you may notice something new when you go to purchase a machine. You can select the software you'd like when you order your PC and their backend will automate the installation of that software Ninite Pro before they ship your machine.
We were able to develop this new feature for them by creating a custom Wordpress plugin that cooperates with Woocommerce. The plugin has to discriminate that it's only displaying the option to Customize only on products that happen to be computers, instead of say their monitor mounts. We then modified their orders backend to be able to accept these customizations. When they build your system to order, they'll automatically install Windows only with the software you selected on the site.
It was a fun and unique project, and this is the kind of innovation we love to see on the Web
The obviously the best solution for every site, but for some small weekend projects on a VPS, it's pretty useful, and enforces usage of Git, too.
First make your public dir in your project folder. Make sure by default your web server isn't serving your entire project folder.
Then start your git repository.
git init git add . git commit -m'initial'
Now it's time to create the staging area. git-new-workdir is the command we're using for that. Problem is, on Ubuntu it's a little more hidden
bash git-new-workdir /var/www/[PROJECT]/public /var/www/[PROJECT]/beta
Check out your new beta/ folder with the contents of the public dir! It has to be a separate branch, though.
git branch beta git checkout beta
Work on the private version of your site, committing often. When you're ready to show it off, just push it to the Master branch.