course when you register on learnphalcon
The examples on this site are currently tested to work on Phalcon V3.4 and Phalcon Devtools V3.2 Some issues may arise when using later versions.

Please get in touch or post a comment below the post if you encounter a problem.

There are a couple of relatively big challenges for a novice programmer in working with Phalcon. The first is getting the Phalcon extension installed and working. Hopefully this challenge was addressed and made easier in the first section. The other main challenge is deploying your application to a production environment. Installing the phalcon extension requires a level of control over your environment not normally offered by entry level hosting. Over the years there have been a number of hosts that offer cpanel style hosting with the Phalcon extension installed but there aren't really enough of this kind of offering to make it a reliable option.

This means that a developer looking to deploy a Phalcon application needs to set up and use a Linux host. This might be a little bit daunting for people unfamiliar with Linux but people shouldn't be put off. This is a great opportunity to get started with Linux. The modern world of Linux dependency package management systems such as apt and yum makes it very easy to install whatever components an 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 login to that environment. To allow Phalcon run we will need to set-up a web server, (in this case we'll use Apache) a Database(MySQL) and the Phalcon extension itself.

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 the purposes of this guide I will use Digital Ocean. This is a large-scale host which offers 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.