<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dave O'Dea</title>
    <description>The latest articles on DEV Community by Dave O'Dea (@davedodea).</description>
    <link>https://dev.to/davedodea</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F8547%2Fa979833b-26fb-4820-a970-49c8812f896c.jpg</url>
      <title>DEV Community: Dave O'Dea</title>
      <link>https://dev.to/davedodea</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/davedodea"/>
    <language>en</language>
    <item>
      <title>[ByteSize] RabbitMQ management UI and Nginx</title>
      <dc:creator>Dave O'Dea</dc:creator>
      <pubDate>Fri, 16 Oct 2020 15:37:14 +0000</pubDate>
      <link>https://dev.to/davedodea/bytesize-rabbitmq-management-ui-and-nginx-4ob9</link>
      <guid>https://dev.to/davedodea/bytesize-rabbitmq-management-ui-and-nginx-4ob9</guid>
      <description>&lt;p&gt;&lt;em&gt;I originally posted this article on my own site &lt;a href="https://daveodea.com"&gt;daveodea.com&lt;/a&gt; - stop by and say hi!&lt;/em&gt;😀&lt;/p&gt;




&lt;p&gt;Because of the nature of how RabbitMQ structures its API endpoints and for other reasons I won't get into here (hence Byte-size), I've previously struggled with getting the RabbitMQ management plugin UI available at a URL route controlled by Nginx. &lt;/p&gt;

&lt;p&gt;Hopefully, this will save you the same headaches I endured ...&lt;br&gt;
Of course, you'll want to make sure you have both RabbitMQ and Nginx installed on your system.&lt;/p&gt;

