<?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: Miracle Olabode ®️💭</title>
    <description>The latest articles on DEV Community by Miracle Olabode ®️💭 (@sava_dev).</description>
    <link>https://dev.to/sava_dev</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%2F950445%2Ff5afba86-e5a3-4130-b360-e0582706dee2.jpg</url>
      <title>DEV Community: Miracle Olabode ®️💭</title>
      <link>https://dev.to/sava_dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sava_dev"/>
    <language>en</language>
    <item>
      <title>What you should know about Apache web servers</title>
      <dc:creator>Miracle Olabode ®️💭</dc:creator>
      <pubDate>Fri, 04 Nov 2022 07:13:06 +0000</pubDate>
      <link>https://dev.to/sava_dev/what-you-should-know-about-apache-web-servers-36al</link>
      <guid>https://dev.to/sava_dev/what-you-should-know-about-apache-web-servers-36al</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is apache?&lt;/strong&gt;&lt;br&gt;
Apache is an open-source program that enables users to publish their web applications on the Internet network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a web server?&lt;/strong&gt;&lt;br&gt;
A web server is a software and hardware that responds to client requests made through the World Wide Web using Hypertext Transfer Protocol and other protocols.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture for Apache Web Servers and Applications&lt;/strong&gt;&lt;br&gt;
A number of functionalities are supported by Apache. Many extensions of the fundamental functionality are implemented as compiled modules, and these can include everything from server-side programming language support to authentication protocols.&lt;/p&gt;

&lt;p&gt;In Apache, compression methods include mod_gzip, an external module that helps to reduce the size (weight) of web pages served over HTTP. The core implements a number of utility functions as well as the basic functionality of the server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Apache Web Servers tho? 👀&lt;/strong&gt;&lt;br&gt;
Since Apache is open source software, anybody can read and contribute to the original source code without charge. Due to its open-source nature, Apache is particularly well-liked by programmers who have created and customized their own modules to add certain functionality and enhance its fundamental components.&lt;br&gt;
One advantage of Apache is its capacity to manage heavy traffic loads with little configuration. With its modular functionality at its heart, Apache scales easily, and you may configure it to work whatever you wish. If you want Apache to be lighter and more effective, you can also eliminate unnecessary components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Apache Web Server's features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Handling of static files&lt;/li&gt;
&lt;li&gt;Loadable dynamic modules&lt;/li&gt;
&lt;li&gt;Auto-indexing&lt;/li&gt;
&lt;li&gt;.htaccess&lt;/li&gt;
&lt;li&gt;Compatible with IPv6&lt;/li&gt;
&lt;li&gt;Supports HTTP/2&lt;/li&gt;
&lt;li&gt;FTP connections&lt;/li&gt;
&lt;li&gt;Gzip compression and decompression&lt;/li&gt;
&lt;li&gt;Bandwidth throttling&lt;/li&gt;
&lt;li&gt;Perl, PHP, Lua scripts&lt;/li&gt;
&lt;li&gt;Load balancing&lt;/li&gt;
&lt;li&gt;Session tracking&lt;/li&gt;
&lt;li&gt;URL rewriting&lt;/li&gt;
&lt;li&gt;Geolocation based on IP address&lt;/li&gt;
&lt;li&gt;Handling of static files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What Functions the Apache Web Server?&lt;/strong&gt;&lt;br&gt;
The TCP/IP protocol is used by Apache to enable client-server communication over networks.The format and transmission of messages over the internet are defined by HTTP/S, which also provides guidance to servers and browsers on how to handle different requests and commands. &lt;/p&gt;

&lt;p&gt;The standard port for Hypertext Transfer Protocol Secure is 443 while the standard port for the unsecured protocol is 80.&lt;br&gt;
Config files are used to configure the Apache server, By default, Apache listens to the requested IP addresses that are set in its configuration files. Here, one of Apache's many advantages is put to use.&lt;/p&gt;

