Advanced Difficulty Level

This section is very advanced, so be prepared to learn a lot of stuff if you want to do any of this.

Before continuing, you should learn how to use command line interfaces (CLIs), also called shells. Which one you use will depend on which operating systems you are using. Web servers most frequently use Linux, so you will need to learn that no matter what. Fortunately for Mac users, OS X uses essentially the same command line interface as Linux with a few minor differences. Windows is a little different since PowerShell is now the preferred CLI, but you can install bash or another Unix/Linux style shell in Windows if you want.

Here are some resources that will help:

Install Node.js and a Database Server on Your Desktop or Laptop

You can install Node.js on your Windows, Mac, or Linux computer, run applications from the command line, and use your browser to view them. This is useful for developing and testing your code offline until you're ready to deploy (upload) it.

It is also possible to install Apache, PHP, python, ruby, and other languages with web application frameworks on your local computer for purposes of learning and testing.

If you haven't already then you may want to install a database such as MySQL or PostgreSQL on your local computer. See above for links to some free database software.

Get a Free Containerized Cloud Hosting Account at Heroku

Now that you know the CLI and know some things about both server-side scripting and databases, you might want to try out containerized cloud computing services. There is one that allows you to use Node.js and PostgreSQL for free called Heroku and what they give you for free is pretty impressive.

You will need to know how to use the CLI on your local computer because it's pretty much impossible to use Heroku without the CLI, but they have excellent step-by-step tutorials on how to deploy and manage applications on their service. You will also need to learn to use Git from the command line.

Heroku is a PaaS (Platform as a Service) type service which doesn't offer you true virtual machines like an IaaS (Infrastructure as a Service) type service. So don't expect to be able to upload your own virtual machine images.

Experiment With Local Virtual Servers

You can simulate an IaaS cloud hosting server on your local computer using free virtual machine software. This is helpful because it gets you used to using a virtual server the same way you would using a virtual server hosting service.

Download VirtualBox (Virtual Machine hypervisor) and run a virtual machine image installed with MEAN.JS for example. There are a lot of other virtual machine images that you can experiment with including LAMP images.

Once you have a virtual machine running, you will want to treat it like it's running on an unknown rack mount server in some unknown location where you will never see it, because this is the situation with actual virtual machine hosting services. In other words, you want to treat your VM like a "headless" machine (one with no monitor or keyboard).

To access and control your VM, you will need to use ssh which is a way to get a command line on remote computers and upload files. Hopefully your VM image has git installed on it already because the best practice for uploading changes to a site is to use git.

Virtual Web Server Hosting

These days most people are actually happy with CaaS (Container as a Service) and PaaS type services because they do almost everything one could want but are less trouble to deal with than full virtual machines. But, once you're familiar with virtual machine servers, you might want to create your own web site based on one and possibly run other types of servers on it such as game servers.

This is very advanced, so you will need to learn a lot about system administration and web devlopment before you can make good use of an environment like this. Get comfortable with running a virtual server on your own computer first. Here are some recommendations.

A virtual server hosting account running a LAMP (Linux, Apache, MySQL, PHP) installation will do pretty much anything that one could want, but it isn't much different than the free LAMP-based web hosting accounts mentioned above. The main advantage is that you will have command line access and can do whatever you want with the virtual server.

A virtual server hosting account running MEAN.JS provides an environment with MongoDB and Express.js plus Node.JS for server-side scripting. This is a little more sophisticated than the previous option but it entirely uses JavaScript so learning PHP isn't necessary. Learning the JavaScript frameworks (Express.js, Node.js, and Angular.js) is necessary though, and you can learn more about some of those on CodeAcademy. You can experiment with Node.js and Express.js at HyperDev.

Back: What to Do Next: IntermediateNext: Native Desktop and Mobile Apps