Create, setup and deploy to your own cloud web server.
Tags: tech, html, deployment, webhosting
Published: 2018-01-22 16:29:07

---
title: "Create, setup and deploy to your own cloud web server."
published: true
tags: tech,html,deployment,web-hosting
canonical_url: https://medium.com/@davedodea/create-setup-and-deploy-your-own-cloud-web-server-60a2ce465d02
---

![](https://cdn-images-1.medium.com/max/800/1*-QWxPhugmlBm79nuBawfZw.png)

For when you want to make everything you learn on [Free Code Camp](http://freecodecamp.com) visible to the big bad world&nbsp;!

**_NOTE:_** _This is a complete, all-in-one version of this_ [_series_](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)_, hence its&nbsp;length._

Let’s break the task into 5 smaller&nbsp;pieces:

1. _Create a server_ **_← You are here&nbsp;!_**

_2._ [_Setup the&nbsp;server._](https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866)

_3._[_Install the LAMP&nbsp;stack_](https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b)_._

_4._ [_Setup a domain name (for example www.myDomain.com)._](https://medium.com/@davedodea/setup-a-domain-name-for-a-new-website-or-server-b0c1f76397a3)

_5._ [_Getting files on the&nbsp;server._](https://medium.com/@davedodea/how-to-deploy-my-website-to-a-server-b9d63da5fa34)

### Why&nbsp;?

For me, the decision to set up my own web server boiled down to three reasons:  
1.&nbsp;Price:

- As you will see, paying for a VPS (virtual private server), costs a fraction of a managed, hosted offering.

2. Control:

- Setting up your own server allows you to control all facets of the server and how it operates, right down to the command line&nbsp;level.

3. Learning:

- If you are reading this article it means you are most likely interested in learning more about web development. Servers are an integral part this technology, therefore, setting up and running your own web server will provide you with invaluable skills.

### How&nbsp;?

![](https://cdn-images-1.medium.com/max/354/1*97w3CB0GxLVAy1wl1Gw9lQ.png)<figcaption><a href="https://digitalocean.com">DigitalOcean.</a></figcaption>

- You will be using a service called DigitalOcean to host our server. DigitalOcean offer very competitive pricing for everything from basic servers to high-memory computing engines.
- Their $5 a month droplet (droplet = server in DigitalOcean parlance) will be more than sufficient for our needs. It comes with 512mb RAM and 20Gb SSD&nbsp;storage.
- You can get a $10 (two months for free) using [this link&nbsp;here](https://m.do.co/c/5ff60a2d6040).

Once you’ve made an account on DO (DigitalOcean)using the link above, go to your dashboard, click on the green **Create Droplet** &nbsp;button.

![](https://cdn-images-1.medium.com/max/1024/1*7ov0n53u7UtjuRdjLTJ7dQ.png)

- On the next page, select the following options as I have in the images. You will be using the most up-to-date, stable version of Ubuntu server as our operating system.

![](https://cdn-images-1.medium.com/max/1024/1*5beZumJMrzCQLBC0tHgAvA.png)

- Lets ignore the **Block Storage** option (I’ll be doing an article on this later) for&nbsp;now.
- Select a **Region** which is closest, geographically, to&nbsp;you:

![](https://cdn-images-1.medium.com/max/1024/1*0ZnHmYoUEFfTtIcp294U6w.png)

- No need to select any **Additional options** at this&nbsp;time.
- Now, the next step regarding SSH provides an extra layer of authentication security for your server. I do advise setting this up, however, I believe it is outside the scope of this introduction article and deserves its own dedicated post so I’ll cover this at a later date. For now, leave these options unchecked.
- Go ahead and select how many servers you need, 1 is fine for us today. Then, name your server for example‘ myFirstServer ’ or whatever other name you&nbsp;wish_._

![](https://cdn-images-1.medium.com/max/855/1*QjiDIT8Do9RLw0zcm3POOA.png)

- After you click on **Create** , it will take DO less than a minute to build your server out for you — amazing&nbsp;!

![](https://cdn-images-1.medium.com/max/815/1*agFH9hAlr6-XFKVrE_J5GQ.png)

- Soon after, you will receive an email with the credentials for your new&nbsp;server.

![](https://cdn-images-1.medium.com/max/473/1*dT3DRr97vrauDHMc56LC1g.png)

.. and that is that. Well done! You’ve just created a new Virtual Private Server or Droplet on the DigitalOcean platform — clap yourself on the&nbsp;back.

_Next up, you will set up your new server here&nbsp;, by logging in remotely, setting up users and completing some basic security steps&nbsp;!_

### Set up a new Ubuntu server for the first&nbsp;time.

![](https://cdn-images-1.medium.com/max/540/1*lJOKfP8JH4yn2xLWqMNapw.png)

This is part 2 in “[How to set up your own cloud based web&nbsp;server](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)”

1. [_Create a&nbsp;server._](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)

_2. Setup the server_ **_← You are here&nbsp;!_**

_3._[_Install the LAMP&nbsp;stack_](https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b)_._

_4._ [_Setup a domain name (for example www.myDomain.com)._](https://medium.com/@davedodea/setup-a-domain-name-for-a-new-website-or-server-b0c1f76397a3)

_5._ [_Getting files on the&nbsp;server._](https://medium.com/@davedodea/how-to-deploy-my-website-to-a-server-b9d63da5fa34)

So, now that you have [created your server](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a) or droplet on [DigitalOcean](https://m.do.co/c/5ff60a2d6040) — lets go ahead and go through some basic setup steps in preparation for launching our website for the first time&nbsp;!

After you created our droplet in step 1 above, you would have received some credentials via email which would have included details such as our droplet’s name, IP address and password.

In order to connect to your server you will need to use [SSH](https://en.wikipedia.org/wiki/Secure_Shell) — a protocol which enables you to remotely log in to the command line of your new&nbsp;server.

> **MacOS devices** (which I use)each come with a built-in application called _Terminal_ which provides native SSH capability, you’ll find in your applications directory.> **Windows users** , unfortunately, don’t have such a luxury. So there are a couple of options, one of the most popular being PUTTY — an SSH and TELNET client for Windows. You can read more about getting [PUTTY set up he_re_](https://mediatemple.net/community/products/dv/204404604/using-ssh-in-putty-)_&nbsp;._> _The rest of the screenshots will be from my Mac, but the steps are identical, once you get logged into your server if you are using&nbsp;PUTTY._

Ok, lets start issuing some commands (I have left my server IP visible as I will be destroying it after writing this, but I advise you not to share it online for security purposes):

1. To connect to your&nbsp;server:

```
ssh root@yourServersIP
```

You will see something similar to, type ‘ _yes&nbsp;’_:

![](https://cdn-images-1.medium.com/max/733/1*CzDb7ts2TxkcSj1yO0J5FA.png)

After typing ‘ yes ’ — you should paste in your password, this will not appear on the screen, so don’t worry — just paste (CMD + V) and hit&nbsp;return.

You will then be logged in to your server and see the following:

![](https://cdn-images-1.medium.com/max/805/1*gLzil4VZ4sfMlcY3olz03w.png)

Paste, again, your password, hit return and you will be prompted to enter a new password and confirm&nbsp;it:

![](https://cdn-images-1.medium.com/max/771/1*yzbm8bP5pzqmysYzleBgWA.png)

Great, you are now logged in, lets get cracking&nbsp;!

2. The current user, root&nbsp;, has unrestricted privileges to do whatever they wish on our system. You want to restrict this potential for disaster by creating a new&nbsp;user.

In our command line, lets&nbsp;type:

```
adduser newUser
```

You can add this new user to the group of users who have admin privileges — _sudo&nbsp;._ Users in this group may execute restricted tasks after entering their admin password.

```
usermod -aG sudo newUser
```

3. Don’t close the current connection just yet — instead open a new tab in your command line and try to login&nbsp;with:

```
ssh newUser@yourServerIP
```

If you can log in, great! — if not, please go back over step 2&nbsp;above.

After completing the above steps, you will now be able to log on as your new user, instead of&nbsp;root.

Now, this would be a good time to beef up our security and add SSH key pairs on both our local machine and server, I am going to cover this in a future post on server security, which will also include other topics such as disabling root login, setting up firewalls etc. — so as to keep this post&nbsp;concise.

… so, awesome — you’ve no successfully logged in remotely to your server, set up a new&nbsp;user.

_Next up, you are going to run through how to install the LAMP stack, the technology which will serve our webpages to our site visitors&nbsp;!_

### How to install the LAMP stack on a new&nbsp;server.

![](https://cdn-images-1.medium.com/max/492/1*TR4kKlINtbPDrQ3ffyem0g.png)

This is part 3 in “[How to set up your own cloud based web&nbsp;server](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)”

1. [_Create a&nbsp;server._](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)

_2._ [_Setup the&nbsp;server._](https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866)

_3. Install the LAMP stack_ **_← You are here&nbsp;!_**

_4._ [_Setup a domain name (for example www.myDomain.com)._](https://medium.com/@davedodea/setup-a-domain-name-for-a-new-website-or-server-b0c1f76397a3)

_5._ [_Getting files on the&nbsp;server._](https://medium.com/@davedodea/how-to-deploy-my-website-to-a-server-b9d63da5fa34)

OK, so far you are making great progress. You have [created a server](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a) and completed some [basic setup tasks](https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866).   
Now, how is the server going to know what to do with our code files- HTML, CSS, JavaScript etc once you upload them&nbsp;? I mean, at the moment, you have a bare-bones Ubuntu Linux server, it could be used for anything (almost), it isn’t set up to server up the webpages you have so lovingly developed&nbsp;!

To make this magic you are going to use an open source software stack (group of technologies which work together) called LAMP, which stands&nbsp;for:

- **L** inux: the operating system&nbsp;.
- **A** pache: the web server software&nbsp;.
- **M** ySQL: the databse&nbsp;.
- **P** HP: to serve dynamic&nbsp;content.

This will not be an in-depth lesson on each of the above topics, but more on how to get them working together in order to serve our&nbsp;website.

Lets get&nbsp;started:

1. **Apache:**

Once you have [logged in to our server](https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866) you can start issuing some commands, first lets update our server, and then install&nbsp;Apache:

```
sudo apt-get update

sudo apt-get install apache2
```

You will see something similar&nbsp;to:

![](https://cdn-images-1.medium.com/max/1024/1*qBOyMb63tELewxUg2TL2Hg.png)

Enter yes, hit return, and Apache will&nbsp;install.

You can at this stage actually verify if Apache has been installed correctly by visiting the IP address of your server, you should&nbsp;see:

![](https://cdn-images-1.medium.com/max/1024/1*GRMouL5-rmLG8X60Q8yBAg.png)

A quick way to display your _public_ IP&nbsp;is:

```
curl ipinfo.io/ip
```

**2. MySQL:**

Lets get&nbsp;started:

```
sudo apt-get install mysql-server
```

You will&nbsp;see:

![](https://cdn-images-1.medium.com/max/1024/1*7NUf6sCcmk8PGgwTp29gkw.png)

You can reply with yes, then hit return. Soon after the packages have been pulled in you will be asked for a MySQL admin password. Enter a password, then&nbsp;confirm:

![](https://cdn-images-1.medium.com/max/1024/1*wA9sbbaVx5vlt2_jX4El_A.png)

MySQL will continue through the installer.

Once, it has completed, you will need to create a database directory as&nbsp;follows:

```
sudo mysql_install_db
```

NOTE: on versions 5.7.6 and above, there is no need for this command. If you get an error similar&nbsp;to:

```
[WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
[ERROR] The data directory needs to be specified.
```

Then you can&nbsp;run:

```
mysqld --initialize
```

**3. PHP**

In Ubuntu 16.04, PHP is installed by default. However, if it is not/has been removed/has been deleted, you may install it&nbsp;via:

```
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
```

Now, you just need to edit one file to ensure that our web server, Apache in this case (NginX is another you will discuss in a future post), will look for&nbsp;._php_ files by&nbsp;default.

To edit files inside a linux server, there are a couple of options, namely [VI/VIM](https://en.wikipedia.org/wiki/Vim_(text_editor)) which is a great choice for the more experienced as it take a while to master, or even become productive in&nbsp;! Today, you shall use [Nano](https://en.wikipedia.org/wiki/Nano), it is beginner friendly and suits our needs just fine out of the&nbsp;box.

So, you are going to edit a file called _dir.conf&nbsp;_:

```
sudo nano /etc/apache2/mods-enabled/dir.conf
```

The file contents will look&nbsp;like:

![](https://cdn-images-1.medium.com/max/1024/1*Bc5-lB_BDkLI4lIUscR6rA.png)

This is _dir.conf_ opened in the Nano text-editor. What you need to do is to edit the second line so that _index.php_ is first in the list, and reads as&nbsp;follows:

```
<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
```

To save a file in Nano, press CTRL + X&nbsp;, then at the bottom of the editor you will be asked to confirm the save, type _Y&nbsp;:_

![](https://cdn-images-1.medium.com/max/1024/1*kXXGLhhSuU7R-a7Z4T7ZCg.png)

Then you will be asked to confirm/edit the file name, hit&nbsp;return:

![](https://cdn-images-1.medium.com/max/1024/1*OAbhezLcz9rtqWWVRISwFA.png)

Great, you’ve just edited a file in a server, with the command line and Nano — bad&nbsp;ass!

Now, all that is left to do is to restart the Apache service to make all our changes take&nbsp;effect:

```
sudo service apache2 restart
```

… and that is that&nbsp;! Great progress! You know have the LAMP stack installed and setup, ready to serve web&nbsp;pages.

_Next up, you going to briefly look at how to go about connecting your newly purchased domain to your droplet via DigitalOcean’s DNS section so that your visitors can access your site without the IP address&nbsp;!_

### Setup a domain name for a new website or&nbsp;server.

![](https://cdn-images-1.medium.com/max/613/1*VW3kmLc8H5LjwVPXPhm20g.png)

This is part 4 in “[How to set up your own cloud based web&nbsp;server](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)”

1. [_Create a&nbsp;server._](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)

_2._ [_Setup the&nbsp;server._](https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866)

_3._[_Install the LAMP&nbsp;stack_](https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b)_._

_4. Setup a domain name (for example_ [_www.myDomain.com)_](http://www.myDomain.com)) **_← You are here&nbsp;!_**

_5._ [_Getting files on the&nbsp;server._](https://medium.com/@davedodea/how-to-deploy-my-website-to-a-server-b9d63da5fa34)

At this point you are nearly finished this series. So far, you have learned how to c[_reate a server_](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)_&nbsp;, s_[_etup the server_](https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866) _and i_[_nstall the LAMP stack_](https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b)_&nbsp;._

You now have a website that responds to our public IP for the server.  
However, what you need to do is connect a domain name, for example, [www.myDomain.com](http://www.myDomain.com) to our server via [DNS](https://en.wikipedia.org/wiki/Domain_Name_System) settings on DigitalOcean’s dashboard.

Lets get stuck in&nbsp;…

1. **Purchase a&nbsp;domain:**

I won’t spend too long on this step as the process is fairly straight forward when using any of the big name providers. I like to use [GoDaddy.com](http://godaddy.com)simply because they are cheap and it straight forward to edit the DNS setting which you will need to do for the next step.  
Once you have purchased your domain, log into your GoDaddy account go to the section “Manage my domains”.

**2. Change DNS nameservers:**

Currently, our domain is being managed by GoDaddy’s name servers.   
DNS name servers simply work like this (at a high&nbsp;level):

- You enter a URL in your browser&nbsp;→
- The URL gets routed to the name server responsible for said URL&nbsp;→
- The name server looks up its own tables to see “… hey, who owns this URL/domain” →
- It then directs your browser to the relevant server IP attached to that&nbsp;domain.

So, with that in mind, lets change the name servers to DigitalOcean’s as this is where our server is&nbsp;located:

Now, select the dropdown menu beside your listed&nbsp;domain:

![](https://cdn-images-1.medium.com/max/1024/1*VzZrKrND8N8YELOLxvDTWQ.png)

Go to ‘ _Set Nameservers_ ’&nbsp;:

![](https://cdn-images-1.medium.com/max/1024/1*oMODYbyvgatOCf7LPLh9MA.png)

Click to edit the name servers and set them&nbsp;as:

- ns1.digitalocean.com
- ns2.digitalocean.com
- ns3.digitalocean.com

Make sure to&nbsp;save.

**3. Setup domain on DigitalOcean:**

At this point you will head over to your DO dashboard and go to the networking section:

![](https://cdn-images-1.medium.com/max/1024/1*weS1LwyERVgyW9Gdt_P-QQ.png)

Enter in your new domain name and click ‘ _Add domain_ ’&nbsp;.

Next you will enter the relevant records for your&nbsp;domain.

The most important for now being **A records.** These type of records allows us to point the IP of our server at our domain, and because DO is looking after our DNS name serving, our server will be what is returned to the&nbsp;user.

In the **HOSTNAME** section, enter ‘ **@ ’&nbsp;.** This means that whatever is entered before your domain, for&nbsp;example:

```
http://myDomain.com
```

… will be directed to your&nbsp;site.

In the **WILL DIRECT TO** section, select your droplet from the list. You may leave [**TTL**](https://en.wikipedia.org/wiki/Time_to_live) at its default value&nbsp;, hit ‘ Create Record&nbsp;’.

![](https://cdn-images-1.medium.com/max/1019/1*NPCQEIl7chjpvNo8r5xAzg.png)

In order to set a _wildcard_ for any **subdomain** entered before your domain, for&nbsp;example:

- blue.mydomain.com
- red.mydomain.com
- you get the idea&nbsp;…

… you need to set a **CNAME** record as&nbsp;follows:

![](https://cdn-images-1.medium.com/max/1007/1*kuxXeaDL5V3UvbgEgixL_g.png)

That is all you need for now — if you do need to add mail DNS records, for example Gmail — you can select **MX** and DigitalOcean actually has an automatic importer that you can use to set&nbsp;these:

![](https://cdn-images-1.medium.com/max/1024/1*WxdrejVjxQhyQiVgrgfcRA.png)

Once you are done, they records can take up to 24 hours to take effect, but in reality I have always only had to wait a few&nbsp;minutes.

You can test that you did everything correctly by firing up our terminal, on our local machine, and [pinging](https://en.wikipedia.org/wiki/Ping_(networking_utility)) our&nbsp;domain:

```
ping mydomain.com
```

or a sub-domain:

```
ping blue.mydomain.com
```

… you should get something back&nbsp;like:

![](https://cdn-images-1.medium.com/max/645/1*uxRLkqehsc-WshJKX82jow.png)

… not to mention, you should also be able to enter the the domain into your browser — awesome work&nbsp;!

_Next up, let’s figure out how to get the files transferred from our local machine and up onto our server so you can display our website in all its glory&nbsp;!_

### How to deploy a website to a web&nbsp;server.

![](https://cdn-images-1.medium.com/max/500/1*Jn2_sVoW9jWWH7QSbAnBdg.jpeg)

This is part 5 in “[How to set up your own cloud based web&nbsp;server](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)”

1. [_Create a&nbsp;server._](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)

_2._ [_Setup the&nbsp;server._](https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866)

_3._[_Install the LAMP&nbsp;stack_](https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b)_._

_4&nbsp;._[_Setup a domain name (for example www.myDomain.com)._](https://medium.com/@davedodea/setup-a-domain-name-for-a-new-website-or-server-b0c1f76397a3)

_5. Getting files on the server_ **_← You are here&nbsp;!_**

Wow, you are on the home stretch now. At this point you have the knowledge to be able to c[_reate a server_](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)_&nbsp;, s_[_etup the server_](https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866)_, i_[_nstall the LAMP stack_](https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b) _and s_[_etup a domain name_](https://medium.com/@davedodea/setup-a-domain-name-for-a-new-website-or-server-b0c1f76397a3)_&nbsp;._

The last piece of the puzzle is how you do you actually get them onto our web server. You could use an SFTP utility on our command line, but there is an easier, more beginner-friendly method.

You are going to use [FileZilla](https://filezilla-project.org/) which is a tool that basically uses the [SFTP](https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol)rotocol to securely send files from your local machine over the internet and up into your&nbsp;server.

1. **Download and install FileZilla:**

It can be downloaded from [here](https://filezilla-project.org/). You should download the client&nbsp;package:

![](https://cdn-images-1.medium.com/max/286/1*vayKdMeKsmVqlnvC59Ot5Q.png)

Once installed, open FileZilla and follow the following steps to connect your&nbsp;server:

**2. Connect to your&nbsp;server:**

- File \> Site manager (CMD + S)&nbsp;.
- Click new site from the options on the bottom left&nbsp;.
- Fill out all sections in the General tab with the authentication details for your&nbsp;server:

![](https://cdn-images-1.medium.com/max/397/1*o08vGGHzDGSRe0WCCg_U9Q.png)

**NOTE:** Ensure you select SFTP for _Protocol_&nbsp;.

- Click connect and you will see your site load in the right pane of FileZilla. The left pane shows your working, local directory on your local&nbsp;machine.

![](https://cdn-images-1.medium.com/max/640/1*r0FZRlb8UGNXAFU4TT_MaQ.png)

- In the _Remote site_ text-area, you will want to navigate&nbsp;to

```
/var/www
```

- Here you will find the _HTML_ directory/folder

**3. Upload website&nbsp;files:**

- Now at this point it is time to get those beautiful files full of code up onto your web&nbsp;server.
- If you don’t have a working website built, you can go&nbsp;[here](https://github.com/davedodea/startbootstrap-creative):

[davedodea/startbootstrap-creative](https://github.com/davedodea/startbootstrap-creative)

… to my GitHub page where I have left a sample website for you to&nbsp;use.

- If you know what to do with Git and GitHub, then pull down the repository into a directory on your local&nbsp;machine.
- Most likely you wont have much Git experience, that’s cool too, just go ahead and from the link above, find the green button saying ‘ _Clone / Download_ ’ and select ‘ _Download ZIP_&nbsp;’.

![](https://cdn-images-1.medium.com/max/1024/1*jY8HD3swNHS2L8JM-uJStA.png)

- Unzip the downloaded folder.
- Then, inside FileZilla once again, in the left pane, navigate into that folder as&nbsp;below:

![](https://cdn-images-1.medium.com/max/1024/1*CsZq93coQH7ABUh39WLuKA.png)

- You should see your local files on the left, remote server on the right&nbsp;.
- Now simply highlight the files/folders on the left and drag them over (or right-click and select upload) to the right side. It will take a moment or two, depending on the size of the&nbsp;upload.

### Once the upload is complete, thats it, you’ve done it! You now have a fully functioning website uploaded to your own web server hosted in the cloud.   
Awesome job&nbsp;!

If you browse to www.yourdomain.com you will see this (or whichever site you uploaded):

![](https://cdn-images-1.medium.com/max/1024/1*igvlABzQIOH6J_vu8ltl-Q.png)<figcaption><a href="https://startbootstrap.com/template-overviews/creative/">Credit.</a></figcaption>

So, to recap, these are the steps you went through in this series “[How to set up your own cloud based web&nbsp;server](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)”:

1. [_Create a&nbsp;server._](https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a)

_2._ [_Setup the&nbsp;server._](https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866)

_3._[_Install the LAMP&nbsp;stack_](https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b)_._

_4&nbsp;._[_Setup a domain name (for example www.myDomain.com)._](https://medium.com/@davedodea/setup-a-domain-name-for-a-new-website-or-server-b0c1f76397a3)

_5. Getting files on the server_ **_← You are here&nbsp;!_**

I really hope you enjoyed this series and I look forward to future posts about topics that I mentioned throughout such as secure key authentication, further enhancements and server monitoring.

If you have any questions or additions to make, please let me know in the comments below or get in touch on&nbsp;[Twitter](https://twitter.com/DaveDODea).

~ Dave.

[Dave O'Dea (@DaveDODea) | Twitter](https://twitter.com/DaveDODea)