&lt;p&gt;Apache may accept and reroute particular traffic to specific ports and domains in response to requests for particular address-port combinations. Although Listen by default uses port 80, Apache can be configured to use multiple ports for each domain, enabling the hosting of numerous different websites and domains on a single server. With Apache, you can have domain1.com listening on port 80, domain2.com listening on port 8080, and domain3.com listening on port 443&lt;/p&gt;

&lt;p&gt;A message sends an acknowledgment, whenever it reaches its intended receiver or destination. This message serves to inform the sender that their data has arrived successfully. The destination host or client sends a Not Acknowledged, message to notify the sender that the data has to be retransmitted in the event of a data transmission error or packet loss.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Options to the Apache HTTP Server&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apache Tomcat&lt;/li&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Lighttpd&lt;/li&gt;
&lt;li&gt;Cherokee&lt;/li&gt;
&lt;li&gt;Microsoft IIS&lt;/li&gt;
&lt;li&gt;Appweb&lt;/li&gt;
&lt;li&gt;Hiawatha&lt;/li&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Installation on Ubuntu&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Apache web server is already available in our repository, so we can download it simply by a single command.&lt;/p&gt;

&lt;h1&gt;
  
  
  apt-get install apache2
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IMWp5zGD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vcr048rfhochqbp4j4l8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IMWp5zGD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vcr048rfhochqbp4j4l8.png" alt="Image description" width="416" height="75"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After installation, we check webserver is enabled or not enable using systemctl enable apache2&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cwqajnBT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d9wcgnojjafzq27uwa6v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cwqajnBT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d9wcgnojjafzq27uwa6v.png" alt="Image description" width="880" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;we can check using the browser &lt;a href="http://192.168.1.110/"&gt;http://192.168.1.110/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GMf4jz9L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d82b1mo6f2db7zz1m4be.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GMf4jz9L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d82b1mo6f2db7zz1m4be.png" alt="Image description" width="805" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;boom!!!! our apache server is installed. &lt;br&gt;
Please keep in mind that there are several configurations available, which I will not go into in this article.&lt;br&gt;
In future articles, I will try to cover and discuss them.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Jenkins: Creating a Pipeline for Python projects</title>
      <dc:creator>Miracle Olabode ®️💭</dc:creator>
      <pubDate>Wed, 26 Oct 2022 12:00:00 +0000</pubDate>
      <link>https://dev.to/sava_dev/jenkins-creating-a-pipeline-for-python-projects-4h6h</link>
      <guid>https://dev.to/sava_dev/jenkins-creating-a-pipeline-for-python-projects-4h6h</guid>
      <description>&lt;p&gt;I recently attempted to set up a pipeline using Jenkins for my Python projects. The process was not straightforward, but I was able to figure it out. &lt;/p&gt;

&lt;p&gt;I'll try to describe how I did it in this article so that anyone starting off or working on a project like it can follow the guide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There are few prerequisite needed to get started with setting up the pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding Docker and Jenkins&lt;/li&gt;
&lt;li&gt;Install Docker&lt;/li&gt;
&lt;li&gt;Jenkins(this article will cover the setting up of the virtual
environment)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To check if you have docker installed on your computer, open up your terminal and execute the command "docker" If docker is installed, you should see something like to this. If not, download and install docker, now let's do something more fun, lol.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftc4p057adbdapojrpo4k.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftc4p057adbdapojrpo4k.png" alt="Docker installed"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Next we would installed jenkins on docker with the following command &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;
 run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;the command automatically tells docker to install a jenkins image and bind port &lt;code&gt;8080&lt;/code&gt; and port &lt;code&gt;50000&lt;/code&gt;&lt;br&gt;
 Kindly take note on the password that would appear and probably note it down somewhere as you would be needing 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmsg56fleplr8dj88web.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmsg56fleplr8dj88web.png" alt="authentication"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now lets open up the Jenkins image we just created with the following steps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open up a new browser