&lt;p&gt;Nginx configuration&lt;br&gt;
Let's  firstly setup our nginx.conf file:&lt;br&gt;
&lt;code&gt;sudo vim /etc/nginx/nginx.conf&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;upstream rabbitmq &lt;span class="o"&gt;{&lt;/span&gt;
        least_conn&lt;span class="p"&gt;;&lt;/span&gt;
        server localhost:15672 &lt;span class="nv"&gt;weight&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;10 &lt;span class="nv"&gt;max_fails&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3 &lt;span class="nv"&gt;fail_timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;30s&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, let's edit add location blocks for RabbitMQ:&lt;br&gt;
&lt;code&gt;sudo vim /etc/nginx/sites-enabled/default&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;location /rabbitmq/api/ &lt;span class="o"&gt;{&lt;/span&gt;
            rewrite ^ &lt;span class="nv"&gt;$request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            rewrite ^/rabbitmq/api/&lt;span class="o"&gt;(&lt;/span&gt;.&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; /api/&lt;span class="nv"&gt;$1&lt;/span&gt; &lt;span class="nb"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="k"&gt;return &lt;/span&gt;400&lt;span class="p"&gt;;&lt;/span&gt;
            proxy_pass http://rabbitmq&lt;span class="nv"&gt;$uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
        location /rabbitmq &lt;span class="o"&gt;{&lt;/span&gt;
            rewrite ^/rabbitmq&lt;span class="nv"&gt;$ &lt;/span&gt;/rabbitmq/ permanent&lt;span class="p"&gt;;&lt;/span&gt;
            rewrite ^/rabbitmq/&lt;span class="o"&gt;(&lt;/span&gt;.&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;/&lt;span class="nv"&gt;$1&lt;/span&gt; &lt;span class="nb"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            proxy_pass http://rabbitmq&lt;span class="p"&gt;;&lt;/span&gt;
            proxy_buffering                    off&lt;span class="p"&gt;;&lt;/span&gt;
            proxy_set_header Host              &lt;span class="nv"&gt;$http_host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            proxy_set_header X-Real-IP         &lt;span class="nv"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            proxy_set_header X-Forwarded-For   &lt;span class="nv"&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            proxy_set_header X-Forwarded-Proto &lt;span class="nv"&gt;$scheme&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reload your Nginx config:&lt;br&gt;
&lt;code&gt;nginx -s reload&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Ensure you have the RabbitMQ management plugin enabled:&lt;br&gt;
&lt;code&gt;rabbitmq-plugins enable rabbitmq_management&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, you can head over to &lt;a href="https://your-domain.com/rabbitmq/"&gt;https://your-domain.com/rabbitmq/&lt;/a&gt; and the RabbitMQ login screen will be available.&lt;/p&gt;

&lt;p&gt;Thank you for reading,️&lt;br&gt;
~ Dave&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Credit&lt;/em&gt;:&lt;br&gt;
Thanks to &lt;a href="https://gist.github.com/lukebakken"&gt;lukebakken&lt;/a&gt; for inspiration I got from their gist on Github, original &lt;a href="https://gist.github.com/lukebakken/a6bae4759979b37ad2e87d48b47aa02e"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>rabbitmq</category>
      <category>nginx</category>
    </item>
    <item>
      <title>I've launched my new personal website</title>
      <dc:creator>Dave O'Dea</dc:creator>
      <pubDate>Thu, 15 Oct 2020 14:45:04 +0000</pubDate>
      <link>https://dev.to/davedodea/i-ve-launched-my-new-personal-website-3dmf</link>
      <guid>https://dev.to/davedodea/i-ve-launched-my-new-personal-website-3dmf</guid>
      <description>&lt;p&gt;Hi, everyone! After much procrastination (🙂) - I've finally gotten around to updating my personal website &lt;a href="https://daveodea.com"&gt;daveodea.com&lt;/a&gt;. I've chosen to build atop the amazing Ghost platform.&lt;/p&gt;

&lt;p&gt;I've migrated some of my previous articles from both Dev.to and Medium. I also plan on returning to writing helpful content, more frequently!&lt;/p&gt;

&lt;p&gt;I'd really appreciate if you could drop by and check it out, maybe say hi - or even subscribe! 😀 Happy to hear your thoughts.&lt;/p&gt;

&lt;p&gt;Thank you all, stay awesome!&lt;/p&gt;

&lt;p&gt;~ Dave&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>career</category>
    </item>
    <item>
      <title>How to deploy a Python app to Heroku</title>
      <dc:creator>Dave O'Dea</dc:creator>
      <pubDate>Mon, 13 Aug 2018 12:01:36 +0000</pubDate>
      <link>https://dev.to/davedodea/how-to-deploy-a-python-app-toheroku-5djn</link>
      <guid>https://dev.to/davedodea/how-to-deploy-a-python-app-toheroku-5djn</guid>
      <description>&lt;h5&gt;
  
  
  This post is intended to help those learning Python. It will help you deploy your new app to the web so you can test and share it with others. Heroku's own instructions leave out a couple of steps for beginners and so this article gives you everything to get up and running.
&lt;/h5&gt;




&lt;h3&gt;
  
  
  Prerequisites:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Git, if you need help with this, check out my other article &lt;a href="https://medium.com/@davedodea/git-commands-you-need-to-git-going-b98adc42182e"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Sign up for a  &lt;a href="https://signup.heroku.com/signup/dc"&gt;Heroku account&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Python version &amp;gt; 3.6 installed on your machine.&lt;/li&gt;
&lt;li&gt;Pipenv installed: &lt;code&gt;pip install pipenv&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Heroku CLI:
&lt;/h3&gt;

&lt;p&gt;Install the Heroku CLI(command line interface) so that you can deploy/manage your apps/projects from the command line.&lt;br&gt;
&lt;code&gt;' $ ' preceeds commands to be entered in the terminal/shell&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MacOS: &lt;code&gt;$ brew install heroku/brew/heroku&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Windows: &lt;a href="https://cli-assets.heroku.com/heroku-x64.exe"&gt;Download installer&lt;/a&gt; .&lt;/li&gt;
&lt;li&gt;Ubuntu: &lt;code&gt;$ sudo snap install heroku --classic&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  Step 1:
&lt;/h4&gt;

&lt;p&gt;If you have a ready-to-use Python app, good and well! If not, let's use one that Heroku provide for testing purposes so we can learn the process:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$ git clone https://github.com/heroku/python-getting-started.git&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Move into the directory of your app or: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$ cd python-getting-started&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Install a web server called &lt;a href="http://gunicorn.org/"&gt;Gunicorn&lt;/a&gt; within your app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$ pip install gunicorn&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add your app requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$ pip freeze &amp;gt; requirements.txt&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Create a new file with the name: &lt;code&gt;Procfile&lt;/code&gt; no file extension. Read more on &lt;a href="https://devcenter.heroku.com/articles/procfile"&gt;Procfile&lt;/a&gt;.&lt;br&gt;
Add to the Procfile, for this particular app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$ web: gunicorn gettingstarted.wsgi&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your app will have a different setup i.e:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$ web: gunicorn app:app&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The above command tells Heroku to start the web server along with the module and application names.&lt;/p&gt;

&lt;p&gt;Install the requirements for your app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$ pip install -r requirements.txt&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now we can deploy our app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$ heroku create&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Push our code to Heroku:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$ git push heroku master&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may need to ensure that at least one instance of your app is up and live:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$ heroku ps:scale web=1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The URL where your app is lve will be displayed or else you can open it in your browser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$ heroku open&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you'd like to debug some issues, you can view the logs for your app in the CLI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$ heroku logs --tail&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Your app is now live on Heroku for you to test and share with others!
&lt;/h4&gt;

&lt;p&gt;If you have any questions or additions to make, please let me know in the comments below or get in touch on &lt;a href="https://twitter.com/DaveDODea"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;~ Dave.&lt;/p&gt;

</description>
      <category>heroku</category>
      <category>python</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Explain CSS BEM Structures Like I'm Five</title>
      <dc:creator>Dave O'Dea</dc:creator>
      <pubDate>Tue, 23 Jan 2018 21:20:01 +0000</pubDate>
      <link>https://dev.to/davedodea/case-bem-structures-e5m</link>
      <guid>https://dev.to/davedodea/case-bem-structures-e5m</guid>
      <description>&lt;p&gt;I)   What are they?&lt;br&gt;
II)  How and why are they used?&lt;br&gt;
III) What are some recommend resources for further learning?&lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Dave&lt;/p&gt;

</description>
      <category>explainlikeimfive</category>
    </item>
    <item>
      <title>Git — commands you need to git going!</title>
      <dc:creator>Dave O'Dea</dc:creator>
      <pubDate>Tue, 23 Jan 2018 16:08:07 +0000</pubDate>
      <link>https://dev.to/davedodea/git--commands-you-need-to-git-going-3mpg</link>
      <guid>https://dev.to/davedodea/git--commands-you-need-to-git-going-3mpg</guid>
      <description>&lt;p&gt;First off, let’s ensure git is installed — if not, check the relevant link below for your system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MacOS &lt;a href="https://git-scm.com/download/mac" rel="noopener noreferrer"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Windows &lt;a href="http://gitforwindows.org/" rel="noopener noreferrer"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Linux here &lt;a href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git" rel="noopener noreferrer"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the purposes of this post, I will be following a flow that you would most likely use for a &lt;em&gt;new&lt;/em&gt; repository, although some steps will be used for existing ones.&lt;/p&gt;

&lt;p&gt;Also, for other commands — for example when making a new directory, I will be using BASH shell commands. Here is a &lt;a href="https://courses.cs.washington.edu/courses/cse390a/14au/bash.html" rel="noopener noreferrer"&gt;handy reference for those&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Create a new repository:
&lt;/h4&gt;

&lt;p&gt;First of let’s make a new directory in which to keep our repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir newRepo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we'll move into that new directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd newRepo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We create this as a new git repository by issuing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  To clone an existing repository:
&lt;/h4&gt;

&lt;h4&gt;
  
  
  From a server i.e. GitHub:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/path/to/repository.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, to clone a bootstrap starter template from &lt;a href="https://github.com/BlackrockDigital/startbootstrap-creative" rel="noopener noreferrer"&gt;here&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/BlackrockDigital/startbootstrap-creative.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will look for the green button saying “Clone or download”:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fproxy%2F1%2Abb6So7Y0zC5tcqyZm3LZQg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fproxy%2F1%2Abb6So7Y0zC5tcqyZm3LZQg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or …&lt;/p&gt;

&lt;h4&gt;
  
  
  From an existing repository on your local machine:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone /path/to/repository
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Adding a file to git:
&lt;/h4&gt;

&lt;p&gt;Now that we have a repository set up, we need to add some files for git to track:&lt;/p&gt;

&lt;p&gt;add all new and modified/edited files in the directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, we asked git to add files, we then need to &lt;em&gt;commit&lt;/em&gt; those files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "add these changes" 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above command we are saying a couple of things:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit ... //commit the added files.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;... -m "add these changes" //-m will precede a message which will let people know what changes are included in this commit.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Pushing our commits/changes to the remote repository:
&lt;/h4&gt;

&lt;p&gt;Once we have &lt;em&gt;added&lt;/em&gt; then &lt;em&gt;commited&lt;/em&gt; our files , we now need send or &lt;em&gt;push&lt;/em&gt; those changes to our repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push origin master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above command are saying the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push ... //send our changes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;... origin ... //the location of our repository.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;... master //the _branch_ name, we will talk more about branches shortly.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Branches:
&lt;/h4&gt;

&lt;p&gt;Let’s say that you are building an app or project which may have several different features. Good practice is to split the app development into the separate features.&lt;/p&gt;

&lt;p&gt;Let’s imagine we are building an app and one of the features we need to code for may be the login system:&lt;/p&gt;

&lt;p&gt;With &lt;em&gt;git&lt;/em&gt; we can make a &lt;em&gt;new branch&lt;/em&gt; called &lt;em&gt;login&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout -b login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout //switch to the following branch name.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;... -b login //-b will precede the new branch name.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above command is actually a condensed one in the sense that it is actually &lt;em&gt;checking out&lt;/em&gt; and &lt;em&gt;creating a new&lt;/em&gt; branch in one pass.&lt;/p&gt;

&lt;p&gt;If we already had a branch created called &lt;em&gt;login&lt;/em&gt; we could switch to it simply by:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Pushing a branch:
&lt;/h4&gt;

&lt;p&gt;What we did above was simply make a &lt;em&gt;local&lt;/em&gt; branch. In order for it to be accessible to others, we will need to push it to our remote repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push origin login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Pulling:
&lt;/h4&gt;

&lt;p&gt;Let’s say we need to retrieve all the latest updates to our remote repository — for example if you and your team are working on the same project from different machines, another team member may have made some changes and you want to make sure you are up-to-date:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git pull // tells git to retrieve the latest version.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Merging:
&lt;/h4&gt;

&lt;p&gt;If we want to &lt;em&gt;merge&lt;/em&gt; or combine our commits made in our &lt;em&gt;login&lt;/em&gt; branch we made earlier into the &lt;em&gt;master&lt;/em&gt; working branch:&lt;/p&gt;

&lt;p&gt;Let’s first &lt;em&gt;checkout&lt;/em&gt; our &lt;em&gt;master&lt;/em&gt; branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we can merge the new branch with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git merge login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After issuing a merge command, the git system will merge the branches, but this is not always possible for git to achieve &lt;em&gt;automatically&lt;/em&gt; .&lt;/p&gt;

&lt;p&gt;If you need to resolve these conflicts yourself, there is an easy-to-follow guide &lt;a href="https://githowto.com/resolving_conflicts" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Undoing changes:
&lt;/h4&gt;

&lt;p&gt;You will most certainly face an occasion where you need to undo changes to the local repository — for example you want to remove changes you made to a file called &lt;em&gt;index.html&lt;/em&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout -- index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you would like to remove &lt;em&gt;all&lt;/em&gt; changes and revert back to the latest remote version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git fetch origin //get the latest remote version.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git reset --hard origin/master //remove all local changes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Helpful links:
&lt;/h4&gt;

&lt;p&gt;These are some worthy resources when you are comfortable exploring &lt;em&gt;further features&lt;/em&gt; (there are many) of git:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://rogerdudler.github.io/git-guide/" rel="noopener noreferrer"&gt;http://rogerdudler.github.io/git-guide/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/documentation" rel="noopener noreferrer"&gt;https://git-scm.com/documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://guides.github.com/introduction/git-handbook/" rel="noopener noreferrer"&gt;https://guides.github.com/introduction/git-handbook/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I will do further posts on more advanced features, but for now, that’s all folks …&lt;/p&gt;

&lt;p&gt;If you have any questions or additions to make, please let me know in the comments below or get in touch on &lt;a href="https://twitter.com/DaveDODea" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;~ Dave.&lt;/p&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>versioncontrol</category>
    </item>
    <item>
      <title>Hi, I'm Dave O'Dea</title>
      <dc:creator>Dave O'Dea</dc:creator>
      <pubDate>Tue, 30 May 2017 11:16:51 +0000</pubDate>
      <link>https://dev.to/davedodea/hi-im-dave-odea</link>
      <guid>https://dev.to/davedodea/hi-im-dave-odea</guid>
      <description>&lt;p&gt;I have been coding for 5 years.&lt;/p&gt;

&lt;p&gt;You can find me on Twitter as &lt;a href="https://twitter.com/DaveDODea" rel="noopener noreferrer"&gt;@DaveDODea&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I live in Galway, Ireland.&lt;/p&gt;

&lt;p&gt;I study Computer Science at NUI Galway University.&lt;/p&gt;

&lt;p&gt;I mostly program in these languages: JavaScript, Java.&lt;/p&gt;

&lt;p&gt;I am currently learning more about OOP foundations.&lt;/p&gt;

&lt;p&gt;Nice to meet you.&lt;/p&gt;

</description>
      <category>introduction</category>
    </item>
    <item>
      <title>Create, setup and deploy to your own cloud web server.</title>
      <dc:creator>Dave O'Dea</dc:creator>
      <pubDate>Sat, 22 Apr 2017 20:28:02 +0000</pubDate>
      <link>https://dev.to/davedodea/create-setup-and-deploy-to-your-own-cloud-web-server-ph</link>
      <guid>https://dev.to/davedodea/create-setup-and-deploy-to-your-own-cloud-web-server-ph</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2A-QWxPhugmlBm79nuBawfZw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F800%2F1%2A-QWxPhugmlBm79nuBawfZw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For when you want to make everything you learn on &lt;a href="http://freecodecamp.com" rel="noopener noreferrer"&gt;Free Code Camp&lt;/a&gt; visible to the big bad world !&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;NOTE:&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;This is a complete, all-in-one version of this&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;&lt;em&gt;series&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, hence its length.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s break the task into 5 smaller pieces:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;Create a server&lt;/em&gt; &lt;strong&gt;&lt;em&gt;← You are here !&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;2.&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866" rel="noopener noreferrer"&gt;&lt;em&gt;Setup the server.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3.&lt;/em&gt;&lt;a href="https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b" rel="noopener noreferrer"&gt;&lt;em&gt;Install the LAMP stack&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;4.&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/setup-a-domain-name-for-a-new-website-or-server-b0c1f76397a3" rel="noopener noreferrer"&gt;&lt;em&gt;Setup a domain name (for example www.myDomain.com).&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;5.&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/how-to-deploy-my-website-to-a-server-b9d63da5fa34" rel="noopener noreferrer"&gt;&lt;em&gt;Getting files on the server.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why ?
&lt;/h3&gt;

&lt;p&gt;For me, the decision to set up my own web server boiled down to three reasons:&lt;br&gt;&lt;br&gt;
1. Price:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As you will see, paying for a VPS (virtual private server), costs a fraction of a managed, hosted offering.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Control:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Setting up your own server allows you to control all facets of the server and how it operates, right down to the command line level.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Learning:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  How ?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F354%2F1%2A97w3CB0GxLVAy1wl1Gw9lQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F354%2F1%2A97w3CB0GxLVAy1wl1Gw9lQ.png"&gt;&lt;/a&gt;&lt;a href="https://digitalocean.com" rel="noopener noreferrer"&gt;DigitalOcean.&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;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 storage.&lt;/li&gt;
&lt;li&gt;You can get a $10 (two months for free) using &lt;a href="https://m.do.co/c/5ff60a2d6040" rel="noopener noreferrer"&gt;this link here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A7ov0n53u7UtjuRdjLTJ7dQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A7ov0n53u7UtjuRdjLTJ7dQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A5beZumJMrzCQLBC0tHgAvA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A5beZumJMrzCQLBC0tHgAvA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lets ignore the &lt;strong&gt;Block Storage&lt;/strong&gt; option (I’ll be doing an article on this later) for now.&lt;/li&gt;
&lt;li&gt;Select a &lt;strong&gt;Region&lt;/strong&gt; which is closest, geographically, to you:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A0ZnHmYoUEFfTtIcp294U6w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A0ZnHmYoUEFfTtIcp294U6w.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No need to select any &lt;strong&gt;Additional options&lt;/strong&gt; at this time.&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;li&gt;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 wish_._&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F855%2F1%2AQjiDIT8Do9RLw0zcm3POOA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F855%2F1%2AQjiDIT8Do9RLw0zcm3POOA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After you click on &lt;strong&gt;Create&lt;/strong&gt; , it will take DO less than a minute to build your server out for you — amazing !&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F815%2F1%2AagFH9hAlr6-XFKVrE_J5GQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F815%2F1%2AagFH9hAlr6-XFKVrE_J5GQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Soon after, you will receive an email with the credentials for your new server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F473%2F1%2AdT3DRr97vrauDHMc56LC1g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F473%2F1%2AdT3DRr97vrauDHMc56LC1g.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.. 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 back.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Next up, you will set up your new server here , by logging in remotely, setting up users and completing some basic security steps !&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Set up a new Ubuntu server for the first time.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F540%2F1%2AlJOKfP8JH4yn2xLWqMNapw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F540%2F1%2AlJOKfP8JH4yn2xLWqMNapw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is part 2 in “&lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;How to set up your own cloud based web server&lt;/a&gt;”&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;&lt;em&gt;Create a server.&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;2. Setup the server&lt;/em&gt; &lt;strong&gt;&lt;em&gt;← You are here !&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3.&lt;/em&gt;&lt;a href="https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b" rel="noopener noreferrer"&gt;&lt;em&gt;Install the LAMP stack&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;4.&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/setup-a-domain-name-for-a-new-website-or-server-b0c1f76397a3" rel="noopener noreferrer"&gt;&lt;em&gt;Setup a domain name (for example www.myDomain.com).&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;5.&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/how-to-deploy-my-website-to-a-server-b9d63da5fa34" rel="noopener noreferrer"&gt;&lt;em&gt;Getting files on the server.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;In order to connect to your server you will need to use &lt;a href="https://en.wikipedia.org/wiki/Secure_Shell" rel="noopener noreferrer"&gt;SSH&lt;/a&gt; — a protocol which enables you to remotely log in to the command line of your new server.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;MacOS devices&lt;/strong&gt; (which I use)each come with a built-in application called &lt;em&gt;Terminal&lt;/em&gt; which provides native SSH capability, you’ll find in your applications directory.&amp;gt; &lt;strong&gt;Windows users&lt;/strong&gt; , 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 &lt;a href="https://mediatemple.net/community/products/dv/204404604/using-ssh-in-putty-" rel="noopener noreferrer"&gt;PUTTY set up he_re_&lt;/a&gt;&lt;em&gt; .&lt;/em&gt;&amp;gt; &lt;em&gt;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 PUTTY.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;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):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To connect to your server:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh root@yourServersIP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You will see something similar to, type ‘ &lt;em&gt;yes ’&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F733%2F1%2ACzDb7ts2TxkcSj1yO0J5FA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F733%2F1%2ACzDb7ts2TxkcSj1yO0J5FA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 return.&lt;/p&gt;

&lt;p&gt;You will then be logged in to your server and see the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F805%2F1%2AgLzil4VZ4sfMlcY3olz03w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F805%2F1%2AgLzil4VZ4sfMlcY3olz03w.png"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F771%2F1%2Ayzbm8bP5pzqmysYzleBgWA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F771%2F1%2Ayzbm8bP5pzqmysYzleBgWA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Great, you are now logged in, lets get cracking !&lt;/p&gt;

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

&lt;p&gt;In our command line, lets type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;adduser newUser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can add this new user to the group of users who have admin privileges — &lt;em&gt;sudo .&lt;/em&gt; Users in this group may execute restricted tasks after entering their admin password.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;usermod -aG sudo newUser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Don’t close the current connection just yet — instead open a new tab in your command line and try to login with:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh newUser@yourServerIP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

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

&lt;p&gt;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 concise.&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;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 !&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to install the LAMP stack on a new server.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F492%2F1%2ATR4kKlINtbPDrQ3ffyem0g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F492%2F1%2ATR4kKlINtbPDrQ3ffyem0g.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is part 3 in “&lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;How to set up your own cloud based web server&lt;/a&gt;”&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;&lt;em&gt;Create a server.&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;2.&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866" rel="noopener noreferrer"&gt;&lt;em&gt;Setup the server.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3. Install the LAMP stack&lt;/em&gt; &lt;strong&gt;&lt;em&gt;← You are here !&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;4.&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/setup-a-domain-name-for-a-new-website-or-server-b0c1f76397a3" rel="noopener noreferrer"&gt;&lt;em&gt;Setup a domain name (for example www.myDomain.com).&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;5.&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/how-to-deploy-my-website-to-a-server-b9d63da5fa34" rel="noopener noreferrer"&gt;&lt;em&gt;Getting files on the server.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OK, so far you are making great progress. You have &lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;created a server&lt;/a&gt; and completed some &lt;a href="https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866" rel="noopener noreferrer"&gt;basic setup tasks&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
Now, how is the server going to know what to do with our code files- HTML, CSS, JavaScript etc once you upload them ? 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 !&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;L&lt;/strong&gt; inux: the operating system .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A&lt;/strong&gt; pache: the web server software .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;M&lt;/strong&gt; ySQL: the databse .&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;P&lt;/strong&gt; HP: to serve dynamic content.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;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 website.&lt;/p&gt;

&lt;p&gt;Lets get started:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Apache:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you have &lt;a href="https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866" rel="noopener noreferrer"&gt;logged in to our server&lt;/a&gt; you can start issuing some commands, first lets update our server, and then install Apache:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update

sudo apt-get install apache2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will see something similar to:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AqBOyMb63tELewxUg2TL2Hg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AqBOyMb63tELewxUg2TL2Hg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter yes, hit return, and Apache will install.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AGRMouL5-rmLG8X60Q8yBAg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AGRMouL5-rmLG8X60Q8yBAg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A quick way to display your &lt;em&gt;public&lt;/em&gt; IP is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl ipinfo.io/ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. MySQL:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lets get started:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install mysql-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will see:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A7NUf6sCcmk8PGgwTp29gkw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A7NUf6sCcmk8PGgwTp29gkw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 confirm:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AwA9sbbaVx5vlt2_jX4El_A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AwA9sbbaVx5vlt2_jX4El_A.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MySQL will continue through the installer.&lt;/p&gt;

&lt;p&gt;Once, it has completed, you will need to create a database directory as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo mysql_install_db
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
[ERROR] The data directory needs to be specified.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you can run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysqld --initialize
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. PHP&lt;/strong&gt;&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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 .&lt;em&gt;php&lt;/em&gt; files by default.&lt;/p&gt;

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

&lt;p&gt;So, you are going to edit a file called &lt;em&gt;dir.conf &lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /etc/apache2/mods-enabled/dir.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The file contents will look like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ABc5-lB_BDkLI4lIUscR6rA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ABc5-lB_BDkLI4lIUscR6rA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is &lt;em&gt;dir.conf&lt;/em&gt; opened in the Nano text-editor. What you need to do is to edit the second line so that &lt;em&gt;index.php&lt;/em&gt; is first in the list, and reads as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;IfModule mod_dir.c&amp;gt;
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
&amp;lt;/IfModule&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To save a file in Nano, press CTRL + X , then at the bottom of the editor you will be asked to confirm the save, type &lt;em&gt;Y :&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AkXXGLhhSuU7R-a7Z4T7ZCg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AkXXGLhhSuU7R-a7Z4T7ZCg.png"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AOAbhezLcz9rtqWWVRISwFA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AOAbhezLcz9rtqWWVRISwFA.png"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Now, all that is left to do is to restart the Apache service to make all our changes take effect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo service apache2 restart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;&lt;em&gt;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 !&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup a domain name for a new website or server.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F613%2F1%2AVW3kmLc8H5LjwVPXPhm20g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F613%2F1%2AVW3kmLc8H5LjwVPXPhm20g.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is part 4 in “&lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;How to set up your own cloud based web server&lt;/a&gt;”&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;&lt;em&gt;Create a server.&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;2.&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866" rel="noopener noreferrer"&gt;&lt;em&gt;Setup the server.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3.&lt;/em&gt;&lt;a href="https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b" rel="noopener noreferrer"&gt;&lt;em&gt;Install the LAMP stack&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;4. Setup a domain name (for example&lt;/em&gt; &lt;a href="http://www.myDomain.com" rel="noopener noreferrer"&gt;&lt;em&gt;www.myDomain.com)&lt;/em&gt;&lt;/a&gt;) &lt;strong&gt;&lt;em&gt;← You are here !&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;5.&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/how-to-deploy-my-website-to-a-server-b9d63da5fa34" rel="noopener noreferrer"&gt;&lt;em&gt;Getting files on the server.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point you are nearly finished this series. So far, you have learned how to c&lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;&lt;em&gt;reate a server&lt;/em&gt;&lt;/a&gt;&lt;em&gt; , s&lt;/em&gt;&lt;a href="https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866" rel="noopener noreferrer"&gt;&lt;em&gt;etup the server&lt;/em&gt;&lt;/a&gt; &lt;em&gt;and i&lt;/em&gt;&lt;a href="https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b" rel="noopener noreferrer"&gt;&lt;em&gt;nstall the LAMP stack&lt;/em&gt;&lt;/a&gt;&lt;em&gt; .&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You now have a website that responds to our public IP for the server.&lt;br&gt;&lt;br&gt;
However, what you need to do is connect a domain name, for example, &lt;a href="http://www.myDomain.com" rel="noopener noreferrer"&gt;www.myDomain.com&lt;/a&gt; to our server via &lt;a href="https://en.wikipedia.org/wiki/Domain_Name_System" rel="noopener noreferrer"&gt;DNS&lt;/a&gt; settings on DigitalOcean’s dashboard.&lt;/p&gt;

&lt;p&gt;Lets get stuck in …&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Purchase a domain:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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 &lt;a href="http://godaddy.com" rel="noopener noreferrer"&gt;GoDaddy.com&lt;/a&gt;simply because they are cheap and it straight forward to edit the DNS setting which you will need to do for the next step.&lt;br&gt;&lt;br&gt;
Once you have purchased your domain, log into your GoDaddy account go to the section “Manage my domains”.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Change DNS nameservers:&lt;/strong&gt;&lt;/p&gt;

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

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

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

&lt;p&gt;Now, select the dropdown menu beside your listed domain:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AVzZrKrND8N8YELOLxvDTWQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AVzZrKrND8N8YELOLxvDTWQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to ‘ &lt;em&gt;Set Nameservers&lt;/em&gt; ’ :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AoMODYbyvgatOCf7LPLh9MA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AoMODYbyvgatOCf7LPLh9MA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click to edit the name servers and set them as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ns1.digitalocean.com&lt;/li&gt;
&lt;li&gt;ns2.digitalocean.com&lt;/li&gt;
&lt;li&gt;ns3.digitalocean.com&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Make sure to save.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Setup domain on DigitalOcean:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At this point you will head over to your DO dashboard and go to the networking section:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AweS1LwyERVgyW9Gdt_P-QQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AweS1LwyERVgyW9Gdt_P-QQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter in your new domain name and click ‘ &lt;em&gt;Add domain&lt;/em&gt; ’ .&lt;/p&gt;

&lt;p&gt;Next you will enter the relevant records for your domain.&lt;/p&gt;

&lt;p&gt;The most important for now being &lt;strong&gt;A records.&lt;/strong&gt; 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 user.&lt;/p&gt;

&lt;p&gt;In the &lt;strong&gt;HOSTNAME&lt;/strong&gt; section, enter ‘ &lt;strong&gt;@ ’ .&lt;/strong&gt; This means that whatever is entered before your domain, for example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://myDomain.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;… will be directed to your site.&lt;/p&gt;

&lt;p&gt;In the &lt;strong&gt;WILL DIRECT TO&lt;/strong&gt; section, select your droplet from the list. You may leave &lt;a href="https://en.wikipedia.org/wiki/Time_to_live" rel="noopener noreferrer"&gt;&lt;strong&gt;TTL&lt;/strong&gt;&lt;/a&gt; at its default value , hit ‘ Create Record ’.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1019%2F1%2ANPCQEIl7chjpvNo8r5xAzg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1019%2F1%2ANPCQEIl7chjpvNo8r5xAzg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In order to set a &lt;em&gt;wildcard&lt;/em&gt; for any &lt;strong&gt;subdomain&lt;/strong&gt; entered before your domain, for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;blue.mydomain.com&lt;/li&gt;
&lt;li&gt;red.mydomain.com&lt;/li&gt;
&lt;li&gt;you get the idea …&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;… you need to set a &lt;strong&gt;CNAME&lt;/strong&gt; record as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1007%2F1%2AkuxXeaDL5V3UvbgEgixL_g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1007%2F1%2AkuxXeaDL5V3UvbgEgixL_g.png"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AWxdrejVjxQhyQiVgrgfcRA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AWxdrejVjxQhyQiVgrgfcRA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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 minutes.&lt;/p&gt;

&lt;p&gt;You can test that you did everything correctly by firing up our terminal, on our local machine, and &lt;a href="https://en.wikipedia.org/wiki/Ping_(networking_utility)" rel="noopener noreferrer"&gt;pinging&lt;/a&gt; our domain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ping mydomain.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or a sub-domain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ping blue.mydomain.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;… you should get something back like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F645%2F1%2AuxRLkqehsc-WshJKX82jow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F645%2F1%2AuxRLkqehsc-WshJKX82jow.png"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;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 !&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to deploy a website to a web server.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F500%2F1%2AJn2_sVoW9jWWH7QSbAnBdg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F500%2F1%2AJn2_sVoW9jWWH7QSbAnBdg.jpeg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is part 5 in “&lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;How to set up your own cloud based web server&lt;/a&gt;”&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;&lt;em&gt;Create a server.&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;2.&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866" rel="noopener noreferrer"&gt;&lt;em&gt;Setup the server.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3.&lt;/em&gt;&lt;a href="https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b" rel="noopener noreferrer"&gt;&lt;em&gt;Install the LAMP stack&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;4 .&lt;/em&gt;&lt;a href="https://medium.com/@davedodea/setup-a-domain-name-for-a-new-website-or-server-b0c1f76397a3" rel="noopener noreferrer"&gt;&lt;em&gt;Setup a domain name (for example www.myDomain.com).&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;5. Getting files on the server&lt;/em&gt; &lt;strong&gt;&lt;em&gt;← You are here !&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Wow, you are on the home stretch now. At this point you have the knowledge to be able to c&lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;&lt;em&gt;reate a server&lt;/em&gt;&lt;/a&gt;&lt;em&gt; , s&lt;/em&gt;&lt;a href="https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866" rel="noopener noreferrer"&gt;&lt;em&gt;etup the server&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, i&lt;/em&gt;&lt;a href="https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b" rel="noopener noreferrer"&gt;&lt;em&gt;nstall the LAMP stack&lt;/em&gt;&lt;/a&gt; &lt;em&gt;and s&lt;/em&gt;&lt;a href="https://medium.com/@davedodea/setup-a-domain-name-for-a-new-website-or-server-b0c1f76397a3" rel="noopener noreferrer"&gt;&lt;em&gt;etup a domain name&lt;/em&gt;&lt;/a&gt;&lt;em&gt; .&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;You are going to use &lt;a href="https://filezilla-project.org/" rel="noopener noreferrer"&gt;FileZilla&lt;/a&gt; which is a tool that basically uses the &lt;a href="https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol" rel="noopener noreferrer"&gt;SFTP&lt;/a&gt;rotocol to securely send files from your local machine over the internet and up into your server.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Download and install FileZilla:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It can be downloaded from &lt;a href="https://filezilla-project.org/" rel="noopener noreferrer"&gt;here&lt;/a&gt;. You should download the client package:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F286%2F1%2AvayKdMeKsmVqlnvC59Ot5Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F286%2F1%2AvayKdMeKsmVqlnvC59Ot5Q.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once installed, open FileZilla and follow the following steps to connect your server:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Connect to your server:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File &amp;gt; Site manager (CMD + S) .&lt;/li&gt;
&lt;li&gt;Click new site from the options on the bottom left .&lt;/li&gt;
&lt;li&gt;Fill out all sections in the General tab with the authentication details for your server:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F397%2F1%2Ao08vGGHzDGSRe0WCCg_U9Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F397%2F1%2Ao08vGGHzDGSRe0WCCg_U9Q.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Ensure you select SFTP for &lt;em&gt;Protocol&lt;/em&gt; .&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;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 machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F640%2F1%2Ar0FZRlb8UGNXAFU4TT_MaQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F640%2F1%2Ar0FZRlb8UGNXAFU4TT_MaQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the &lt;em&gt;Remote site&lt;/em&gt; text-area, you will want to navigate to
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/var/www
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Here you will find the &lt;em&gt;HTML&lt;/em&gt; directory/folder&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Upload website files:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now at this point it is time to get those beautiful files full of code up onto your web server.&lt;/li&gt;
&lt;li&gt;If you don’t have a working website built, you can go &lt;a href="https://github.com/davedodea/startbootstrap-creative" rel="noopener noreferrer"&gt;here&lt;/a&gt;:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/davedodea/startbootstrap-creative" rel="noopener noreferrer"&gt;davedodea/startbootstrap-creative&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;… to my GitHub page where I have left a sample website for you to use.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you know what to do with Git and GitHub, then pull down the repository into a directory on your local machine.&lt;/li&gt;
&lt;li&gt;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 ‘ &lt;em&gt;Clone / Download&lt;/em&gt; ’ and select ‘ &lt;em&gt;Download ZIP&lt;/em&gt; ’.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AjY8HD3swNHS2L8JM-uJStA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AjY8HD3swNHS2L8JM-uJStA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unzip the downloaded folder.&lt;/li&gt;
&lt;li&gt;Then, inside FileZilla once again, in the left pane, navigate into that folder as below:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ACsZq93coQH7ABUh39WLuKA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2ACsZq93coQH7ABUh39WLuKA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You should see your local files on the left, remote server on the right .&lt;/li&gt;
&lt;li&gt;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 upload.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  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.
&lt;/h3&gt;

&lt;p&gt;Awesome job !&lt;/p&gt;

&lt;p&gt;If you browse to &lt;a href="http://www.yourdomain.com" rel="noopener noreferrer"&gt;www.yourdomain.com&lt;/a&gt; you will see this (or whichever site you uploaded):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AigvlABzQIOH6J_vu8ltl-Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AigvlABzQIOH6J_vu8ltl-Q.png"&gt;&lt;/a&gt;&lt;a href="https://startbootstrap.com/template-overviews/creative/" rel="noopener noreferrer"&gt;Credit.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, to recap, these are the steps you went through in this series “&lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;How to set up your own cloud based web server&lt;/a&gt;”:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://medium.com/@davedodea/how-to-set-up-your-own-cloud-based-web-server-2cb091ec48a" rel="noopener noreferrer"&gt;&lt;em&gt;Create a server.&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;2.&lt;/em&gt; &lt;a href="https://medium.com/@davedodea/setting-up-a-new-ubuntu-server-for-the-first-time-e8c301ebf866" rel="noopener noreferrer"&gt;&lt;em&gt;Setup the server.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3.&lt;/em&gt;&lt;a href="https://medium.com/@davedodea/how-to-install-the-lamp-stack-on-a-new-server-128f04575a3b" rel="noopener noreferrer"&gt;&lt;em&gt;Install the LAMP stack&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;4 .&lt;/em&gt;&lt;a href="https://medium.com/@davedodea/setup-a-domain-name-for-a-new-website-or-server-b0c1f76397a3" rel="noopener noreferrer"&gt;&lt;em&gt;Setup a domain name (for example www.myDomain.com).&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;5. Getting files on the server&lt;/em&gt; &lt;strong&gt;&lt;em&gt;← You are here !&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;If you have any questions or additions to make, please let me know in the comments below or get in touch on &lt;a href="https://twitter.com/DaveDODea" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;~ Dave.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/DaveDODea" rel="noopener noreferrer"&gt;Dave O'Dea (@DaveDODea) | Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tech</category>
      <category>html</category>
      <category>deployment</category>
      <category>webhosting</category>
    </item>
  </channel>
</rss>
