<?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>Forem: Morolake Anifowose</title>
    <description>The latest articles on Forem by Morolake Anifowose (@rolake).</description>
    <link>https://forem.com/rolake</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%2F210020%2F12af1cbe-bb2c-4900-93b0-67b3bef8020f.jpeg</url>
      <title>Forem: Morolake Anifowose</title>
      <link>https://forem.com/rolake</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rolake"/>
    <language>en</language>
    <item>
      <title>Getting Started with Nginx</title>
      <dc:creator>Morolake Anifowose</dc:creator>
      <pubDate>Sun, 03 Apr 2022 21:46:48 +0000</pubDate>
      <link>https://forem.com/rolake/getting-started-with-nginx-1f1k</link>
      <guid>https://forem.com/rolake/getting-started-with-nginx-1f1k</guid>
      <description>&lt;p&gt;Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy, and HTTP cache. It was created in 2004 by Igor Sysoev.&lt;/p&gt;

&lt;p&gt;Another very popular web server is Apache which existed before Nginx. However, most people prefer to use Nginx for their applications for a number of reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster Static Resources: Nginx serves static resources without the need for a server-side language&lt;/li&gt;
&lt;li&gt;It performs 2.5 times faster than Apache&lt;/li&gt;
&lt;li&gt;Higher Concurrency: it can potentially receive thousands of requests on a single process thread and respond to them as fast as possible&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installing Nginx with Package Managers
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Ubuntu&lt;/strong&gt; - is a Linux distribution that uses the APT package manager. To install Nginx on Ubuntu, follow these steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Update the package lists: &lt;strong&gt;apt-get update&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--abddrZRQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648897421790/VlsjGTvaM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--abddrZRQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648897421790/VlsjGTvaM.png" alt="image.png" width="670" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run the install command: &lt;strong&gt;apt-get install nginx&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--frcR8ups--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648897520691/H_fI_UQph.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--frcR8ups--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648897520691/H_fI_UQph.png" alt="image.png" width="880" height="148"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check your web server: at the end of the installation process Ubuntu starts Nginx. Run &lt;strong&gt;systemctl status nginx&lt;/strong&gt; to check if Nginx is up and running&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YfPtFmWV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648897646171/edhlOfnEW.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YfPtFmWV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648897646171/edhlOfnEW.png" alt="image.png" width="654" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check your server's IP address in the browser, you should see the default Nginx landing page&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yezVRG5H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648897877639/EdTeeT8JJ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yezVRG5H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648897877639/EdTeeT8JJ.png" alt="image.png" width="606" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CentOS&lt;/strong&gt; - CentOS ships with the YUM package manager.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add the EPEL software repository: YUM does not come with an Nginx package and for this reason, you need to provide YUM with a package source containing Nginx. Run the **yum install epel-release **command&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Yt1ikom6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648898523614/bIlRWfqmH.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Yt1ikom6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648898523614/bIlRWfqmH.png" alt="image.png" width="880" height="98"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Nginx with the following yum command: &lt;strong&gt;yum install nginx&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9gn_FUbQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648898684927/hx7GEdrGI.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9gn_FUbQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648898684927/hx7GEdrGI.png" alt="image.png" width="821" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start the Nginx service: Nginx will not automatically start after installation. Use the &lt;strong&gt;systemctl start nginx&lt;/strong&gt; command to start the service. After that, check the status with &lt;strong&gt;systemctl status nginx&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tP_n1bm4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648898871538/nDK9PiGTl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tP_n1bm4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648898871538/nDK9PiGTl.png" alt="image.png" width="880" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter your server's IP address on the browser to check that everything worked fine. You should see the default CentOS Nginx web page&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ACFwiyKq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648899063280/wrPtjpsYy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ACFwiyKq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1648899063280/wrPtjpsYy.png" alt="image.png" width="880" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nginx</category>
      <category>webserver</category>
      <category>apache</category>
    </item>
    <item>
      <title>The Cloud Resume Challenge</title>
      <dc:creator>Morolake Anifowose</dc:creator>
      <pubDate>Mon, 14 Mar 2022 11:20:20 +0000</pubDate>
      <link>https://forem.com/rolake/the-cloud-resume-challenge-3dc9</link>
      <guid>https://forem.com/rolake/the-cloud-resume-challenge-3dc9</guid>
      <description>&lt;p&gt;&lt;a href="https://cloudresumechallenge.dev/"&gt;The Challenge&lt;/a&gt;&lt;br&gt;
&lt;a href="https://cloudresume.morolakeanifowose.com/"&gt;My Cloud Resume&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I came across the challenge while watching this &lt;a href="https://www.youtube.com/watch?v=vWerXJrNw2g&amp;amp;t=185s"&gt;video&lt;/a&gt; on going from zero to  cloud engineer in 6 months. Going through the challenge and seeing the steps, I decided to go for it and get my hands dirty with new tools and technologies. The very first step of the challenge was getting the AWS CCP certification and luckily for me, I obtained it just two months prior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setting up the Frontend&lt;/strong&gt;&lt;br&gt;
This part of the challenge was fairly easy. I replicated my resume in HTML and styled it as I didn’t want to use a template. Using the AWS SAM CLI, I provisioned an S3 bucket and uploaded my files with the sync command. Once the site was hosted, I purchased a domain name (morolakeanifowose.com) in Route53. After purchasing my domain name, I requested a certificate using the AWS Certificate Manager. I then setup a CloudFront distribution, making my S3 bucket the origin, creating an alternate domain name, and attaching the previously created SSL certificate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setting up the Backend&lt;/strong&gt;&lt;br&gt;
Since I was using AWS SAM, my Lambda functions and APIs were created for me. I set up CORS and played around with my Lambda function, initially returning a static value when the API is called. From my YAML template, I created a DynamoDB table. Working with DynamoDB was a little difficult for me because I had never worked with with a NoSQL database prior to the challenge. I then split my Lambda function into two, one for inserting data into my DynamoDB table and the other for returning that data using the AWS SDK for Python (Boto3).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connecting the two&lt;/strong&gt;&lt;br&gt;
After my DynamoDB, API Gateway and Lambda functions worked together, I created a simple Javascript counter in my HTML document to return the value in my DynamoDB table as the visitor count on my webpage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CI/CD&lt;/strong&gt;&lt;br&gt;
The CI/CD part involved setting up Github actions such that when my Python tests pass, the SAM application gets packaged and deployed to AWS and when new website code is pushed, the S3 bucket automatically gets updated. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XE25biXr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/89b0dqzw3zgbhnif83ee.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XE25biXr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/89b0dqzw3zgbhnif83ee.png" alt="CI/CD Frontend" width="880" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Words&lt;/strong&gt;&lt;br&gt;
I really loved the challenge as I got to work with tools such as DynamoDB, AWS SAM, Github Actions which I had never used before. &lt;br&gt;
There were parts I struggled with, but YouTube came to my rescue as usual. Here is my &lt;a href="//cloudresume.morolakeanifowose.com"&gt;finished product&lt;/a&gt;.&lt;br&gt;
Feel free to reach out to me on &lt;a href="https://www.linkedin.com/in/morolake-anifowose/"&gt;LinkedIn&lt;/a&gt; or via &lt;a href="//morolaanney@gmail.com"&gt;email&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>aws</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