&lt;/li&gt;
&lt;li&gt;Go to &lt;code&gt;localhost:8080&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;You should be prompted for a password(enter the password you noted down earlier)&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60w6ipjbjcod0lrel8pt.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60w6ipjbjcod0lrel8pt.png" alt="password"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;install suggested plugins and follow the prompt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should see the Dashboard Page &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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fthhkk56xohfaiydyndq0.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fthhkk56xohfaiydyndq0.png" alt="Jenkins Dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now, Lets Create a Pipeline&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Click on &lt;strong&gt;New Item&lt;/strong&gt; on the Sidebar, give the Item a name and select &lt;strong&gt;Pipeline&lt;/strong&gt; then click on OK.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8mgvibiuc45m3npfieg.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8mgvibiuc45m3npfieg.png" alt="pipeline build dashboard"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Provide a description that is appropriate for your projects, then scroll down to the script section.&lt;/p&gt;

&lt;p&gt;enter these codes here &lt;/p&gt;

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

pipeline {
    agent any

    stages {
        stage('Checkout') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: 'main']], extensions: [], userRemoteConfigs: [[url: 'https://github.com/DevOlabodeM/pytest-intro-vs-M']]])
            }
        }
        stage('Build') {
            steps {
                git branch: 'main', url: 'https://github.com/DevOlabodeM/pytest-intro-vs-M'
                sh 'python3 ops.py'
            }
        }
        stage('Test') {
            steps {
                sh 'python3 -m pytest'
            }
        }
    }
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;A walk through on what the code does &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stages:&lt;/strong&gt;  Here, we've outlined every step required for our pipeline.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stage:&lt;/strong&gt;  Here, there are three stages (Checkout, Build and Test)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;-CHECKOUT&lt;/strong&gt;&lt;br&gt;
We created a pipeline script to checkout of our GitHub repo during the checkout stage and placed it inside the stages braces. "&lt;a href="https://github.com/DevOlabodeM/pytest-intro-vs-M" rel="noopener noreferrer"&gt;https://github.com/DevOlabodeM/pytest-intro-vs-M&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-BUILD&lt;/strong&gt;&lt;br&gt;
Inside the braces{}, in the build stage, we generated a pipline shell script for our python file to run here you would have to install python3 on your container so, run 'docker ps' to see what containers are running - copy the container ID for Jenkins, such as '8f7c957e19fd' afterwards - To open an interactive terminal within the Docker Container, use the command 'docker exec -it -u 0 8f7c957e19fd /bin/bash' (user 0)&lt;br&gt;
Run the following commands to install Python3 and pip within the Docker container&lt;/p&gt;

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

apt-get update
apt-get install python3
apt-get install python3-pip


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;-TEST&lt;/strong&gt;&lt;br&gt;
In the test stage, we generated a pipeline shell script to test our python file, then 'pip install pytest' will install the pytest package, which will run the unit/integration tests during your test stage in the pipeline.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzohlr6cz8mhj8x387u6.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzohlr6cz8mhj8x387u6.png" alt="Script session"&gt;&lt;/a&gt;&lt;br&gt;
After this stage, click save &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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9afky1zcdnknap34hhu.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9afky1zcdnknap34hhu.png" alt="dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Viola! We've built our Pipeline; now it's time to put it into action. To do so, go to the sidebar and click Build Now, and the Pipeline will start.&lt;br&gt;
If Pipeline was built properly, you should see this&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz9zvsqadasivwi1h63ya.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz9zvsqadasivwi1h63ya.png" alt="build dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If not, please inspect the console to determine what is wrong and correct it.&lt;/p&gt;

&lt;p&gt;Thank you for sticking around with me; I hope you found it useful.&lt;br&gt;
Please provide feedback and reactions.&lt;/p&gt;

</description>
      <category>python</category>
      <category>docker</category>
      <category>devops</category>
      <category>django</category>
    </item>
  </channel>
</rss>
