Introduction to Setting up a Linux Server in the Cloud

There are a couple of relatively big challenges for a novice programmer in deploying a Web Application. Among these is deploying your application to a production environment. There are many hosting options that offer Cpanel-style hosting which looks to hide the nuts and bolts of the server from a novice user. This kind of hosting still has a learning curve but the reality is that time invested in learning CPanel is a missed opportunity to get an introduction to Linux servers. Linux servers offer the user total control over the environment, unmatched performance, and an incredible range of free open-source server-side software.

The modern world of Linux dependency package management systems such as apt and yum makes it very easy to install whatever components and applications you need to deploy your application. Nearly all modern hosted systems rely on some flavour of Linux which makes it a very important aspect of any full-stack developer's skill set.

In the first step, we will set up an environment and the ability to use ssh to log in to that environment. To allow Laravel to run we will need to set up a web server, (in this case, we'll use Apache) and a Database(MySQL). Nginx is also a viable option to use as a web server.

To deploy the application we will need to create our database on the server. For this, we will use the web-based SQL client phpmyadmin. Finally, to deploy the code itself, we will use git. The git version control system has become the de-facto standard in version control. For someone involved in education, de facto standards are great. They remove the significant challenge of deciding which technologies are the most relevant and important to teach at any given time.

There are very many options to choose from when looking to set up a server. These days rather than having an actual physical server you have the option of using a Virtual Machine. VMs are commonly referred to as Virtual Private Servers(VPS) by hosting providers.

There are many options when choosing a VM/VPS provider from the big players such as Microsoft Azure, and Amazon Web Services. While these offerings are extremely good they are generally geared toward more corporate requirements. They have a dizzying array of offerings from container-based scale-able hosting to big data analytics services.

For this guide, we will use Digital Ocean and Vultr. These are large-scale hosting providers that offer affordable, simple VPS that are easy to set up and run. In addition, Digital Ocean has a large and vibrant community that has a wide range of learning resources and articles.