Tools and Methods for Deploying Websites/Web Projects
Deploying a website means moving a website from a local environment to a live server so that your website can be viewed online. This task may sound simple, but depending on your web project, the process can also be complex.
There are several ways to deploy a website. Some methods are old, while some are new and others are improvements of the old and new. This can make it difficult to choose a standard good practice, because everyone will use the method that they prefer, whether old or new.
Generally, the more common methods range from:
- Direct edits on the live server
- 3rd party deployment web services like beanstalk
- Command line tools
This article will go through some of the methods as well as highlight some of the features that make one method better than the others and when it is preferable to use such a method.
Whichever method you choose to employ, there are some practices that you should endeavor to adhere to in order to have a flawless process without much problem.
Creating a ReadMe file
Your first step should be to create a ReadMe file in the root folder for your website or web project. This file contains information about the website/web project and anything else that anyone who has no background of the website/web project should know. It should preferably be written in plain text.
Where they are relevant, this readme file should contain these 5 key sections:
- Introduction: This section should briefly describe the purpose of the website/web project, which it is for and anything else relevant at an introductory level.
- Dependencies: In this section, include the dependencies that the website/web project requires to function properly including the versions. Mention if they are to be installed separately or not.
- Local development setup: This is the main section of the readme that has all information required to get the website/web project to work as it should.
- Configuration: These details all the information required to fully configure the website/web project. If environmental variables are required, mention what each variable does.
- Deploy: This section should detail how to deploy changes onto the staging and production environments.
This read me file should be written in a fashion to assume that the reader has only a basic understanding of the environments that it details about. It should be able to give a person who is fresh to the website/web project an understanding of the 5 key sections mentioned above.
As you take your website/web project live, you want to take into consideration:
- Version control: This involves managing how changes to files, documents and folders will be handled. It involves keeping all files that you will want to change in a repository folder or location either locally, but more often externally. Git is now the most common version control tool.
The different ways of website deployment include the following:
- Direct editing from the live server
With this method, once the files are uploaded to the live server, any changes to the website/web project are made real-time. This means that, as you make changes, the website/web project changes for everyone using the website/web project immediately.
You could use an FTP editor like Adobe Dreamweaver to make these edits on the live server. With this method, the deployment stage is cut out of the procedure. This means that you lose the benefits of deployment.
The disadvantages of this method are:
- There is no record of who makes changes, what and when changes are made.
- You cannot undo changes.
- Working with teams is difficult if changes are to be made.
- Using FTP the old fashioned way
With this method, you work on the files locally and when you finish, you deploy the files for the website/web project to the live server using ftp software. This method is very prone to errors especially if the files are not uploaded correctly to the live server.
Unlike ftp deployments, the deployment tools mentioned below are meant to manage the correct version of documents for publishing as well as manage the deployment process.
- 3rd party deployment services
These are full software’s or apps meant to help or automate the deployment process. These deployment services make good use of version control or revision control tools.
The popular tool for this is currently Beanstalk, but several other good ones exist such as:
- Command line tools
These are deployment tools where you get to type commands or instructions into a terminal. Examples include;
The advantage of these tools is that they are very light in terms of file size, they can be very powerful in their productivity and they are usually very fast and efficient in the execution of tasks.
- Deploying static sites
This certainly makes it easier to deploy than websites/web projects that have more complex elements. The more common static deployment tools include:
- Amazon S3
- GitHub pages
- Hosting, server management, and database companies
These are companies that simplify the hosting, server management and database process. The companies are often called Paas or Platforms as a service. They handle each deployment as a project package.
Examples here include:
- Engine yard
There are many more methods of deployment of website/web project. This article is not meant to be an exhaustive list, but the makings of a sort of map to guide you through the terrain of website/web project deployment.
You will also find that each project may better utilize one method as opposed to another. The important thing is to explore yourself and find out what suits you best.
Jack Dawson is a web developer and UI/UX specialist at BigDropInc.com. He works at a design, branding and marketing firm, having founded the same firm 9 years ago. He likes to share knowledge and points of view with other developers and consumers on platforms.