<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux &#8211; Best DevOps</title>
	<atom:link href="https://www.bestdevops.com/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bestdevops.com</link>
	<description>Lets Learn, Do it &#38; Share! Thats a Best DevOps!!!</description>
	<lastBuildDate>Wed, 14 Oct 2026 14:47:42 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>Understanding Cron: Overview, Use Cases, Architecture, and Getting Started Guide</title>
		<link>https://www.bestdevops.com/understanding-cron-overview-use-cases-architecture-and-getting-started-guide/</link>
					<comments>https://www.bestdevops.com/understanding-cron-overview-use-cases-architecture-and-getting-started-guide/#respond</comments>
		
		<dc:creator><![CDATA[vijay1 vijay1]]></dc:creator>
		<pubDate>Tue, 24 Jun 2025 11:45:00 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Cron]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SystemAdministration]]></category>
		<category><![CDATA[TaskAutomation]]></category>
		<category><![CDATA[TechGuide]]></category>
		<category><![CDATA[Unix]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=31819</guid>

					<description><![CDATA[What is Cron? Cron is a time-based job scheduler in Unix-like operating systems, including Linux, macOS, and other Unix variants. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="750" height="410" src="https://www.bestdevops.com/wp-content/uploads/2025/06/image-151.png" alt="" class="wp-image-31826" srcset="https://www.bestdevops.com/wp-content/uploads/2025/06/image-151.png 750w, https://www.bestdevops.com/wp-content/uploads/2025/06/image-151-300x164.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">What is Cron?</h3>



<p class="wp-block-paragraph"><strong>Cron</strong> is a time-based job scheduler in Unix-like operating systems, including Linux, macOS, and other Unix variants. It is used to schedule jobs (commands or scripts) to run automatically at specified times or intervals. The term &#8220;cron&#8221; comes from the Greek word &#8220;chronos,&#8221; meaning time. Cron is commonly used for automating repetitive tasks such as system maintenance, backups, and monitoring, allowing system administrators to manage periodic jobs efficiently.</p>



<p class="wp-block-paragraph">Cron jobs are defined in a configuration file called <strong>crontab</strong>, which contains a list of commands along with the specific time and date the commands should be executed. Cron is essential for managing background processes in server environments and can handle tasks ranging from simple file backups to complex system updates.</p>



<h4 class="wp-block-heading">Key Features of Cron:</h4>



<ul class="wp-block-list">
<li><strong>Time-based execution</strong>: Cron allows jobs to be scheduled at specific times or intervals.</li>



<li><strong>Automation</strong>: Cron automates tasks, reducing the need for manual intervention and ensuring that important processes run regularly.</li>



<li><strong>Flexibility</strong>: Cron provides flexibility in scheduling tasks, allowing execution on any combination of minutes, hours, days, months, or weekdays.</li>



<li><strong>Logging</strong>: Cron maintains logs of executed jobs, which helps in debugging and monitoring scheduled tasks.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">What Are the Major Use Cases of Cron?</h3>



<p class="wp-block-paragraph">Cron is a powerful tool used in various system administration and automation scenarios. Some <strong>major use cases</strong> for Cron include:</p>



<h4 class="wp-block-heading">1. <strong>Scheduled Backups</strong></h4>



<ul class="wp-block-list">
<li>Cron is commonly used to schedule regular backups of important files, databases, or system configurations to ensure data integrity and availability.</li>



<li><strong>Example</strong>: Scheduling a backup of a website&#8217;s data every night at midnight. </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-number">0</span> <span class="hljs-number">0</span> * * * <span class="hljs-regexp">/usr/</span>bin/rsync -av /home/user/data /backup/location/
</code></span></pre>


<h4 class="wp-block-heading">2. <strong>System Maintenance Tasks</strong></h4>



<ul class="wp-block-list">
<li>System maintenance tasks such as <strong>log rotation</strong>, <strong>disk cleanup</strong>, or <strong>disk space monitoring</strong> are often automated with Cron. This ensures that the system is maintained without requiring manual intervention.</li>



<li><strong>Example</strong>: A Cron job running weekly to clean up old log files. </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-number">0</span> <span class="hljs-number">2</span> * * <span class="hljs-number">0</span> find /<span class="hljs-keyword">var</span>/log -name <span class="hljs-string">'*.log'</span> -type f -mtime +<span class="hljs-number">30</span> -exec rm {} \;
</code></span></pre>


<h4 class="wp-block-heading">3. <strong>Sending Automated Emails</strong></h4>



<ul class="wp-block-list">
<li>Cron can be used to automate the sending of reports, notifications, or reminders at scheduled times, making it useful for applications that require periodic email dispatching.</li>



<li><strong>Example</strong>: A Cron job sending a daily status report email to system administrators.</li>
</ul>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-number">0</span> <span class="hljs-number">9</span> * * * <span class="hljs-regexp">/usr/</span>bin/mail -s <span class="hljs-string">"Daily Report"</span> admin@example.com &lt; <span class="hljs-regexp">/home/u</span>ser/report.txt
</code></span></pre>


<h4 class="wp-block-heading">4. <strong>Database Management</strong></h4>



<ul class="wp-block-list">
<li>Automated database maintenance tasks such as <strong>data syncing</strong>, <strong>performance optimization</strong>, or <strong>report generation</strong> are handled by Cron jobs.</li>



<li><strong>Example</strong>: A Cron job that runs every day at 3 AM to perform database optimization:</li>
</ul>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-number">0</span> <span class="hljs-number">3</span> * * * <span class="hljs-regexp">/usr/</span>bin/mysqlcheck --optimize --all-databases
</code></span></pre>


<h4 class="wp-block-heading">5. <strong>Running Scripts at Fixed Intervals</strong></h4>



<ul class="wp-block-list">
<li>Cron can be used to schedule scripts that perform a variety of tasks on a regular basis, such as cleaning up temporary files, syncing files, or running data analysis.</li>



<li><strong>Example</strong>: A script that syncs data between servers every hour. </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-number">0</span> * * * * <span class="hljs-regexp">/home/u</span>ser/sync_data.sh
</code></span></pre>


<h4 class="wp-block-heading">6. <strong>Web Scraping and Data Collection</strong></h4>



<ul class="wp-block-list">
<li>Cron is also used to schedule tasks like <strong>web scraping</strong>, where scripts collect data from websites or APIs at regular intervals.</li>



<li><strong>Example</strong>: A Cron job to scrape data every day at 6 AM: </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-number">0</span> <span class="hljs-number">6</span> * * * <span class="hljs-regexp">/usr/</span>bin/python3 /home/user/scrape_website.py
</code></span></pre>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">How Cron Works Along with Architecture?</h3>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="683" src="https://www.bestdevops.com/wp-content/uploads/2025/06/image-152-1024x683.png" alt="" class="wp-image-31827" srcset="https://www.bestdevops.com/wp-content/uploads/2025/06/image-152-1024x683.png 1024w, https://www.bestdevops.com/wp-content/uploads/2025/06/image-152-300x200.png 300w, https://www.bestdevops.com/wp-content/uploads/2025/06/image-152-768x512.png 768w, https://www.bestdevops.com/wp-content/uploads/2025/06/image-152.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Cron operates as a daemon process running in the background. The architecture of Cron consists of several components that enable it to manage and schedule jobs efficiently.</p>



<h4 class="wp-block-heading">1. <strong>Crontab</strong></h4>



<ul class="wp-block-list">
<li><strong>Crontab</strong> is the configuration file where the scheduled jobs are defined. It specifies what tasks need to be executed and when they should run. Each user on the system can have their own crontab file to define personal or application-specific jobs.</li>



<li>Crontab entries follow a specific syntax: </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs">* * * * * command_to_run
| | | | |
| | | | +---- Day of the week (0 - 7) (Sunday = 0 or 7)
| | | +------ Month (1 - 12)
| | +-------- Day of the month (1 - 31)
| +---------- Hour (0 - 23)
+------------ Minute (0 - 59)
</code></span></pre>


<ul class="wp-block-list">
<li>Example: A job that runs at 3:15 PM every day would look like: </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-number">15</span> <span class="hljs-number">15</span> * * * <span class="hljs-regexp">/path/</span>to/command
</code></span></pre>


<h4 class="wp-block-heading">2. <strong>Cron Daemon</strong></h4>



<ul class="wp-block-list">
<li>The <strong>cron daemon</strong> (<code>crond</code>) is a background service that runs continuously, checking the crontab files and executing jobs at their scheduled times. The daemon ensures that the tasks defined in the crontab are carried out without any user intervention.</li>



<li>The Cron daemon operates as a <strong>system service</strong> and can be controlled via commands such as <code>systemctl start cron</code> (for systemd-based systems) or <code>service cron start</code> (for init.d systems).</li>
</ul>



<h4 class="wp-block-heading">3. <strong>Cron Jobs</strong></h4>



<ul class="wp-block-list">
<li>A <strong>cron job</strong> is a scheduled task that Cron runs. These jobs can be any script, command, or program that is specified in the crontab file. The cron job runs in the background, often without direct user interaction.</li>



<li>Example: A job running a cleanup script every Sunday at midnight: </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs">0 0 * * 0 /usr/local/bin/cleanup.sh
</code></span></pre>


<h4 class="wp-block-heading">4. <strong>Cron Logs</strong></h4>



<ul class="wp-block-list">
<li>Cron logs the execution of jobs to a system log file, typically located in <code>/var/log/cron</code> or <code>/var/log/syslog</code>. These logs can be useful for troubleshooting and tracking job executions.</li>



<li><strong>Example</strong>: To view the Cron logs, you can use the following command: </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs language-javascript">cat /<span class="hljs-keyword">var</span>/log/cron
</code></span></pre>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">What Are the Basic Workflows of Cron?</h3>



<p class="wp-block-paragraph">The basic workflow of Cron involves several steps, from defining jobs in the crontab to execution and logging:</p>



<h4 class="wp-block-heading">1. <strong>Define Jobs in Crontab</strong></h4>



<ul class="wp-block-list">
<li>Users define scheduled tasks in the <strong>crontab file</strong>. Each entry consists of a time specification (minute, hour, day of the month, etc.) and the command to be executed.</li>
</ul>



<h4 class="wp-block-heading">2. <strong>Cron Daemon Reads Crontab</strong></h4>



<ul class="wp-block-list">
<li>The <strong>cron daemon</strong> (<code>crond</code>) runs in the background, constantly monitoring the crontab files for any jobs that are due for execution. It checks the system clock to determine when the scheduled time for each job has arrived.</li>
</ul>



<h4 class="wp-block-heading">3. <strong>Cron Executes Jobs</strong></h4>



<ul class="wp-block-list">
<li>When the scheduled time for a job is reached, the cron daemon executes the corresponding command or script defined in the crontab file. The command is run in the background as a separate process.</li>
</ul>



<h4 class="wp-block-heading">4. <strong>Job Execution and Output</strong></h4>



<ul class="wp-block-list">
<li>Once the job is executed, the output is typically directed to the <strong>standard output</strong> (stdout) or <strong>standard error</strong> (stderr), and may be logged to the system logs. Some jobs, like backups or file transfers, might generate logs or emails with the job’s status or output.</li>
</ul>



<h4 class="wp-block-heading">5. <strong>Job Completion</strong></h4>



<ul class="wp-block-list">
<li>After execution, the job either completes successfully or fails. If there is an error, it can be captured in the logs for troubleshooting. Cron jobs typically do not require manual intervention unless there is a failure.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step-by-Step Getting Started Guide for Cron</h3>



<p class="wp-block-paragraph">Here’s a simple guide to help you get started with Cron and start scheduling jobs on your system:</p>



<h4 class="wp-block-heading">Step 1: <strong>Access the Crontab</strong></h4>



<ul class="wp-block-list">
<li>To create or edit cron jobs, open your crontab file by running: </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs">crontab -e
</code></span></pre>


<ul class="wp-block-list">
<li>This will open the crontab file in a text editor, where you can add or modify your cron jobs.</li>
</ul>



<h4 class="wp-block-heading">Step 2: <strong>Add Cron Jobs</strong></h4>



<ul class="wp-block-list">
<li>In the crontab file, add your scheduled tasks using the cron syntax: </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs language-javascript">* * * * * <span class="hljs-regexp">/path/</span>to/your/command
</code></span></pre>


<ul class="wp-block-list">
<li>For example, to run a backup script every night at 2:00 AM, you would add: </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-number">0</span> <span class="hljs-number">2</span> * * * <span class="hljs-regexp">/path/</span>to/backup.sh
</code></span></pre>


<h4 class="wp-block-heading">Step 3: <strong>Save and Exit</strong></h4>



<ul class="wp-block-list">
<li>After adding the required jobs, save the file and exit the editor. The cron daemon will automatically pick up the new jobs and schedule them.</li>
</ul>



<h4 class="wp-block-heading">Step 4: <strong>Check Cron Jobs</strong></h4>



<ul class="wp-block-list">
<li>To view all the cron jobs for your user, run: </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs">crontab -l
</code></span></pre>


<ul class="wp-block-list">
<li>This will list all the scheduled jobs in your crontab.</li>
</ul>



<h4 class="wp-block-heading">Step 5: <strong>Monitor Cron Jobs</strong></h4>



<ul class="wp-block-list">
<li>Cron logs its activities. Check the system logs for output and errors: </li>
</ul>


<pre class="wp-block-code"><span><code class="hljs">crontab -l
</code></span></pre>]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/understanding-cron-overview-use-cases-architecture-and-getting-started-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GCC Explained: Architecture, Use Cases, Workflow, and Getting Started</title>
		<link>https://www.bestdevops.com/gcc-explained-architecture-use-cases-workflow-and-getting-started/</link>
					<comments>https://www.bestdevops.com/gcc-explained-architecture-use-cases-workflow-and-getting-started/#respond</comments>
		
		<dc:creator><![CDATA[vijay1 vijay1]]></dc:creator>
		<pubDate>Thu, 29 May 2025 07:30:59 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[BuildTools]]></category>
		<category><![CDATA[CProgramming]]></category>
		<category><![CDATA[EmbeddedSystems]]></category>
		<category><![CDATA[GCC]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Optimization]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=31434</guid>

					<description><![CDATA[1. Introduction to GCC The GNU Compiler Collection (GCC) is a cornerstone of modern software development, especially within the open-source [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="525" src="https://www.bestdevops.com/wp-content/uploads/2025/05/image-112-1024x525.png" alt="" class="wp-image-31442" srcset="https://www.bestdevops.com/wp-content/uploads/2025/05/image-112-1024x525.png 1024w, https://www.bestdevops.com/wp-content/uploads/2025/05/image-112-300x154.png 300w, https://www.bestdevops.com/wp-content/uploads/2025/05/image-112-768x394.png 768w, https://www.bestdevops.com/wp-content/uploads/2025/05/image-112.png 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">1. Introduction to GCC</h2>



<p class="wp-block-paragraph">The <strong>GNU Compiler Collection (GCC)</strong> is a cornerstone of modern software development, especially within the open-source ecosystem. Originally created by Richard Stallman in 1987 as the GNU C Compiler, GCC has grown into a comprehensive collection of compilers supporting several programming languages such as C, C++, Objective-C, Fortran, Ada, and more.</p>



<p class="wp-block-paragraph">GCC serves as a <strong>compiler system</strong> that converts human-readable source code into machine-level executable instructions, facilitating the creation of performant software on a vast range of hardware architectures — from desktops and servers to embedded systems.</p>



<p class="wp-block-paragraph">Because of its open-source license, wide platform support, and powerful optimization capabilities, GCC remains the default and preferred compiler on most Unix-like operating systems, including Linux and BSD variants.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">2. Major Use Cases of GCC</h2>



<h3 class="wp-block-heading">2.1 Compiling Native Applications</h3>



<p class="wp-block-paragraph">GCC is most commonly used to compile applications written in C and C++ on native platforms, providing reliable and optimized code generation.</p>



<h3 class="wp-block-heading">2.2 Cross-Compilation for Embedded Systems</h3>



<p class="wp-block-paragraph">GCC enables cross-compilation, where developers build code on a host machine for execution on different target architectures (e.g., ARM Cortex-M microcontrollers, MIPS processors). This is crucial for embedded and IoT development.</p>



<h3 class="wp-block-heading">2.3 Kernel and Operating System Development</h3>



<p class="wp-block-paragraph">The Linux kernel and many other OS kernels are compiled using GCC, taking advantage of its robust support for low-level programming, inline assembly, and optimizations.</p>



<h3 class="wp-block-heading">2.4 Academic Research and Compiler Development</h3>



<p class="wp-block-paragraph">GCC&#8217;s modular architecture allows researchers and students to experiment with compiler optimizations, code generation, and static analysis.</p>



<h3 class="wp-block-heading">2.5 Software Portability and Multi-language Support</h3>



<p class="wp-block-paragraph">With support for multiple languages and target architectures, GCC aids in porting software across diverse systems.</p>



<h3 class="wp-block-heading">2.6 Performance Tuning and Optimization</h3>



<p class="wp-block-paragraph">GCC offers a rich set of compiler flags for fine-tuning code performance, including aggressive optimizations, vectorization, and link-time optimizations.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">3. How GCC Works: Architecture and Components</h2>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="748" height="305" src="https://www.bestdevops.com/wp-content/uploads/2025/05/image-113.png" alt="" class="wp-image-31443" style="width:840px;height:auto" srcset="https://www.bestdevops.com/wp-content/uploads/2025/05/image-113.png 748w, https://www.bestdevops.com/wp-content/uploads/2025/05/image-113-300x122.png 300w" sizes="auto, (max-width: 748px) 100vw, 748px" /></figure>



<h3 class="wp-block-heading">3.1 Front End: Language Parsing and Semantic Analysis</h3>



<p class="wp-block-paragraph">Each supported language has its own <strong>front end</strong> which performs:</p>



<ul class="wp-block-list">
<li>Lexical analysis (tokenizing source code).</li>



<li>Syntax analysis (parsing tokens into Abstract Syntax Tree &#8211; AST).</li>



<li>Semantic analysis (type checking, scope resolution).</li>



<li>Generation of an Intermediate Representation (IR), called <strong>GIMPLE</strong> or <strong>Tree</strong> in GCC parlance.</li>
</ul>



<h3 class="wp-block-heading">3.2 Middle End: Optimization Phase</h3>



<p class="wp-block-paragraph">The <strong>middle end</strong> operates on the IR, performing machine-independent optimizations such as:</p>



<ul class="wp-block-list">
<li>Constant folding and propagation.</li>



<li>Dead code elimination.</li>



<li>Loop unrolling and vectorization.</li>



<li>Inlining functions.</li>
</ul>



<p class="wp-block-paragraph">This stage improves the efficiency of the generated code regardless of the target architecture.</p>



<h3 class="wp-block-heading">3.3 Back End: Target-Specific Code Generation</h3>



<p class="wp-block-paragraph">The <strong>back end</strong> translates the optimized IR into machine-specific assembly code, handling:</p>



<ul class="wp-block-list">
<li>Instruction selection based on the target CPU.</li>



<li>Register allocation.</li>



<li>Instruction scheduling.</li>



<li>Emitting assembly or binary object code.</li>
</ul>



<p class="wp-block-paragraph">GCC supports a wide array of back ends for architectures like x86, ARM, PowerPC, RISC-V, MIPS, and more.</p>



<h3 class="wp-block-heading">3.4 Assembler and Linker</h3>



<p class="wp-block-paragraph">After code generation, the assembler converts assembly into object files. The <strong>linker</strong> then combines multiple object files and libraries into an executable, resolving symbols and managing memory layout.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">4. GCC Compilation Process: Step-by-Step Workflow</h2>



<p class="wp-block-paragraph">The full compilation involves several stages, often integrated via GCC driver:</p>



<h3 class="wp-block-heading">4.1 Preprocessing</h3>



<ul class="wp-block-list">
<li>Processes directives starting with <code>#</code> such as <code>#include</code>, <code>#define</code>, and <code>#ifdef</code>.</li>



<li>Macro expansion and file inclusion.</li>



<li>Output: Preprocessed source code.</li>
</ul>



<h3 class="wp-block-heading">4.2 Compilation</h3>



<ul class="wp-block-list">
<li>Parses the preprocessed source.</li>



<li>Converts to IR and performs language-specific semantic analysis.</li>



<li>Generates assembly code.</li>
</ul>



<h3 class="wp-block-heading">4.3 Assembly</h3>



<ul class="wp-block-list">
<li>Converts assembly code into machine-level object code.</li>
</ul>



<h3 class="wp-block-heading">4.4 Linking</h3>



<ul class="wp-block-list">
<li>Combines all object files and libraries into an executable or shared library.</li>



<li>Resolves external references.</li>



<li>Applies link-time optimizations if enabled.</li>
</ul>



<h3 class="wp-block-heading">4.5 Optional Steps</h3>



<ul class="wp-block-list">
<li>Static analysis, code coverage instrumentation, or sanitization if enabled by flags.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">5. Practical Guide: Getting Started with GCC</h2>



<h3 class="wp-block-heading">Step 1: Installing GCC</h3>



<ul class="wp-block-list">
<li><strong>Linux:</strong> <code>sudo apt install build-essential # Debian/Ubuntu sudo yum install gcc gcc-c++ # RHEL/CentOS</code></li>



<li><strong>macOS:</strong> Install Xcode command line tools: <code>xcode-select --install</code></li>



<li><strong>Windows:</strong> Use MinGW-w64 or MSYS2 environments for native GCC.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 2: Writing Your First C Program</h3>



<p class="wp-block-paragraph">Create a file <code>hello.c</code>:</p>


<pre class="wp-block-code"><span><code class="hljs language-php"><span class="hljs-comment">#include &lt;stdio.h&gt;</span>

int main() {
    printf(<span class="hljs-string">"Hello, GCC!\n"</span>);
    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}
</code></span></pre>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 3: Basic Compilation and Execution</h3>



<p class="wp-block-paragraph">Compile the program:</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">gcc</span> <span class="hljs-selector-tag">hello</span><span class="hljs-selector-class">.c</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">hello</span>
</code></span></pre>


<p class="wp-block-paragraph">Run the program:</p>


<pre class="wp-block-code"><span><code class="hljs">./hello
</code></span></pre>


<p class="wp-block-paragraph">Expected output:</p>


<pre class="wp-block-code"><span><code class="hljs">Hello, GCC!
</code></span></pre>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 4: Common GCC Compiler Options</h3>



<ul class="wp-block-list">
<li><code>-o &lt;file></code>: Specify output executable name.</li>



<li><code>-Wall</code>: Enable most compiler warnings.</li>



<li><code>-Werror</code>: Treat warnings as errors.</li>



<li><code>-O0</code>, <code>-O1</code>, <code>-O2</code>, <code>-O3</code>, <code>-Os</code>: Optimization levels (none to aggressive).</li>



<li><code>-g</code>: Include debug information.</li>



<li><code>-c</code>: Compile only, produce object file <code>.o</code>.</li>



<li><code>-std=c11</code>: Specify language standard (e.g., C11).</li>



<li><code>-I &lt;path></code>: Add include directory.</li>



<li><code>-L &lt;path></code> and <code>-l&lt;name></code>: Link libraries.</li>
</ul>



<p class="wp-block-paragraph">Example with optimizations and debugging:</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">gcc</span> <span class="hljs-selector-tag">-Wall</span> <span class="hljs-selector-tag">-O2</span> <span class="hljs-selector-tag">-g</span> <span class="hljs-selector-tag">hello</span><span class="hljs-selector-class">.c</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">hello</span>
</code></span></pre>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 5: Compiling Multiple Files</h3>



<p class="wp-block-paragraph">Suppose you have <code>main.c</code> and <code>utils.c</code>:</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">gcc</span> <span class="hljs-selector-tag">-c</span> <span class="hljs-selector-tag">main</span><span class="hljs-selector-class">.c</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">main</span><span class="hljs-selector-class">.o</span>
<span class="hljs-selector-tag">gcc</span> <span class="hljs-selector-tag">-c</span> <span class="hljs-selector-tag">utils</span><span class="hljs-selector-class">.c</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">utils</span><span class="hljs-selector-class">.o</span>
<span class="hljs-selector-tag">gcc</span> <span class="hljs-selector-tag">main</span><span class="hljs-selector-class">.o</span> <span class="hljs-selector-tag">utils</span><span class="hljs-selector-class">.o</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">myapp</span>
</code></span></pre>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 6: Using GCC for C++</h3>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">g</span>++ <span class="hljs-selector-tag">program</span><span class="hljs-selector-class">.cpp</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">program</span>
</code></span></pre>


<p class="wp-block-paragraph"><code>g++</code> is a GCC front end for C++ that automatically links C++ standard libraries.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Step 7: Cross-Compilation Example</h3>



<p class="wp-block-paragraph">Compile for ARM architecture (assuming ARM GCC installed):</p>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">arm-linux-gnueabi-gcc</span> <span class="hljs-selector-tag">hello</span><span class="hljs-selector-class">.c</span> <span class="hljs-selector-tag">-o</span> <span class="hljs-selector-tag">hello-arm</span>
</code></span></pre>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">6. Advanced GCC Features and Tools</h2>



<ul class="wp-block-list">
<li><strong>Link-Time Optimization (LTO):</strong> Enables whole-program optimization. <code>gcc -flto -O3 hello.c -o hello</code></li>



<li><strong>Sanitizers:</strong> Detect memory errors (<code>-fsanitize=address</code>) or undefined behavior. <code>gcc -fsanitize=address hello.c -o hello</code></li>



<li><strong>Profiling:</strong> Generate profiling info (<code>-pg</code>) for tools like <code>gprof</code>.</li>



<li><strong>OpenMP Support:</strong> Compile parallel code with <code>-fopenmp</code>.</li>



<li><strong>Inline Assembly:</strong> Embed assembly code for low-level optimizations.</li>



<li><strong>Plugins and Customization:</strong> Extend GCC via plugins.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">7. Best Practices When Using GCC</h2>



<ul class="wp-block-list">
<li>Enable warnings (<code>-Wall</code>) and fix all issues.</li>



<li>Use debugging symbols (<code>-g</code>) during development.</li>



<li>Increment optimization gradually, check correctness after each step.</li>



<li>Leverage static analysis and sanitizers to catch bugs early.</li>



<li>Document compiler options in build scripts for reproducibility.</li>



<li>Prefer makefiles or build systems (CMake, autotools) to manage complex builds.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">8. Summary</h2>



<p class="wp-block-paragraph">GCC remains a fundamental tool in software development, powering the compilation of millions of applications worldwide. Its rich feature set, multi-language support, and extensive architecture support make it indispensable for developers from embedded systems to high-performance computing.</p>



<p class="wp-block-paragraph">Mastering GCC’s workflow, commands, and optimization features will significantly enhance your programming efficiency and the performance of your compiled applications.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/gcc-explained-architecture-use-cases-workflow-and-getting-started/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fundamental Tutorials of Bash</title>
		<link>https://www.bestdevops.com/fundamental-tutorials-of-bash/</link>
					<comments>https://www.bestdevops.com/fundamental-tutorials-of-bash/#respond</comments>
		
		<dc:creator><![CDATA[vijaykr123]]></dc:creator>
		<pubDate>Thu, 10 Aug 2023 12:48:26 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Fundamental]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=28935</guid>

					<description><![CDATA[What is Bash? Bash, short for &#8220;Bourne Again SHell,&#8221; is a widely used Unix shell and command-line interpreter. It is [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">What is Bash?</h2>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="835" height="469" data-id="28936" src="https://www.bestdevops.com/wp-content/uploads/2023/08/What-is-Bash-copy.jpg" alt="" class="wp-image-28936" srcset="https://www.bestdevops.com/wp-content/uploads/2023/08/What-is-Bash-copy.jpg 835w, https://www.bestdevops.com/wp-content/uploads/2023/08/What-is-Bash-copy-300x169.jpg 300w, https://www.bestdevops.com/wp-content/uploads/2023/08/What-is-Bash-copy-768x431.jpg 768w, https://www.bestdevops.com/wp-content/uploads/2023/08/What-is-Bash-copy-375x210.jpg 375w" sizes="auto, (max-width: 835px) 100vw, 835px" /></figure>
</figure>



<p class="wp-block-paragraph">Bash, short for &#8220;Bourne Again SHell,&#8221; is a widely used Unix shell and command-line interpreter. It is a command-line interface (CLI) that allows users to interact with their operating system and execute various commands, scripts, and programs. Bash is the default shell for many Linux distributions and macOS.</p>



<p class="wp-block-paragraph">Bash is a powerful shell that can be used to perform a variety of tasks, such as:</p>



<ul class="wp-block-list">
<li>Running programs</li>



<li>Managing files and directories</li>



<li>Editing text files</li>



<li>Scripting</li>



<li>Accessing remote systems</li>
</ul>



<h2 class="wp-block-heading">What are the top use cases of Bash?</h2>



<p class="wp-block-paragraph">Here are some of the top use cases of Bash:</p>



<ul class="wp-block-list">
<li>Running programs: Bash can be used to run programs. For example, you can use Bash to run a web server, a database server, or an application.</li>



<li>Managing files and directories: Bash can be used to manage files and directories. For example, you can use Bash to create, delete, move, and copy files and directories.</li>



<li>Editing text files: Bash can be used to edit text files. For example, you can use Bash to edit configuration files, scripts, and documentation.</li>



<li>Scripting: Bash is a scripting language, which means that you can write programs in Bash to automate tasks. Bash scripts are typically saved in files with the .sh extension.</li>



<li>Accessing remote systems: Bash can be used to access remote systems. For example, you can use Bash to connect to a server or a workstation and run commands on that system.</li>
</ul>



<h2 class="wp-block-heading">What is the feature of Bash?</h2>



<p class="wp-block-paragraph">Here are some of the features of Bash:</p>



<ul class="wp-block-list">
<li>Command-line interpreter: Bash is a command-line interpreter, which means that it can be used to interact with the operating system by entering commands.</li>



<li>Scripting language: Bash is a scripting language, which means that you can write programs in Bash to automate tasks. Bash scripts are typically saved in files with the .sh extension.</li>



<li>History: Bash has a history of commands that you have entered. You can use the history command to view your history and the up and down arrow keys to scroll through it.</li>



<li>Aliases: You can create aliases for commands that you use frequently. For example, you could create an alias for the ls command that displays the contents of the current directory in a more readable format.</li>



<li>Functions: You can create functions in Bash to group together related commands. For example, you could create a function that installs and configures a web server.</li>



<li>Variables: You can create variables in Bash to store data. For example, you could create a variable to store the path to your home directory.</li>



<li>Conditionals: You can use conditionals in Bash to control the flow of your program. For example, you could use an if statement to check if a file exists and then take action accordingly.</li>



<li>Loops: You can use loops in Bash to repeat a block of code a certain number of times or until a certain condition is met. For example, you could use a for loop to iterate over a list of files.</li>



<li>Regular expressions: You can use regular expressions in Bash to match patterns in text. For example, you could use a regular expression to find all of the files in a directory that end with the .txt extension.</li>
</ul>



<h2 class="wp-block-heading">What is the workflow of Bash?</h2>



<p class="wp-block-paragraph"><strong>The workflow of Bash is typically as follows:</strong></p>



<ul class="wp-block-list">
<li>Start a Bash shell: You can start a Bash shell by opening a terminal window.</li>



<li>Enter commands: You can enter commands into the Bash shell to interact with the operating system.</li>



<li>View the history: You can use the history command to view your history of commands.</li>



<li>Create aliases: You can create aliases for commands that you use frequently.</li>



<li>Create functions: You can create functions in Bash to group together related commands.</li>



<li>Use variables: You can use variables in Bash to store data.</li>



<li>Use conditionals: You can use conditionals in Bash to control the flow of your program.</li>



<li>Use loops: You can use loops in Bash to repeat a block of code a certain number of times or until a certain condition is met.</li>



<li>Use regular expressions: You can use regular expressions in Bash to match patterns in text.</li>



<li>Exit the Bash shell: You can exit the Bash shell by typing exit.</li>
</ul>



<h2 class="wp-block-heading">How Bash Works &amp; Architecture?</h2>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="490" height="415" data-id="28937" src="https://www.bestdevops.com/wp-content/uploads/2023/08/linux-architecture.png" alt="" class="wp-image-28937" srcset="https://www.bestdevops.com/wp-content/uploads/2023/08/linux-architecture.png 490w, https://www.bestdevops.com/wp-content/uploads/2023/08/linux-architecture-300x254.png 300w" sizes="auto, (max-width: 490px) 100vw, 490px" /></figure>
</figure>



<p class="wp-block-paragraph">Bash is a command-line interpreter (shell) that is used to interact with the operating system. It is a popular shell for Linux and macOS systems. Bash works by reading commands from the user and executing them. When you enter a command in Bash, it is first parsed by the parser. The parser breaks the command down into its individual components, such as the command name, the arguments, and the options. Once the command has been parsed, it is then passed to the executor. The executor is responsible for actually executing the command. The executor will first check if the command is a built-in command. If it is, the executor will execute the command directly. If the command is not a built-in command, the executor will look for the command in the system path.</p>



<p class="wp-block-paragraph">If the command is found in the system path, the executor will then execute the command. The command will be executed in a child process of the Bash shell. This means that the Bash shell will continue to run even after the command has finished executing. The architecture of Bash is designed to be modular and extensible. This means that it is easy to add new features and functionality to Bash without having to change the core of the shell. The modular architecture of Bash also makes it easier to debug and troubleshoot problems. If a problem occurs in one module of Bash, it is usually possible to isolate the problem to that module and fix it without affecting the other modules.</p>



<p class="wp-block-paragraph">The extensible architecture of Bash makes it a popular platform for developers. Developers can create new extensions for Bash that add new features and functionality.</p>



<p class="wp-block-paragraph"><strong>Here are some of the key components of the Bash architecture:</strong></p>



<ul class="wp-block-list">
<li>The parser: The parser is responsible for breaking down the command into its individual components.</li>



<li>The executor: The executor is responsible for actually executing the command.</li>



<li>The system path: The system path is a list of directories that Bash will search for commands.</li>



<li>The child process: The child process is a process that is created by the Bash shell to execute a command.</li>



<li>The modules: Bash is made up of a number of modules, each of which is responsible for a specific task.</li>



<li>The extensions: Extensions are add-on packages that can be installed to add new features and functionality to Bash.</li>
</ul>



<h2 class="wp-block-heading">How to Install and Configure Bash?</h2>



<p class="wp-block-paragraph">Bash is usually pre-installed on most Linux and macOS systems. However, if it is not installed, you can install it using the following steps:</p>



<ul class="wp-block-list">
<li><strong>Linux:</strong>
<ul class="wp-block-list">
<li>Open a terminal window.</li>



<li>Type the following command:</li>
</ul>
</li>
</ul>


<pre class="wp-block-code"><span><code class="hljs language-javascript">sudo apt-<span class="hljs-keyword">get</span> install bash</code></span></pre>


<ul class="wp-block-list">
<li>macOS:
<ul class="wp-block-list">
<li>Open a terminal window.</li>



<li>Type the following command:</li>
</ul>
</li>
</ul>


<pre class="wp-block-code"><span><code class="hljs">brew install bash</code></span></pre>


<p class="wp-block-paragraph">Once Bash is installed, you can configure it by editing the .bashrc file. The .bashrc file is a configuration file that is used to set the default settings for Bash.</p>



<p class="wp-block-paragraph">To edit the .bashrc file, open it in a text editor. The .bashrc file is usually located in your home directory.</p>



<p class="wp-block-paragraph">Once you have opened the .bashrc file, you can add the following lines to configure Bash:</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-keyword">export</span> PS1=<span class="hljs-string">"\u@\h \W \$ "</span>
alias ls=<span class="hljs-string">'ls -lh'</span></code></span></pre>


<p class="wp-block-paragraph">The first line sets the default prompt for Bash. The second line creates an alias for the ls command.</p>



<p class="wp-block-paragraph">You can also add other configuration options to the .bashrc file. For more information, you can refer to the Bash manual.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/fundamental-tutorials-of-bash/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fundamental Tutorials of Linux</title>
		<link>https://www.bestdevops.com/fundamental-tutorials-of-linux/</link>
					<comments>https://www.bestdevops.com/fundamental-tutorials-of-linux/#respond</comments>
		
		<dc:creator><![CDATA[vijaykr123]]></dc:creator>
		<pubDate>Wed, 09 Aug 2023 06:58:34 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Fundamental]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=28867</guid>

					<description><![CDATA[What is Linux? Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">What is Linux?</h2>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="760" height="395" data-id="28869" src="https://www.bestdevops.com/wp-content/uploads/2023/08/what-is-linux_.jpg" alt="" class="wp-image-28869" srcset="https://www.bestdevops.com/wp-content/uploads/2023/08/what-is-linux_.jpg 760w, https://www.bestdevops.com/wp-content/uploads/2023/08/what-is-linux_-300x156.jpg 300w" sizes="auto, (max-width: 760px) 100vw, 760px" /></figure>
</figure>



<p class="wp-block-paragraph">Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is a free and open-source operating system, which means that anyone can use, modify, and redistribute the source code without any restrictions. This makes Linux a very popular choice for servers and embedded systems, where security and reliability are important. Linux is also becoming increasingly popular for desktop and laptop computers. There are many different Linux distributions available, each with its own unique features and user interface. Some of the most popular Linux distributions include Ubuntu, Fedora, and Debian.</p>



<p class="wp-block-paragraph"><strong>Here are some of the benefits of using Linux:</strong></p>



<ul class="wp-block-list">
<li>Free and open-source: Linux is free to use and modify, which means that you can save money on your operating system costs.</li>



<li>Secure: Linux is known for its security features. It has several security features built-in, such as kernel hardening and SELinux.</li>



<li>Reliable: Linux is known for its reliability. It is a stable operating system that is unlikely to crash.</li>



<li>Customizable: Linux is very customizable. You can choose the distribution that best suits your needs and you can customize the look and feel of the operating system to your liking.</li>



<li>Portable: Linux can be installed on a variety of hardware platforms, from servers to smartphones.</li>
</ul>



<h2 class="wp-block-heading">What are the top use cases of Linux?</h2>



<p class="wp-block-paragraph">Here are some of the top use cases of Linux:</p>



<ul class="wp-block-list">
<li><strong>Servers:</strong> Linux is the most popular operating system for servers. It is used by a wide range of businesses and organizations, from small businesses to large enterprises. Linux is a good choice for servers because it is secure, reliable, and scalable.</li>



<li><strong>Embedded systems:</strong> Linux is also a popular operating system for embedded systems. Embedded systems are devices that have a dedicated purpose, such as a router, a printer, or a car. Linux is a good choice for embedded systems because it is small, efficient, and reliable.</li>



<li><strong>Desktop computers: </strong>Linux is becoming increasingly popular for desktop computers. There are many different Linux distributions available that are designed for desktop use. Linux is a good choice for desktop computers because it is free, secure, and customizable.</li>



<li><strong>Cloud computing: </strong>Linux is also a popular operating system for cloud computing. Cloud computing is a way to rent computing resources, such as servers, storage, and bandwidth, from a third-party provider. Linux is a good choice for cloud computing because it is scalable and reliable.</li>



<li><strong>Development: </strong>Linux is a popular operating system for development. It is used by a wide range of developers, from web developers to game developers. Linux is a good choice for development because it is free, powerful, and customizable.</li>
</ul>



<h2 class="wp-block-heading">What are the features of Linux?</h2>



<p class="wp-block-paragraph"><strong>Here are some of the key features of Linux:</strong></p>



<ul class="wp-block-list">
<li>Free and open-source: Linux is free to use and modify, which means that you can save money on your operating system costs.</li>



<li>Secure: Linux is known for its security features. It has a number of security features built-in, such as kernel hardening and SELinux.</li>



<li>Reliable: Linux is known for its reliability. It is a stable operating system that is unlikely to crash.</li>



<li>Customizable: Linux is very customizable. You can choose the distribution that best suits your needs and you can customize the look and feel of the operating system to your liking.</li>



<li>Portable: Linux can be installed on a variety of hardware platforms, from servers to smartphones.</li>



<li>Multiuser: Linux can be used by multiple users at the same time. This makes it a good choice for businesses and organizations where multiple people need to access the same computer.</li>



<li>Multitasking: Linux can run multiple programs at the same time. This makes it a good choice for users who want to be able to do multiple things at once, such as browsing the web while listening to music.</li>



<li>Networking: Linux is well-suited for networking. It has a number of networking features built-in, such as support for TCP/IP and SSH.</li>



<li>Command-line interface: Linux has a powerful command-line interface (CLI). This allows you to control the operating system and your applications from the command line.</li>



<li>Package management system: Linux has a package management system. This makes it easy to install, update, and remove software.</li>



<li>Community support: Linux has a large and active community of users and developers. This means that there is a lot of support available if you need help with anything.</li>
</ul>



<h2 class="wp-block-heading">What is the workflow of Linux?</h2>



<p class="wp-block-paragraph">The Linux workflow is the process of using Linux to complete tasks. It typically involves the following steps:</p>



<ul class="wp-block-list">
<li>Booting: The first step is to boot the Linux operating system. This can be done by pressing the power button on your computer and then following the on-screen instructions.</li>



<li>Logging in: Once the Linux operating system has been booted, you will need to log in. This can be done by entering your username and password.</li>



<li>Using the command-line interface: The Linux command-line interface (CLI) is a powerful tool that can be used to control the operating system and your applications. You can use the CLI to install software, manage files, and perform other tasks.</li>



<li>Using graphical user interface: Linux also has a graphical user interface (GUI) that can be used to control the operating system and your applications. The GUI is more user-friendly than the CLI, but it is not as powerful.</li>



<li>Shutting down: When you are finished using Linux, you can shut down the operating system. This can be done by pressing the power button on your computer and then following the on-screen instructions.</li>
</ul>



<h2 class="wp-block-heading">How Linux Works &amp; Architecture?</h2>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="451" data-id="28868" src="https://www.bestdevops.com/wp-content/uploads/2023/08/linux-architecture-new.png" alt="" class="wp-image-28868" srcset="https://www.bestdevops.com/wp-content/uploads/2023/08/linux-architecture-new.png 800w, https://www.bestdevops.com/wp-content/uploads/2023/08/linux-architecture-new-300x169.png 300w, https://www.bestdevops.com/wp-content/uploads/2023/08/linux-architecture-new-768x433.png 768w, https://www.bestdevops.com/wp-content/uploads/2023/08/linux-architecture-new-375x210.png 375w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>
</figure>



<p class="wp-block-paragraph">Linux is a Unix-like operating system developed by Linus Torvalds and his team of developers. It is a free and open-source operating system, which means that anyone can use, modify, and redistribute the source code without any restrictions. Linux is a layered operating system, which means that it is made up of a number of different layers that interact with each other. </p>



<p class="wp-block-paragraph"><strong>The following are the main layers of the Linux operating system:</strong></p>



<ul class="wp-block-list">
<li>Kernel: The kernel is the core of the operating system. It is responsible for managing the hardware resources of the computer, such as the CPU, memory, and storage.</li>



<li>System libraries: The system libraries provide the basic functions that are needed by the other components of the operating system. These functions include things like file I/O, networking, and cryptography.</li>



<li>Shell: The shell is a command-line interpreter that allows users to interact with the operating system. It is a text-based interface that allows users to type commands and then press Enter to execute them.</li>



<li>Applications: Applications are the programs that users run on the operating system. These programs can be anything from web browsers to word processors to games.</li>
</ul>



<h2 class="wp-block-heading">How to Install and Configure Linux?</h2>



<p class="wp-block-paragraph">Here are the steps on how to install and configure Linux:</p>



<p class="wp-block-paragraph"><strong>1.</strong> Choose a Linux distribution. There are many different Linux distributions available, each with its own strengths and weaknesses. Some popular distributions include Ubuntu, Fedora, and Debian. Do some research to find a distribution that is right for you.</p>



<p class="wp-block-paragraph"><strong>2. </strong>Download the Linux installation media. Once you have chosen a distribution, you can download the installation media from the distribution&#8217;s website. The installation media can be a DVD, USB drive, or even a web-based installer.</p>



<p class="wp-block-paragraph"><strong>3. </strong>Create a bootable installation media. If you are using a DVD or USB drive, you will need to create a bootable installation media. This can be done using a tool like UNetbootin.</p>



<p class="wp-block-paragraph"><strong>4. </strong>Boot your computer from the installation media. Once you have created a bootable installation media, you can boot your computer from it. To do this, you may need to change the boot order in your computer&#8217;s BIOS.</p>



<p class="wp-block-paragraph"><strong>5. </strong>Follow the installation instructions. The installation process will vary depending on the Linux distribution you are installing. However, most installations will involve the following steps:</p>



<ul class="wp-block-list">
<li>Partitioning your hard drive</li>



<li>Installing the Linux kernel and system software</li>



<li>Configuring your system settings</li>



<li>Creating a user account</li>
</ul>



<p class="wp-block-paragraph"><strong>6. </strong>Configure your Linux system. Once the installation is complete, you will need to configure your Linux system. This includes tasks such as:</p>



<ul class="wp-block-list">
<li>Installing software</li>



<li>Configuring your network settings</li>



<li>Configuring your desktop environment</li>



<li>Securing your system</li>
</ul>



<p class="wp-block-paragraph"><strong>7. </strong>Start using Linux! Once your Linux system is configured, you can start using it! Linux is a powerful and versatile operating system that can be used for a variety of tasks. There are many resources available to help you learn how to use Linux, including online tutorials, books, and forums.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/fundamental-tutorials-of-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to create a GitHub account?</title>
		<link>https://www.bestdevops.com/how-to-create-a-github-account/</link>
		
		<dc:creator><![CDATA[rahulkr]]></dc:creator>
		<pubDate>Thu, 07 Oct 2021 10:51:30 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Bitbucket]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[repositories]]></category>
		<category><![CDATA[Source Code]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=22143</guid>

					<description><![CDATA[Hello friends, welcome to the world of programming. Let’s start this. Like, you will have seen the title of the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/10/250-2507682_github-wallpaper-1024x576.jpg" alt="" class="wp-image-22145" width="780" height="438" srcset="https://www.bestdevops.com/wp-content/uploads/2021/10/250-2507682_github-wallpaper-1024x576.jpg 1024w, https://www.bestdevops.com/wp-content/uploads/2021/10/250-2507682_github-wallpaper-300x169.jpg 300w, https://www.bestdevops.com/wp-content/uploads/2021/10/250-2507682_github-wallpaper-768x432.jpg 768w, https://www.bestdevops.com/wp-content/uploads/2021/10/250-2507682_github-wallpaper-1536x864.jpg 1536w, https://www.bestdevops.com/wp-content/uploads/2021/10/250-2507682_github-wallpaper-375x210.jpg 375w, https://www.bestdevops.com/wp-content/uploads/2021/10/250-2507682_github-wallpaper.jpg 1600w" sizes="auto, (max-width: 780px) 100vw, 780px" /></figure></div>



<p class="wp-block-paragraph">Hello friends, welcome to the world of programming. Let’s start this. Like, you will have seen the title of the article. Today, I’m talking about GitHub, mainly talk will happen about GitHub. After that, you are taking to see some more platforms, those are like GitHub, that use of Git.</p>



<h2 class="wp-block-heading">Unlimited private repositories</h2>



<p class="wp-block-paragraph">Therefore, go to GitHub and looking for the pricing, for pricing, we go to the plans &amp; see the price. That GitHub was before 20I9, those were private repositories. They charged $7 for that but now that in the free plan unlimited public and private repositories, and unlimited collaborators so, here new features have come in 20I9 that are released. With unlimited public and private repositories, any user can make them in a free plan. Before 20I9, this plan was paid that if anyone wants to make private repositories so, they had to pay $7 for that then like as you can make in the free plan. There is one Gitlab, what is Gitlab? This is similar to <a href="https://www.devopsschool.com/">GitHub</a>. How much enough GitHub is famous? How much using it, how much Gitlab? one is a bit bucket which is given by atlas Ian, it is developed by atlas Ian. So, looking at the pricing of this, if you’re looking at the price of Gitlab. If you will look at there, those free plan is there. Look in that all stages of the DevOps cycle, it is also similar enough limit till the bit bucket, the pricing of this. Let’s take a look at the bit bucket.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="719" height="341" src="https://www.bestdevops.com/wp-content/uploads/2021/10/capture-2.png" alt="" class="wp-image-22154" srcset="https://www.bestdevops.com/wp-content/uploads/2021/10/capture-2.png 719w, https://www.bestdevops.com/wp-content/uploads/2021/10/capture-2-300x142.png 300w" sizes="auto, (max-width: 719px) 100vw, 719px" /></figure></div>



<h2 class="wp-block-heading">Pricing of bit bucket</h2>



<p class="wp-block-paragraph">Looking pricing of this, what is the pricing of it? In the plan of free up to five users. Something pricing of it means nearly it is similar. You can use any platform but we will talk about GitHub, we are going to use GitHub. So, let’s look, what is GitHub? GitHub is mine. There if you will go to the home page of GitHub then built for the developer, it is come write as from before on the first page. It is open-source of your, the meaning of open source is one type you can agree that it is a Facebook of developers, you can understand like this way. If you search the code of Linux, there you will get the code of Linux.</p>



<h2 class="wp-block-heading">Linux source code on GitHub</h2>



<p class="wp-block-paragraph">If you will search for the Linux, repositories of Torvalds on there. Those are like<strong><em> &#8220;Torvalds/ Linux</em></strong>&#8220;, they have uploaded there the source code of Linux. There is the full source code of Linux, you can see there how many times people have downloaded it. How much time commits? Even you can see an infinite number of contributors, how many releases and branches? Let’s understand about the numbers. How can you do it like, how can we do download, give own contributions? Right, how can we do that, we will see about these things. Now, we aren’t going to do GitHub in Linux, we shall see it as normal. How we do contributions and we make repositories. First, we do signup then for doing sign up, clicking on the signup option.</p>



<h2 class="wp-block-heading">Create GitHub account</h2>



<p class="wp-block-paragraph">After clicking on the signup option, the signup page will open then you will get to create your account space. After this,</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="716" height="338" src="https://www.bestdevops.com/wp-content/uploads/2021/10/Capture.png" alt="" class="wp-image-22156" srcset="https://www.bestdevops.com/wp-content/uploads/2021/10/Capture.png 716w, https://www.bestdevops.com/wp-content/uploads/2021/10/Capture-300x142.png 300w" sizes="auto, (max-width: 716px) 100vw, 716px" /></figure></div>



<ul class="wp-block-list"><li><strong>We will take a username like Beaproplayer024</strong></li><li><strong>Next, you will put Email address.</strong></li><li><strong>Again, let’s put password on it.</strong></li></ul>



<p class="wp-block-paragraph">After putting in the password, we will click on verify account option. After verification, we have done create an account then you have to do verify it. They have verified you. There below you will do join the free plan, if you should want a free plan, you don’t need to take paid plan. There, they will ask some questions so, you should take to complete it. Suppose, they ask questions like what kind of work do you do, mainly, how much programming experience do you have, and what do you plan to use GitHub for. Now, you have to click on the complete setup option. After this, one verification will send to your Gmail account like <a href="mailto:Beaproplayer024@gmail.com">Beaproplayer024@gmail.com</a> then from there you come to Gmail for verification and you do the verification. After email verification, your id will be active so, doing the skip for now option, move to the profile section. Your profile will open and there you can put your own bio, company name, and location by doing the edit option. There is a place where shows your joined GitHub, contribution like as your contribution and activities, it shows you. What activities we do, it will show about that things. </p>



<h3 class="wp-block-heading">Related video:</h3>



<figure class="wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy"  id="_ytid_86544"  width="675" height="379"  data-origwidth="675" data-origheight="379" src="https://www.youtube.com/embed/3ibKMOimquQ?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;" class="__youtube_prefs__  epyt-is-override  no-lazyload" title="YouTube player"  allow="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen data-no-lazy="1" data-skipgform_ajax_framebjll=""></iframe>
</div></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why does a programmer use git?</title>
		<link>https://www.bestdevops.com/why-do-we-use-git-in-programming/</link>
		
		<dc:creator><![CDATA[rahulkr]]></dc:creator>
		<pubDate>Tue, 05 Oct 2021 10:43:17 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[computer programming]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Importance]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[Software engineer]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=22074</guid>

					<description><![CDATA[Hello folks, welcome to the world of computer programming. So, if you’re a software engineer and either student or fresher. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/10/22-221469_git-1024x538.jpg" alt="" class="wp-image-22121" width="795" height="417" srcset="https://www.bestdevops.com/wp-content/uploads/2021/10/22-221469_git-1024x538.jpg 1024w, https://www.bestdevops.com/wp-content/uploads/2021/10/22-221469_git-300x158.jpg 300w, https://www.bestdevops.com/wp-content/uploads/2021/10/22-221469_git-768x403.jpg 768w, https://www.bestdevops.com/wp-content/uploads/2021/10/22-221469_git.jpg 1200w" sizes="auto, (max-width: 795px) 100vw, 795px" /></figure></div>



<p class="wp-block-paragraph">Hello folks, welcome to the world of computer programming. So, if you’re a software engineer and either student or fresher. And you do anything work-related to computer, doing any coding. So, you will have listened must about the GIT. What is GIT? Today, we talk about that stuff. Without doing any further delay, let’s start this from my article.</p>



<h2 class="wp-block-heading">Who is the developer of GIT?</h2>



<p class="wp-block-paragraph">Let’s see the first thing, the developer of that GIT whose name was<strong> “<em>Linus Torvalds”.</em></strong> This is an individual who’s made our Linus kernel. It is also open-source. Right, it is our <a href="https://www.devopsschool.com/">open source</a> and in that, anybody can give their contribution. Linus is open-source that means anyone can contribute to it, so there are thousands of people who are contributing to it.</p>



<h2 class="wp-block-heading">What is the Linux kernel?</h2>



<p class="wp-block-paragraph">&nbsp;You will have listened in that for this you shouldn’t want any license, doing download any source code in this. After that, you have to do modification, do modification, and put any features in that. You can deploy this on the server. If they feel good then will add in features. You can do like as. GIT is also our open-source. Now, what is the need of GIT?</p>



<h2 class="wp-block-heading">Importance of GIT</h2>



<p class="wp-block-paragraph">&nbsp;If the talks come of about git so, what is the need of it? Suppose you’re doing a project, we are five people that are doing projects. After that, suppose we have to do code exchange then we will do mail to code, mailed it, or uploaded in drive. First, drive where we will have put all codes. Suppose, there is a place where any other person has sent code to me then will happen far away. We will do a download and set of it. Like be any system,  whose every code do automatically, everything sets itself to happen. Automatically code merge on that place. Therefore, our use of git. If we use of git then that difficulties are coming, even five people come difficulty in working, they things will happen far away. How much no. of employees and teams can use. Our task will be easy. It is also doing our communication and code management easy. our GIT is based on source code management (SCM). It means that those manages of our source code, keep code in the right way. Therefore, we say distributed version control system to this.</p>



<div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/10/605-6050776_git-switch-branch-vs-git-checkout-branch-git.png" alt="" class="wp-image-22110" width="780" height="390" srcset="https://www.bestdevops.com/wp-content/uploads/2021/10/605-6050776_git-switch-branch-vs-git-checkout-branch-git.png 860w, https://www.bestdevops.com/wp-content/uploads/2021/10/605-6050776_git-switch-branch-vs-git-checkout-branch-git-300x150.png 300w, https://www.bestdevops.com/wp-content/uploads/2021/10/605-6050776_git-switch-branch-vs-git-checkout-branch-git-768x384.png 768w" sizes="auto, (max-width: 780px) 100vw, 780px" /></figure></div>



<h2 class="wp-block-heading">What is distributed version control system?</h2>



<p class="wp-block-paragraph">What does it mean? Distributed version control system means that every one version of, you have made the first file then the second file, all of these versions those we will do changes in the file that changes they do keep save. We can return to the previous change. we see this in more detail, suppose we do a project in that some features or chat application, we make of that. So, what will we do, when first happens start, for starting we will release it put some minimum features. I have in forward, some changes come in that code. Suppose, we have to add new features then new features come. &nbsp;&nbsp;</p>



<h2 class="wp-block-heading">Importance of version control system</h2>



<p class="wp-block-paragraph">Those my previous software such as chat application in that new features drops then something version will make, you will have listened to some version like version 1.2, 1.3 and 2.0. What is it happens? This is updation in code, we make that code or even any software are making so, that in time to time updation happens. The responsibility to keep care of all updations of GIT. Like new features read and after, read some more features. The version in that they will be changing. Like some more features have been released, while in that time version 1.1 will have made, again read some more features then version 1.2 has come and read more features so, version 1.3 has come. Suppose, these all are codes of mine, all have been put in my local machine. For saving all of them, we shall have stored to them so, what we will do? We will store of all in storage. Now, that will store in that when we will do updations then suppose we are running version v1.3, my client says to me that we shouldn’t want version v1.3, we should want version v1.2. So, we will move in storage then we will download that file from there and after this, we will upload it. Nothing like as it doesn’t practical. Suppose, one huge project of mine then we will don’t like it as continuously we will move in storage, dropbox, or google drive, we will download from there and after that upload it. It is so long process and doesn&#8217;t practically exist, Codes can be misguided. Now, you, whenever little bit changes come to like even <em>semicolon </em>problems come then how much errors come. Therefore, for this, we will use GIT. We use GIT because it will have to care of all these versions. Suppose, one of my machines, we’re working on that machine, and the server is situated nearby you and there will place in that we will say repository or remote repository. Those on the server, we call him remote repository because they’re put in the server, there we don’t do changes and we do changes when we do download. That repository will have made in sever, we will do download. Those we will do download in the machine, we will call him remote repository and same as another user has downloaded it, they will also work. They all will upload their own changes, again they will upload changes in the server. Repository, you can understand like as it is the only folder in which we have some projects.</p>



<div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/10/604-6049847_centralized-version-control-system-workflow-version-control-git.png" alt="" class="wp-image-22111" width="733" height="364" srcset="https://www.bestdevops.com/wp-content/uploads/2021/10/604-6049847_centralized-version-control-system-workflow-version-control-git.png 860w, https://www.bestdevops.com/wp-content/uploads/2021/10/604-6049847_centralized-version-control-system-workflow-version-control-git-300x149.png 300w, https://www.bestdevops.com/wp-content/uploads/2021/10/604-6049847_centralized-version-control-system-workflow-version-control-git-768x381.png 768w" sizes="auto, (max-width: 733px) 100vw, 733px" /></figure></div>



<h2 class="wp-block-heading">What is trunk-based development?</h2>



<p class="wp-block-paragraph">Our GIT runs on trunk-based development. Who says trunk-based development? Trunk-based development means we can make branches. So, what do branches means? Suppose, mine has version v1.3. That is one of the stable versions and has been uploaded, software is running then our team will work in the latest version, my team is working on version v2.0. Now, those of your stable version comes any bug, one user says that something bug in this. When the bugs come in this so, it will report. When it will report then what will we do? We will not do like as we will not leave version 2.0, we will also work on that. Now, through GIT, we can make branches, we can work simultaneously on GIT through the branch.</p>



<div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/10/u72ds137p52pds6ibckk.jpg" alt="" class="wp-image-22113" width="789" height="331" srcset="https://www.bestdevops.com/wp-content/uploads/2021/10/u72ds137p52pds6ibckk.jpg 1000w, https://www.bestdevops.com/wp-content/uploads/2021/10/u72ds137p52pds6ibckk-300x126.jpg 300w, https://www.bestdevops.com/wp-content/uploads/2021/10/u72ds137p52pds6ibckk-768x323.jpg 768w" sizes="auto, (max-width: 789px) 100vw, 789px" /></figure></div>



<h2 class="wp-block-heading">What is the master branch?</h2>



<p class="wp-block-paragraph"> Let’s look, how we do this. Like one of mine branch, by default we take changes, it happens in master branch. Suppose, doing changes, commit it. We are doing in the master branch, again doing changes, commit it. When we do commit then we add any version or features, again doing changes, commit it. Your version is similar there. Suppose, there is version v1.3, the bug has come in this. We are working own in what, we are also working on version v2.0. Definitely, we have to do work on the latest version and we also have to do fixes bugs of v1.3. So, what we will do? We will make a branch on there, there will make one branch where we can manage version 2.0 and coding also. This 1.3 version will move to differ. Like a tree, you can work on different versions through branching.</p>



<h3 class="wp-block-heading">Related video:</h3>



<figure class="wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy"  id="_ytid_65700"  width="675" height="379"  data-origwidth="675" data-origheight="379" src="https://www.youtube.com/embed/CqSnEiKnDpA?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;" class="__youtube_prefs__  epyt-is-override  no-lazyload" title="YouTube player"  allow="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen data-no-lazy="1" data-skipgform_ajax_framebjll=""></iframe>
</div></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Configuring Virtual Hosting in Apache</title>
		<link>https://www.bestdevops.com/configuring-virtual-hosting-in-apache/</link>
		
		<dc:creator><![CDATA[pradeep]]></dc:creator>
		<pubDate>Fri, 20 Aug 2021 10:23:22 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[virtual host]]></category>
		<category><![CDATA[Virtual machines]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=19505</guid>

					<description><![CDATA[&#8220;Virtual hosting is a method for hosting multiple domain names (with separate handling of each name) on a single server [&#8230;]]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Virtual hosting is a method for hosting multiple domain names (with separate handling of each name) on a single server (or pool of servers).&#8221;</p><cite>Wikipedia</cite></blockquote>



<h2 class="wp-block-heading">How Does Apache Know Which Site to Serve?</h2>



<p class="wp-block-paragraph"><br>The short answer to your specific case: apache will serve the FIRST overlapping virtual host. Since 000-default is before fc.localhost in the alphabet the first virtualhost is loaded and served.</p>



<p class="wp-block-paragraph">To answer what i assume is the follow up question: You can host many sites on the same IP:PORT using named VirtualHosts</p>



<p class="wp-block-paragraph">T<strong>he host field in the http request header identifies which site (virtual<br>host) to serve:</strong></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-110.png" alt="" class="wp-image-19506" width="571" height="66" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-110.png 742w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-110-300x35.png 300w" sizes="auto, (max-width: 571px) 100vw, 571px" /></figure>



<p class="wp-block-paragraph"><strong>Matched against the containers in the configuration file</strong></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-111.png" alt="" class="wp-image-19507" width="651" height="413" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-111.png 920w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-111-300x191.png 300w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-111-768x488.png 768w" sizes="auto, (max-width: 651px) 100vw, 651px" /></figure>



<h2 class="wp-block-heading">A More Complete Virtual Host Definition</h2>



<p class="wp-block-paragraph">You can put (almost) any directive inside a virtual host container For example, it&#8217;s common to write separate logs for each site</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-113.png" alt="" class="wp-image-19509" width="608" height="166" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-113.png 735w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-113-300x82.png 300w" sizes="auto, (max-width: 608px) 100vw, 608px" /></figure>



<h2 class="wp-block-heading">Name Resolution</h2>



<ol class="wp-block-list"><li><strong>In the &#8220;real world&#8221; our East and West sites would each have an entry in DNS (Domain Name Service)</strong></li><li><strong>Our demonstration system uses only /etc/hosts for name resolution:</strong></li></ol>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-114.png" alt="" class="wp-image-19510" width="426" height="91" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-114.png 579w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-114-300x64.png 300w" sizes="auto, (max-width: 426px) 100vw, 426px" /></figure>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Basic Apache Configuration</title>
		<link>https://www.bestdevops.com/basic-apache-configuration/</link>
		
		<dc:creator><![CDATA[pradeep]]></dc:creator>
		<pubDate>Fri, 20 Aug 2021 10:12:34 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[httpd.conf]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=19495</guid>

					<description><![CDATA[Apache&#8217;s Modular Architecture corepreforkhttp_coremod_soLoadModuledirectives mod_aliasmod_mimemod_proxymod_rewritemod_status The core executable others … The directory Apache The httpd package we installed includes the [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Apache&#8217;s Modular Architecture</h2>



<figure class="wp-block-table"><table><tbody><tr><td>core<br>prefork<br>http_core<br>mod_so<br>LoadModule<br>directives</td><td>mod_alias<br>mod_mime<br>mod_proxy<br>mod_rewrite<br>mod_status<br></td></tr><tr><td>The core executable</td><td>others …</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><br>The directory Apache </h3>


<pre class="wp-block-code"><span><code class="hljs">/usr/lib64/httpd/modules</code></span></pre>


<h3 class="wp-block-heading">The httpd package we installed includes the config file:</h3>


<pre class="wp-block-code"><span><code class="hljs">/etc/httpd/conf/httpd.conf</code></span></pre>


<h3 class="wp-block-heading">Listening on a Port</h3>



<p class="wp-block-paragraph">You can restrict apache to listen on a specific network interface </p>



<p class="wp-block-paragraph"><strong>Listen 22</strong>.<strong>33.44.55:80</strong></p>



<h3 class="wp-block-heading">Setting the Document Root</h3>



<p class="wp-block-paragraph"><br>The DocumentRoot defines the top-level directory of the web site</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-107.png" alt="" class="wp-image-19498" width="658" height="357" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-107.png 891w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-107-300x163.png 300w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-107-768x416.png 768w" sizes="auto, (max-width: 658px) 100vw, 658px" /></figure>



<h3 class="wp-block-heading">Setting an Identity</h3>



<p class="wp-block-paragraph" id="block-8cc19c6e-ade0-4125-bc09-ae275db16722">Apache needs a user identity to run as Used to perform access control checks to the file system</p>



<h3 class="wp-block-heading">Defining Multi-Process Settings</h3>



<p class="wp-block-paragraph">To improve response times, apache manages a pool of &#8220;spare&#8221; server<br>processes<br>These numbers control the size of the pool:</p>



<figure class="wp-block-table"><table><tbody><tr><td>StartServers</td><td>8</td></tr><tr><td>MinSpareServers</td><td>5</td></tr><tr><td>MaxSpareServers</td><td>20</td></tr><tr><td>ServerLimit</td><td>256</td></tr><tr><td>MaxClients</td><td>256</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Containers</h2>



<p class="wp-block-paragraph"><strong>Container directives use XML-style opening / closing tags</strong></p>



<p class="wp-block-paragraph">Restrict the scope of the directives they contain</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="570" height="225" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-108.png" alt="" class="wp-image-19501" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-108.png 570w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-108-300x118.png 300w" sizes="auto, (max-width: 570px) 100vw, 570px" /></figure>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-109.png" alt="" class="wp-image-19503" width="614" height="323" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-109.png 755w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-109-300x158.png 300w" sizes="auto, (max-width: 614px) 100vw, 614px" /></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Laravel Permissions to set on Storage folder on Linux.</title>
		<link>https://www.bestdevops.com/laravel-permissions-to-set-on-storage-folder-on-linux/</link>
		
		<dc:creator><![CDATA[Sushant Kumar]]></dc:creator>
		<pubDate>Mon, 16 Aug 2021 07:30:00 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[laravel]]></category>
		<category><![CDATA[laravel application]]></category>
		<category><![CDATA[Laravel Permissions]]></category>
		<category><![CDATA[Laravel Permissions on Storage folder]]></category>
		<category><![CDATA[Linux Permissions for Laravel]]></category>
		<category><![CDATA[Storage folder Permissions]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=19025</guid>

					<description><![CDATA[When we Setup laravel project on linux server then we have to give permissions to all folder&#8217;s, sub-folder&#8217;s and files [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When we Setup laravel project on linux server then we have to give permissions to all folder&#8217;s, sub-folder&#8217;s and files in laravel Storage folder. So, i&#8217;m providing the list of permission which you have to set in storage folder. I&#8217;m providing this list because we can&#8217;t set <strong>777</strong> permission to all folders, if we do then it&#8217;s may be a security concern.</p>



<p class="wp-block-paragraph">So i&#8217;m providing a complete list of each folder&#8217;s and sub-folder&#8217;s permissions.</p>



<ol class="wp-block-list"><li><strong>storage </strong>&#8211; <strong><span class="has-inline-color has-primary-color">755</span></strong>.<br><br></li><li><strong>storage/app</strong> &#8211; <strong><span class="has-inline-color has-primary-color">755</span></strong>.<br><strong>storage/app/public</strong> &#8211; <strong><span class="has-inline-color has-primary-color">755</span></strong>.<br><br></li><li><strong>storage/framework</strong> &#8211; <strong><span class="has-inline-color has-primary-color">755</span></strong>.<br><strong>storage/framework/views</strong> &#8211; <strong><span class="has-inline-color has-primary-color">777</span></strong>.<br><strong>storage/framework/testing</strong> &#8211; <strong><span class="has-inline-color has-primary-color">755</span></strong>.<br><strong>storage/framework/sessions</strong> &#8211; <strong><span class="has-inline-color has-primary-color">777</span></strong>.<br><strong>storage/framework/cache</strong> &#8211; <strong><span class="has-inline-color has-primary-color">755</span></strong>.<br></li><li><strong>storage/logs</strong> &#8211; <strong><span class="has-inline-color has-primary-color">755</span></strong>.</li></ol>



<p class="wp-block-paragraph">That&#8217;s all. Hope this article will solved your problem.</p>



<p class="wp-block-paragraph">Keep Exploring.</p>



<p class="wp-block-paragraph">Thanks for reading.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Find Public IP Address in Linux or Windows.</title>
		<link>https://www.bestdevops.com/how-to-find-public-ip-address-in-linux-or-windows/</link>
		
		<dc:creator><![CDATA[Sushant Kumar]]></dc:creator>
		<pubDate>Sat, 14 Aug 2021 07:10:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Find Public IP Address]]></category>
		<category><![CDATA[IP Address]]></category>
		<category><![CDATA[IP Address in Linux]]></category>
		<category><![CDATA[IP Address in Windows]]></category>
		<category><![CDATA[windows 10]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=19019</guid>

					<description><![CDATA[For Windows To find public ip address in windows just visit the below website it will show you the ip. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="has-text-align-center wp-block-heading"><span class="has-inline-color has-primary-color">For Windows</span></h2>



<p class="wp-block-paragraph">To find public ip address in windows just visit the below website it will show you the ip.</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">https:<span class="hljs-comment">//www.whatismyip.com</span></code></span></pre>


<h2 class="has-text-align-center wp-block-heading"><span class="has-inline-color has-primary-color">For linux</span></h2>



<p class="wp-block-paragraph">If you are using terminal and want to find your public ip address, then you have to run the below command in your terminal</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">wget –O – –q https:<span class="hljs-comment">//checkip.amazonaws.com</span></code></span></pre>

<pre class="wp-block-code"><span><code class="hljs language-javascript">curl –s https:<span class="hljs-comment">//icanhazip.com</span></code></span></pre>


<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="655" height="100" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-69.png" alt="" class="wp-image-19020" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-69.png 655w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-69-300x46.png 300w" sizes="auto, (max-width: 655px) 100vw, 655px" /></figure></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[Solved] Linux : How to uninstall Xampp in Linux (ubuntu) Machine.</title>
		<link>https://www.bestdevops.com/how-to-uninstall-xampp-in-linux-ubuntu-machine/</link>
		
		<dc:creator><![CDATA[Sushant Kumar]]></dc:creator>
		<pubDate>Fri, 13 Aug 2021 17:33:00 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[XAMPP]]></category>
		<category><![CDATA[linux xampp]]></category>
		<category><![CDATA[uninstall Xampp]]></category>
		<category><![CDATA[uninstall Xampp in Linux]]></category>
		<category><![CDATA[xampp]]></category>
		<category><![CDATA[xampp uninstall]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=19003</guid>

					<description><![CDATA[If You Want to uninstall Xampp from your linux machine, then follow the Below Steps :- Step 1 :- first [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">If You Want to uninstall Xampp from your linux machine, then follow the Below Steps :- </p>



<p class="wp-block-paragraph"><strong><span class="has-inline-color has-primary-color">Step 1 :-</span></strong> first Stop the server from running by below command</p>



<p class="has-text-align-center wp-block-paragraph"><strong><em>sudo /opt/lampp/lampp stop</em></strong></p>



<p class="wp-block-paragraph"><span class="has-inline-color has-primary-color"><strong>Step 2 :-</strong></span> Now run below command to uninstall Xampp.</p>



<p class="has-text-align-center wp-block-paragraph"><strong><em>sudo /opt/lampp/uninstall</em></strong></p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="578" height="251" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-66.png" alt="" class="wp-image-19004" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-66.png 578w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-66-300x130.png 300w" sizes="auto, (max-width: 578px) 100vw, 578px" /></figure></div>



<p class="wp-block-paragraph"><strong><em><span class="has-inline-color has-primary-color">Step 3 :-</span></em></strong> Now run the below command to remove Xampp All leftover files.</p>



<p class="has-text-align-center wp-block-paragraph"><strong><em>sudo rm -r /opt/lampp</em></strong></p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="555" height="227" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-67.png" alt="" class="wp-image-19005" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-67.png 555w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-67-300x123.png 300w" sizes="auto, (max-width: 555px) 100vw, 555px" /></figure></div>



<p class="wp-block-paragraph">As you can see in the screenshot, after running the command all files are removed and when xampp is also not starting, it means xampp is successfully uninstalled from our linux machine.</p>



<p class="wp-block-paragraph">That&#8217;s All. I hope this article helps you to uninstall xampp.</p>



<p class="wp-block-paragraph">Keep Exploring.</p>



<p class="wp-block-paragraph">Thanks for reading.</p>



<p class="wp-block-paragraph"> </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What are Linux Users, Groups and Permissions</title>
		<link>https://www.bestdevops.com/what-are-linux-users-and-groups-and-permissions/</link>
		
		<dc:creator><![CDATA[pradeep]]></dc:creator>
		<pubDate>Sat, 07 Aug 2021 09:36:42 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[permission]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[userGroups]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=18834</guid>

					<description><![CDATA[If you are new to Linux/Unix, then the concept of permissions may be confusing. This guide provides you with an [&#8230;]]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>If you are new to Linux/Unix, then the concept of permissions may be confusing. This guide provides you with an explanation of what permissions are, how they work, and how to manage them. A number of examples are provided to illustrate how to set and change permissions for both users and groups.</p></blockquote>



<h2 class="wp-block-heading" id="what-are-linux-user-and-group-permissions">What are Linux User and Group Permissions?</h2>



<p class="wp-block-paragraph">Linux/Unix operating systems have the ability to multitask in a manner similar to other operating systems. However, Linux’s major difference from other operating systems is its ability to have multiple users. Linux was designed to allow more than one user to have access to the system at the same time. In order for this multiuser design to work properly, there needs to be a method to protect users from each other. This is where permissions come in to play.</p>



<h3 class="wp-block-heading" id="read-write--execute-permissions">Read, Write, &amp; Execute Permissions</h3>



<p class="wp-block-paragraph">Permissions are the “rights” to act on a file or directory. The basic rights are read, write, and execute.</p>



<ul class="wp-block-list"><li><strong>Read</strong>: a readable permission allows the contents of the file to be viewed. A read permission on a directory allows you to list the contents of a directory.</li><li><strong>Write</strong>: a write permission on a file allows you to modify the contents of that file. For a directory, the write permission allows you to edit the contents of a directory (e.g. add/delete files).</li><li><strong>Execute</strong>: for a file, the executable permission allows you to run the file and execute a program or script. For a directory, the execute permission allows you to change to a different directory and make it your current working directory. Users usually have a default group, but they may belong to several additional groups.</li></ul>



<h3 class="wp-block-heading" id="viewing-file-permissions">Viewing File Permissions</h3>



<p class="wp-block-paragraph">To view the permissions on a file or directory, issue the command&nbsp;<code>ls -l &lt;directory/file&gt;</code>. Remember to replace the information in the&nbsp;<code>&lt;directory/file&gt;</code>&nbsp;with the actual file or directory name. Below is sample output for the&nbsp;<code>ls</code>&nbsp;command:</p>


<pre class="wp-block-code"><span><code class="hljs">-rw-r--r-- 1 root root 1031 Nov 18 09:22 /etc/passwd</code></span></pre>


<ul class="wp-block-list"><li>The first ten characters show the access permissions. </li><li>The first dash (<code>-</code>) indicates the type of file (<code>d</code>&nbsp;for directory,&nbsp;<code>s</code>&nbsp;for special file and&nbsp;<code>-</code>&nbsp;for a regular file).</li><li> The next three characters (<code>rw-</code>) define the owner’s permission to the file.</li></ul>



<p class="wp-block-paragraph"> In this example, the file owner has read and write permissions only. The next three characters (<code>r--</code>) are the permissions for the members of the same group as the file owner (which in this example is read only). The last three characters (<code>r--</code>) show the permissions for all other users and in this example it is read only.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-56.png" alt="" class="wp-image-18839" width="574" height="287" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-56.png 596w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-56-300x150.png 300w" sizes="auto, (max-width: 574px) 100vw, 574px" /></figure>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Deploy a Laravel project to ubuntu server using git</title>
		<link>https://www.bestdevops.com/deploy-a-laravel-project-to-ubuntu-server-using-git/</link>
		
		<dc:creator><![CDATA[pradeep]]></dc:creator>
		<pubDate>Fri, 06 Aug 2021 12:53:48 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[gitbash]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[laravel]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[xampp]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=18823</guid>

					<description><![CDATA[Steps to create project in local machine Step :1 Create a folder anywhere in your local computer with any name [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Steps to create project in local machine</h2>



<h3 class="wp-block-heading">Step :1 Create a folder anywhere in your local computer with any name (Mine is workspace)</h3>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="127" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-49-1024x127.png" alt="" class="wp-image-18824" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-49-1024x127.png 1024w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-49-300x37.png 300w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-49-768x96.png 768w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-49.png 1141w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>You can go for any name you want</figcaption></figure>



<h3 class="wp-block-heading">Step:2 Make sure git and gitbash is installed in your local machine if not download it from <a href="https://git-scm.com/downloads" target="_blank" rel="noreferrer noopener">here</a></h3>



<h3 class="wp-block-heading">Step:3 Login into your GitHub account and create a repository</h3>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-50.png" alt="" class="wp-image-18825" width="623" height="649" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-50.png 698w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-50-288x300.png 288w" sizes="auto, (max-width: 623px) 100vw, 623px" /></figure>



<h3 class="wp-block-heading">Step 4: Clone the repository into your local machine </h3>



<ul class="wp-block-list"><li>get inside your repository </li></ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="912" height="354" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-51.png" alt="" class="wp-image-18826" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-51.png 912w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-51-300x116.png 300w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-51-768x298.png 768w" sizes="auto, (max-width: 912px) 100vw, 912px" /></figure>



<ul class="wp-block-list"><li>Copy the URL under HTTPS area </li><li>There are many more ways to clone a repo but for time being use this method </li><li>Now get inside our workspace folder that we created before (local/workspace)</li><li>right click and open git bash or command line inside the folder </li></ul>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="843" height="390" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-52.png" alt="" class="wp-image-18827" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-52.png 843w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-52-300x139.png 300w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-52-768x355.png 768w" sizes="auto, (max-width: 843px) 100vw, 843px" /></figure>



<ul class="wp-block-list"><li>Run these git commands to get started </li></ul>


<pre class="wp-block-code"><span><code class="hljs">git init </code></span></pre>


<pre class="wp-block-preformatted">This is to&nbsp;initialize a new, empty repository </pre>


<pre class="wp-block-code"><span><code class="hljs language-php">git <span class="hljs-keyword">clone</span> https:<span class="hljs-comment">//github.com/pradeeprjth/laravelTestingProject.git &#91;HTTPS_URL_YOU_COPYED_FROM_GITHUB] </span></code></span></pre>


<pre class="wp-block-preformatted">This will clone everything stored in your remote repository into your local folder/repository
You will find a folder with the same name you created your repository </pre>



<h3 class="wp-block-heading">Step :5 paste your project/code inside the folder you just clone from the repository </h3>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-53.png" alt="" class="wp-image-18828" width="691" height="563" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-53.png 691w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-53-300x244.png 300w" sizes="auto, (max-width: 691px) 100vw, 691px" /></figure>



<ul class="wp-block-list"><li>Again run the below commands to push all the changes and codes back to the repository </li><li>Right click and open your git bash or cmd inside the folder </li></ul>


<pre class="wp-block-code"><span><code class="hljs">git add .</code></span></pre>


<pre class="wp-block-preformatted">The git add command&nbsp;<strong>adds a file to the Git staging area</strong>. This area contains a list of all the files you have recently changed.</pre>


<pre class="wp-block-code"><span><code class="hljs language-javascript">git commit -m<span class="hljs-string">"first_commit"</span></code></span></pre>


<pre class="wp-block-preformatted"><em>git commit</em>&nbsp;creates a commit, which is like a snapshot of your repository. These commits are snapshots of your entire repository at specific times. and you need to specify a commit message using -m flag including double quote</pre>


<pre class="wp-block-code"><span><code class="hljs">git push origin master    or    git push origin main </code></span></pre>


<pre class="wp-block-preformatted">git push -u origin master is&nbsp;<strong>used for pushing local content to GitHub</strong></pre>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-54.png" alt="" class="wp-image-18829" width="725" height="460" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-54.png 935w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-54-300x191.png 300w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-54-768x488.png 768w" sizes="auto, (max-width: 725px) 100vw, 725px" /><figcaption>Sorry for the CLI style I like it in this way </figcaption></figure>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">Step 6: Login to your remote machine or ubuntu machine and make sure xampp and composer is installed in that machine.</h3>



<p class="wp-block-paragraph">Follow this blog if xampp and composer are not installed in your remote/ubuntu machine </p>



<h3 class="wp-block-heading">1. Installed Xampp</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><a href="https://www.devopsschool.com/blog/installing-xampp-7-4-xxx-on-ubuntu/">How to install and Configure XAMPP on Ubuntu?</a></p><cite>This blog is written by Rajesh thanks to him.</cite></blockquote>



<h3 class="wp-block-heading">2. Another thing which is required is Composer</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><a href="https://www.bestdevops.com/install-composer-using-cli-in-ubuntu-globally/">Install composer using CLI in ubuntu (Globally)</a></p><cite>Follow this to install composer in your machine using CLI</cite></blockquote>



<h3 class="wp-block-heading">Stpe :7 Go to your htdocs folder or if you have lampp then www  folder and run below commands</h3>


<pre class="wp-block-code"><span><code class="hljs">git init </code></span></pre>


<pre class="wp-block-preformatted"> This is to&nbsp;initialize a new, empty repository but this time inside your remote machine </pre>


<pre class="wp-block-code"><span><code class="hljs language-php">git <span class="hljs-keyword">clone</span> https:<span class="hljs-comment">//github.com/pradeeprjth/laravelTestingProject.git &#91;HTTPS_URL_YOU_COPYED_FROM_GITHUB]</span></code></span></pre>


<pre class="wp-block-preformatted">Now as we already have pushed all our code into our repository so we'll get all the files folder into our htdocs folder or www folder </pre>



<h3 class="wp-block-heading">Step 8: Now to run the project we need to do some configuration </h3>



<ul class="wp-block-list"><li>Copy the .env.example file to .env coz git ignore some files and folder including our vendor folder which contains all our Laravel project files . To do this run the below command.</li></ul>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">cp</span> <span class="hljs-selector-class">.env</span><span class="hljs-selector-class">.example</span> <span class="hljs-selector-class">.env</span></code></span></pre>


<ul class="wp-block-list"><li>Install composer, as git ignores our vendor folder in order to get it back we need to run </li></ul>


<pre class="wp-block-code"><span><code class="hljs">composer install</code></span></pre>


<ul class="wp-block-list"><li>You may get an error while composer install </li><li><em>Class &#8216;Illuminate\Support\facades\Schema not found </em></li><li>In order to solve this go to your project folder in local and inside C:\xampp\htdocs\WrokSpace\laravelTestproject\app\Providers\AppServiceProvider.php</li><li>use this class in the top <br>use Illuminate\Support\Facades\Schema;</li></ul>



<ul class="wp-block-list"><li>Next thing is to set the APP_KEY value in your .env file, run the command below </li></ul>


<pre class="wp-block-code"><span><code class="hljs language-css"><span class="hljs-selector-tag">php</span> <span class="hljs-selector-tag">artisan</span> <span class="hljs-selector-tag">key</span><span class="hljs-selector-pseudo">:generate</span></code></span></pre>


<h3 class="wp-block-heading">Step 9: Now go to your browser and put your ip followed by the project name /public to visit the application</h3>



<h3 class="wp-block-heading">  </h3>


<pre class="wp-block-code"><span><code class="hljs language-javascript">http:<span class="hljs-comment">//90.437.1965.252/laravelTestproject/public/</span></code></span></pre>


<p class="wp-block-paragraph">That&#8217;s it hope it help&#8217;s someone out there.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Permissions required to make a Laravel project up and running in ubuntu (Linux)</title>
		<link>https://www.bestdevops.com/permissions-required-to-make-a-laravel-project-up-and-running-in-ubuntu-linux/</link>
		
		<dc:creator><![CDATA[pradeep]]></dc:creator>
		<pubDate>Fri, 06 Aug 2021 11:04:26 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[laravel]]></category>
		<category><![CDATA[permission]]></category>
		<category><![CDATA[permission_denied]]></category>
		<category><![CDATA[session]]></category>
		<guid isPermaLink="false">https://www.bestdevops.com/?p=18807</guid>

					<description><![CDATA[Before moving further, hope you have already installed xampp and composer in your machine.if not follow the below blog to [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Before moving further, hope you have already installed xampp and composer in your machine.<br>if not follow the below blog to do so.</h2>



<figure class="wp-block-embed is-type-wp-embed is-provider-devops-devsecops-sre-dataops-aiops wp-block-embed-devops-devsecops-sre-dataops-aiops"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="ipO4OKcLIx"><a href="https://www.bestdevops.com/install-a-laravel-project-inside-htdocs-folder-in-ubuntu/">Install a Laravel project inside htdocs folder in ubuntu</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Install a Laravel project inside htdocs folder in ubuntu&#8221; &#8212; Best DevOps" src="https://www.bestdevops.com/install-a-laravel-project-inside-htdocs-folder-in-ubuntu/embed/#?secret=J1P7D2j1fx#?secret=ipO4OKcLIx" data-secret="ipO4OKcLIx" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="636" height="186" src="https://www.bestdevops.com/wp-content/uploads/2021/08/image-48.png" alt="" class="wp-image-18808" srcset="https://www.bestdevops.com/wp-content/uploads/2021/08/image-48.png 636w, https://www.bestdevops.com/wp-content/uploads/2021/08/image-48-300x88.png 300w" sizes="auto, (max-width: 636px) 100vw, 636px" /></figure>



<h1 class="wp-block-heading">First permission:</h1>



<p class="wp-block-paragraph">As you know the first thing our browser needs to run a Laravel project is, the index file which is located in the public folder <br>so we need to make it read and writable so that our browser can access it and if required can modify it.</p>



<p class="wp-block-paragraph">Run the below command to grant access to the public folder </p>


<pre class="wp-block-code"><span><code class="hljs language-php">cd /opt/lampp/htdocs/YOUR_PROJECT
sudo chmod -R +rw <span class="hljs-keyword">public</span></code></span></pre>


<h1 class="wp-block-heading">Second permission:</h1>



<p class="wp-block-paragraph">The next permission if for the storage folder, as you already know when our Laravel projects runs it create some logs files automatically if any error found in you code base, </p>



<p class="wp-block-paragraph">Run the below command to grant access to the logs folder </p>


<pre class="wp-block-code"><span><code class="hljs">cd /opt/lampp/htdocs/YOUR_PROJECT
sudo chmod -R +rw storage</code></span></pre>


<h1 class="wp-block-heading">Third permission:</h1>



<p class="wp-block-paragraph">At the end, the final permission we have to give to our session folder which is located inside our <strong>storage/framework</strong> folder,<br>and every time we hit our project URL a new random session key is generated, that get stored in our session folder <br>so all of them are necessary to run a Laravel project </p>



<p class="wp-block-paragraph">Run the below command to grand access to the <strong>framework </strong>and session </p>


<pre class="wp-block-code"><span><code class="hljs">sudo chmod -R 775 framework
sudo chmod -R 775 session</code></span></pre>


<p class="wp-block-paragraph">That&#8217;s it, these all works for me hope it for you too </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Big Data Developers-Sandton / Remote-e-Merge IT Recruitment up to R500 per hour</title>
		<link>https://www.bestdevops.com/big-data-developers-sandton-remote-e-merge-it-recruitment-up-to-r500-per-hour/</link>
					<comments>https://www.bestdevops.com/big-data-developers-sandton-remote-e-merge-it-recruitment-up-to-r500-per-hour/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Mon, 14 Jun 2021 06:31:17 +0000</pubDate>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Apache Hadoop]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[BestDevOps]]></category>
		<category><![CDATA[Continuous integration tools]]></category>
		<category><![CDATA[CouchbaseDB]]></category>
		<category><![CDATA[Hive]]></category>
		<category><![CDATA[Impala]]></category>
		<category><![CDATA[Kudu]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[Oozie]]></category>
		<category><![CDATA[Pig]]></category>
		<category><![CDATA[Spark]]></category>
		<category><![CDATA[version control tools]]></category>
		<category><![CDATA[ZooKeeper]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=16681</guid>

					<description><![CDATA[Source:-https://illinoisnewstoday.com/ South Africa-based financial services group offers personal and business banking, credit cards, corporate and investment banks, wealth, investment management, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Source:-https://illinoisnewstoday.com/</p>
<p>South Africa-based financial services group offers personal and business banking, credit cards, corporate and investment banks, wealth, investment management, and bancassurance and is looking for big data developers ..</p>
<p>Incumbents are responsible for feature development, ongoing support and management, and service documentation. The platform provides messaging queues and blueprints for integration with existing upstream and downstream technology solutions.</p>
<p>Requirements:</p>
<p>Computer Science, Engineering, Physics, Mathematics or Equivalent Degree / Bachelor of Science<br />
Data application development and deployment<br />
Design and implement infrastructure tools, and work with horizontal frameworks and libraries<br />
Creating a data ingestion pipeline between a legacy data warehouse and a big data stack<br />
Application backend workflow automation<br />
Build and maintain back-end services created by multiple service frameworks<br />
Maintain and enhance applications backed by big data computing applications<br />
Learn new approaches and technologies enthusiastically<br />
Working on big data platforms (Vanilla Hadoop, Cloudera, Hortonworks)<br />
Experience with Scala or other functional languages ​​(Haskell, Clojure, Kotlin, Clean)<br />
Some experience with Apache Hadoop, Spark, Hive, Pig, Oozie, ZooKeeper, MongoDB, CouchbaseDB, Impala, Kudu, Linux, Bash, version control tools, continuous integration tools<br />
The reference number for this position is NN53139, which is in a remote contract position and offers rates up to R500 per hour. Contact Nigel [Email Address Removed] Or call him [Phone Number Removed]; Discuss this and other opportunities.</p>
<p>Are you ready to change the landscape? e-Merge IT Recruit is a niche professional recruiting agency. We offer candidates options to help them place the right developers and the right companies in the right roles.</p>
<p>Required skills:</p>
<p>Hadoop<br />
spark<br />
Hive<br />
MongoDB<br />
CouchbaseDB<br />
Kudu<br />
Linux</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/big-data-developers-sandton-remote-e-merge-it-recruitment-up-to-r500-per-hour/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Toradex extends Torizon as DevOps platform for IoT Linux devices</title>
		<link>https://www.bestdevops.com/toradex-extends-torizon-as-devops-platform-for-iot-linux-devices/</link>
					<comments>https://www.bestdevops.com/toradex-extends-torizon-as-devops-platform-for-iot-linux-devices/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Thu, 10 Jun 2021 07:43:43 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[BestDevOps]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Toradex]]></category>
		<category><![CDATA[Torizon]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=16635</guid>

					<description><![CDATA[Source:-https://www.dcvelocity.com/ Horw, Switzerland — Toradex is extending its Torizon operating system for use as a full IoT development and operations [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Source:-https://www.dcvelocity.com/</p>
<p>Horw, Switzerland — Toradex is extending its Torizon operating system for use as a full IoT development and operations (DevOps) platform for Linux devices. The operating system will now include free remotely hosted updates, device monitoring features, and a fleet management solution.</p>
<p>Torizon enables modern, iterative product development by seamlessly integrating hardware, a Linux OS, development tools, remote updates and fleet operations. The result is a scalable solution for devices requiring high reliability and security.</p>
<p>In the &#8216;Smarter Products Need Smarter Development&#8217; paper from May 2021, Forrester Consulting found that traditional embedded development practices are insufficient when building smart, digital products. They also reported that that 79% of decision-makers say challenges with smart product development and delivery negatively impact their firms in delivering digital products. (*Footnote: Smarter Products Need Smarter Development)</p>
<p>Torizon brings state-of-the-art product development principles to demanding applications in such industries as industrial automation, healthcare, smart cities and transportation. Torizon allows businesses to ship products quickly, continuously improve the user experience, fix bugs, and patch security vulnerabilities securely and robustly.</p>
<p>Software developers can take advantage of TorizonCore, a ready-to-use Linux distribution that eliminates the complexity of maintaining a custom-built embedded Linux distribution. Smart options allow developers to tailor TorizonCore to accommodate purpose-built hardware and special product needs. Torizon provides optional integration with modern tools, such as Visual Studio and Visual Studio Code, to speed up development.</p>
<p>Today, Toradex is announcing the extension of the Torizon platform to support not only development for IoT devices, but also the operation and maintenance of these devices. Torizon is seamlessly integrated with the latest Computer on Modules featuring NXP® i.MX 8, i.MX 7 and i.MX 6. Tight hardware and software integration offers excellent quality control and speeds up product development.</p>
<p>Torizon reduces the risk of device recalls: The device monitoring feature facilitates early detection of potential issues, and the upcoming remote access feature makes it possible to address those issues before they lead to device failures. Torizon also makes new business models possible, since businesses can offer software and features as paid add-ons, allow customers to monitor device fleets, and much more.</p>
<p>Toradex’s Computer on Modules and Linux offerings are proven in thousands of applications, many of which require extreme reliability. Torizon targets these same applications, and to meet these challenging requirements, Torizon offers a wide range of security and reliability features.</p>
<p>Toradex:<br />
Toradex specializes in embedded hardware and software, offering Arm®-based system-on-modules (SoMs), customized single-board computers (SBCs), and industrial-grade software. Toradex’s software offerings include Torizon, an easy-to-use, open-source embedded Linux distribution.</p>
<p>Toradex’s offerings are an ideal fit in fields like healthcare, transportation, industrial automation, testing and measurement, and smart cities. Its off-the-shelf, commercial SoMs for embedded computing are easy to use and pin-compatible for improved scalability. They also come with free premium support and long-term product availability. Through innovation, Toradex performs market-leading integration of hardware, software and services to reduce complexity, time-to-market, risk and costs for its customers.</p>
<p>Founded in 2003 and headquartered in Horw, Switzerland, the company’s network stretches across the globe, with offices in the U.S., Vietnam, China, India, Japan and Brazil</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/toradex-extends-torizon-as-devops-platform-for-iot-linux-devices/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Linux-based Continuous Integration and automated workflows for RISC-V</title>
		<link>https://www.bestdevops.com/linux-based-continuous-integration-and-automated-workflows-for-risc-v/</link>
					<comments>https://www.bestdevops.com/linux-based-continuous-integration-and-automated-workflows-for-risc-v/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Fri, 18 Dec 2020 06:27:55 +0000</pubDate>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[C-STAT]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[IARBuild]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[workflows]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=15157</guid>

					<description><![CDATA[Source:-https://www.newelectronics.co.uk IAR Systems, a supplier of software tools and services for embedded development, has released an update of its RISC-V [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Source:-https://www.newelectronics.co.uk</p>
<p>IAR Systems, a supplier of software tools and services for embedded development, has released an update of its RISC-V build tools that supports implementation in Linux-based frameworks for automated application build and test processes.</p>
<p>This addition further extends IAR Systems’ offering for flexible automated workflows, enabling streamlined workflows from the developer environment to Continuous Integration (CI). Thanks to the tools including the static code analysis tool C-STAT, code quality control from development to building and testing processes can now be achieved.</p>
<p>Smarter and more complex embedded applications are driving a need for more scalable and flexible software development environments. The RISC-V community now range from publicly funded research projects, all the way into some of the world’s largest corporations and what is true for all these organisations is a shared need for automated processes that ensure quality all the way from development into building and testing.</p>
<p>IAR Systems’ build tools for Linux makes it possible to optimise resources when it comes to the time developers spend in their projects, as well as to manage and utilize licenses and servers in an optimal way.</p>
<p>The tools can be easily integrated into different build systems, such as CMake or Ninja, and the command line build utility IARBuild streamlines building for easy integration with Continuous Integration engines like Jenkins and Bamboo.</p>
<p>With the integrated static analysis tool C-STAT, developers will be able to ensure code quality throughout the development and testing process. C-STAT proves code alignment with industry standards like MISRA C:2012, MISRA C++:2008 and MISRA C:2004, and also detects defects, bugs, and security vulnerabilities as defined by CERT C and the Common Weakness Enumeration (CWE).</p>
<p>&#8220;We have seen a huge demand for our newly released Build Tools for Linux for other architectures, which has led us to bring this opportunity also to RISC-V,” said Anders Holmberg, General Manager Embedded Development Tools, IAR Systems. “In setting up infrastructure for working with new technology, it can be easier to fully adapt best practices like CI and DevOps, and break with legacy ways of working. This will result in accelerated software development that can be quality-assured through flexible, automated workflows. Through the extended possibilities for building on Linux-based servers, we equip companies with streamlined workflows for enhanced productivity and strengthened team collaboration.”</p>
<p>The build tools for Linux includes the IAR C/C++ Compiler, IAR Assembler, Linker and library tools, IARBuild and runtime libraries. The tools also include the integrated static code analysis tool C-STAT. The IAR C/C++ Compiler adheres to a freestanding implementation of the C18 (ISO/IEC 9899:2018) programming language standard and supports all C++17 features.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/linux-based-continuous-integration-and-automated-workflows-for-risc-v/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Microsoft rolls out Azure Hybrid Benefit for Linux in India</title>
		<link>https://www.bestdevops.com/microsoft-rolls-out-azure-hybrid-benefit-for-linux-in-india/</link>
					<comments>https://www.bestdevops.com/microsoft-rolls-out-azure-hybrid-benefit-for-linux-in-india/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 12 Dec 2020 06:02:35 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[hybrid]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[maximise]]></category>
		<category><![CDATA[modernise]]></category>
		<category><![CDATA[RHEL]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=14984</guid>

					<description><![CDATA[Source:-https://www.expresscomputer.in Microsoft on Thursday announced the general availability of its Azure Hybrid Benefit solution for Linux customers in India. Azure [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Source:-https://www.expresscomputer.in</p>
<p>Microsoft on Thursday announced the general availability of its Azure Hybrid Benefit solution for Linux customers in India.</p>
<p>Azure Hybrid Benefit is a licensing benefit that helps organisations to cut the costs of running workloads in the cloud, Microsoft said.</p>
<p>It helps customers “seamlessly” migrate to on-premises Windows Server and SQL Server licenses, Red Hat Enterprise Linux (RHEL), and SUSE Linux Enterprise Server (SLES) virtual machines (VMs) to Microsoft Azure.</p>
<p>The solution enables significant reduction in cost of running workloads on-the-cloud by converting existing PAYG (pay-as-you-go) virtual machines (VMs) to bring-your-own-subscription (BYOS) billing, Microsoft said.</p>
<p>The solution gains significance in view of the fact that businesses face challenges in migrating workload to public cloud due to regulatory and data sovereignty related issues.</p>
<p>This is common in highly regulated industries such as financial services, healthcare, and government.</p>
<p>Also, some workloads, especially those related to edge, require low latency.</p>
<p>Additionally, many organisations have significant on-premises investments that they want to maximise so they choose to modernise on-location datacenters and traditional apps.</p>
<p>This includes in on-premises licenses and subscriptions, and the inability to migrate them to cloud often affects the return on investment and total cost of ownership.</p>
<p>Azure solves this by acknowledging this investment and not charging for subscriptions or licenses again when customers move to the cloud, Microsoft said.</p>
<p>Globally, over 1,500 Linux virtual machines were migrated during the preview period to Azure using the new Azure Hybrid Benefit capabilities, enabling significant cost reduction for enterprise running Linux workloads in Azure, the company added.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/microsoft-rolls-out-azure-hybrid-benefit-for-linux-in-india/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>5 Essential Digital Adoptions to Grow Your DevOps Enterprise</title>
		<link>https://www.bestdevops.com/5-essential-digital-adoptions-to-grow-your-devops-enterprise/</link>
					<comments>https://www.bestdevops.com/5-essential-digital-adoptions-to-grow-your-devops-enterprise/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Thu, 13 Aug 2020 05:33:13 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[IT technology]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SDLC]]></category>
		<category><![CDATA[Software-Market]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=13283</guid>

					<description><![CDATA[From source code management to CI/CD pipelines, discover five technology adoptions that help DevOps engineering teams scale efficiently, reduce manual effort, and accelerate software delivery.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Scaling a DevOps practice inside a large enterprise takes more than process change. Without the right tooling in place, even well-structured teams struggle to keep pace with rising software demand, distributed workforces, and the increasing complexity of modern application architectures. The five technology categories below address the most common friction points: version control discipline, environment consistency, observability, log analysis, and deployment automation.</p>



<h2 class="wp-block-heading">1. Source Code Management (SCM) Tools</h2>



<p class="wp-block-paragraph">Source code management is the foundation of any repeatable software delivery process. A well-configured SCM system gives every member of a distributed engineering team a single source of truth for application code, configuration files, and infrastructure definitions.</p>



<p class="wp-block-paragraph">Key capabilities to look for in an enterprise SCM tool include:</p>



<ul class="wp-block-list">
<li><strong>Branching and merging strategies</strong> — support for Git Flow, trunk-based development, or feature-flag workflows so teams can work in parallel without conflicts.</li>
<li><strong>Version history and rollback</strong> — the ability to compare any two commits and revert to a known-good state reduces the blast radius of bad releases.</li>
<li><strong>Access controls and audit logs</strong> — fine-grained permissions protect sensitive code and satisfy compliance requirements by tracking who changed what and when.</li>
<li><strong>Repository hosting and mirroring</strong> — self-hosted or cloud-hosted options (GitHub Enterprise, GitLab, Bitbucket Data Center) that integrate with the rest of the toolchain.</li>
</ul>



<p class="wp-block-paragraph">When SCM is tightly integrated with CI/CD pipelines and code review workflows, it becomes the control plane for the entire software delivery lifecycle rather than just a backup mechanism.</p>



<h2 class="wp-block-heading">2. Containerization Platforms</h2>



<p class="wp-block-paragraph">Containers solve one of the oldest enterprise software problems: environmental inconsistency between development, staging, and production. By packaging an application together with all of its dependencies into a portable, immutable image, containers make &quot;it works on my machine&quot; arguments largely irrelevant.</p>



<p class="wp-block-paragraph">Two tools dominate this space:</p>



<ul class="wp-block-list">
<li><strong>Docker</strong> — the de facto standard for building and running container images locally and in CI pipelines.</li>
<li><strong>Kubernetes</strong> — the leading container orchestration platform for scheduling, scaling, and managing containerized workloads across clusters in production.</li>
</ul>



<p class="wp-block-paragraph">Adopting containers also facilitates a microservices architecture. Large monolithic applications can be decomposed into independently deployable services, each versioned and scaled on its own schedule. Before committing to an orchestration platform, evaluate your team&#8217;s operational maturity, your existing infrastructure (on-premises vs. cloud), and whether managed Kubernetes offerings from your cloud provider (EKS, GKE, AKS) reduce the operational overhead.</p>



<h2 class="wp-block-heading">3. Structured Logging Libraries</h2>



<p class="wp-block-paragraph">Log files are among the most valuable diagnostic assets an engineering team produces — and among the most frequently misused. Traditional log output is free-form text, which is easy for humans to read line by line but difficult for machines to parse, aggregate, or alert on at scale.</p>



<p class="wp-block-paragraph">Structured logging solves this by emitting log entries as key-value pairs or JSON objects, making every log event immediately queryable by your observability platform. A concrete example is <strong>Logrus</strong>, a popular structured logging library for Go that is API-compatible with the standard <code>log</code> package. Teams can add fields such as request ID, user ID, service name, and severity level to every log entry without changing the consuming code.</p>



<p class="wp-block-paragraph">Practical benefits of structured logging at the enterprise scale include:</p>



<ul class="wp-block-list">
<li>Faster root-cause analysis because log data can be filtered and grouped without grep pipelines.</li>
<li>Integration with log aggregation platforms (Elasticsearch/OpenSearch, Splunk, Datadog) that index structured fields natively.</li>
<li>Consistent log schemas across services, which is critical when dozens of teams contribute to a shared observability stack.</li>
<li>Support for correlation IDs that trace a single request across multiple microservices.</li>
</ul>



<p class="wp-block-paragraph">Most modern languages have mature structured logging libraries. Investing time in a shared logging standard early pays dividends when debugging production incidents under pressure.</p>



<h2 class="wp-block-heading">4. Advanced Monitoring and Observability Systems</h2>



<p class="wp-block-paragraph">Monitoring tells you that something is wrong. Observability — the combination of metrics, logs, and distributed traces — tells you why. As DevOps enterprises scale, reactive alerting on a handful of server metrics is no longer sufficient.</p>



<p class="wp-block-paragraph">A mature monitoring stack typically includes:</p>



<ul class="wp-block-list">
<li><strong>Metrics collection and time-series storage</strong> — tools like Prometheus scrape application and infrastructure metrics at high resolution and store them for alerting and dashboards.</li>
<li><strong>Visualization</strong> — Grafana or equivalent dashboards surface real-time performance data to on-call engineers and leadership alike.</li>
<li><strong>Distributed tracing</strong> — OpenTelemetry-instrumented services emit trace spans that reveal latency bottlenecks across microservice call chains.</li>
<li><strong>Alerting and incident management</strong> — alert rules fire when SLO thresholds are breached, routing notifications to PagerDuty, Opsgenie, or Slack.</li>
<li><strong>SaaS alternatives</strong> — platforms like Datadog, New Relic, and Dynatrace bundle all of the above with minimal infrastructure overhead, which is valuable for teams without dedicated platform engineering resources.</li>
</ul>



<p class="wp-block-paragraph">Monitoring containerized workloads requires tooling that understands ephemeral, dynamically scheduled pods rather than static host addresses. Ensure any solution you adopt has first-class Kubernetes support.</p>



<h2 class="wp-block-heading">5. CI/CD Servers and Pipelines</h2>



<p class="wp-block-paragraph">Continuous integration and continuous delivery (CI/CD) is the automation backbone of a DevOps practice. CI/CD pipelines encode the steps required to take code from a developer&#8217;s commit to a production deployment as a repeatable, auditable process.</p>



<p class="wp-block-paragraph">A well-designed enterprise CI/CD pipeline typically handles:</p>



<ul class="wp-block-list">
<li><strong>Build automation</strong> — compiling code, resolving dependencies, and producing versioned artifacts on every commit.</li>
<li><strong>Automated testing</strong> — unit, integration, contract, and end-to-end tests run in parallel to catch regressions before they reach production.</li>
<li><strong>Security scanning</strong> — static analysis (SAST), dependency vulnerability scanning, and container image scanning integrated directly into the pipeline gate.</li>
<li><strong>Deployment orchestration</strong> — progressive delivery strategies such as canary releases, blue/green deployments, and feature flags reduce the risk of each release.</li>
<li><strong>Distributed execution</strong> — agents or runners distributed across multiple nodes reduce pipeline queue times as team size grows.</li>
</ul>



<p class="wp-block-paragraph">Popular CI/CD platforms include Jenkins, GitLab CI/CD, GitHub Actions, CircleCI, and Tekton (for Kubernetes-native pipelines). The right choice depends on your existing SCM platform, cloud provider relationships, and whether your team prefers self-hosted control or managed convenience.</p>



<h2 class="wp-block-heading">Putting It All Together</h2>



<p class="wp-block-paragraph">These five technology categories are not independent silos — they reinforce each other. SCM events trigger CI/CD pipelines. Pipelines build and push container images. Running containers emit structured logs and metrics. Monitoring systems alert on those signals and trace failures back to specific commits in the SCM history. Investing in all five creates a closed feedback loop that shortens the time between writing code and learning from it in production.</p>



<p class="wp-block-paragraph">For enterprises earlier in the DevOps journey, the highest-leverage starting point is usually source code management and CI/CD — both deliver immediate, visible improvements to delivery speed and code quality before you invest in the more advanced observability and containerization layers.</p>



<figure class="wp-block-table"><table><thead><tr><th>Adoption</th><th>Primary Benefit</th><th>Example Tools</th></tr></thead><tbody><tr><td>Source Code Management</td><td>Version control, collaboration, rollback</td><td>GitHub, GitLab, Bitbucket</td></tr><tr><td>Containerization</td><td>Environment consistency, microservices</td><td>Docker, Kubernetes</td></tr><tr><td>Structured Logging</td><td>Queryable, machine-readable log data</td><td>Logrus (Go), structlog (Python), Log4j2 (Java)</td></tr><tr><td>Advanced Monitoring</td><td>Real-time metrics, tracing, alerting</td><td>Prometheus, Grafana, Datadog</td></tr><tr><td>CI/CD Pipelines</td><td>Automated build, test, and deploy</td><td>Jenkins, GitHub Actions, GitLab CI</td></tr></tbody></table></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/5-essential-digital-adoptions-to-grow-your-devops-enterprise/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Real-World Lessons from DevOps: Dockerizing Applications</title>
		<link>https://www.bestdevops.com/real-world-lessons-from-devops-dockerizing-applications/</link>
					<comments>https://www.bestdevops.com/real-world-lessons-from-devops-dockerizing-applications/#respond</comments>
		
		<dc:creator><![CDATA[anil]]></dc:creator>
		<pubDate>Sat, 08 Aug 2020 09:08:53 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[IT markets]]></category>
		<category><![CDATA[IT technology]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Microservices]]></category>
		<guid isPermaLink="false">http://www.bestdevops.com/?p=13201</guid>

					<description><![CDATA[A site reliability team shares honest, practical lessons learned from migrating a self-hosted application to Docker — covering architecture decisions, ulimit gotchas, network overhead, and the business outcomes after six months in production.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>This article is based on a case study originally published on <a href="https://containerjournal.com" rel="noopener">containerjournal.com</a>, written by the site reliability team at Instana.</em></p>



<h2 class="wp-block-heading">Background: Why Dockerize at All?</h2>



<p class="wp-block-paragraph">One advantage of working for an application management vendor is broad visibility into how development and operations teams architect, build, and deploy software. After absorbing those patterns across many customers, the site reliability team at Instana decided to share their own experience dockerizing the one remaining application in their portfolio that was still running outside of Docker.</p>



<p class="wp-block-paragraph">Instana operated two distinct delivery models: a SaaS platform and a self-hosted, on-premises version of its back-end management servers. The SaaS side was already containerized; the on-premises version was packaged as RPM and DEB binaries stitched together by a Chef cookbook that had grown organically to cover every edge case discovered over time. The goal was to close that gap and give on-premises customers the same quality, cadence, and ease of operation enjoyed by SaaS customers.</p>



<h2 class="wp-block-heading">Should You Dockerize? Three Questions to Answer First</h2>



<p class="wp-block-paragraph">Before committing to a containerization effort, the team framed the decision around three specific questions:</p>



<ol class="wp-block-list">
<li><strong>Should you re-architect your application to use containers?</strong> — Containers are not the right answer for every workload. Evaluate whether your application&#8217;s operational pain points — inconsistent environments, slow releases, complex dependency management — are problems containers actually solve.</li>
<li><strong>Is Docker the right container technology?</strong> — Docker has broad enterprise adoption, and the <a href="https://opencontainers.org/" rel="noopener">Open Container Initiative (OCI)</a> standard means images built today remain compatible with emerging runtimes such as CRI-O. That longevity matters when you are making a multi-year infrastructure commitment.</li>
<li><strong>Is now the right time?</strong> — Timing a migration requires honest assessment of team bandwidth, release schedule risk, and customer impact. Instana&#8217;s trigger was that the lag between SaaS and on-premises releases was actively growing, customer interviews confirmed frustration, and the SaaS artifacts were already containerized — meaning the raw material for the migration already existed.</li>
</ol>



<h2 class="wp-block-heading">The Architecture Before Dockerization</h2>



<p class="wp-block-paragraph">The legacy delivery pipeline packaged SaaS binaries into RPM/DEB packages to support multiple Linux distributions. A Chef cookbook wired the components together and handled configuration. Over time, the cookbook accumulated logic to handle:</p>



<ul class="wp-block-list">
<li>Multiple Linux distribution variants</li>
<li>Multi-host deployment topologies (beyond the original single-host model)</li>
<li>Multiple cloud environments: AWS, Google Cloud Platform, Microsoft Azure, and private data centers</li>
</ul>



<p class="wp-block-paragraph">This complexity created unpredictable release cycles, slowed QA qualification, and meant on-premises customers always lagged behind SaaS customers in getting new capabilities.</p>



<h2 class="wp-block-heading">Choosing and Implementing Docker</h2>



<p class="wp-block-paragraph">Because the SaaS platform already used Docker images (orchestrated by Nomad and Kubernetes), the core application containers were ready. The main work involved creating containers for third-party infrastructure components — including ClickHouse, Cassandra, and other databases — and integrating them into the release pipeline.</p>



<p class="wp-block-paragraph">The team&#8217;s key architectural insight: <strong>creating a database container is not the hard part — managing its configuration in a repeatable, trackable way is.</strong></p>



<p class="wp-block-paragraph">Their solution was to use a host-mounted volume (mount point) for all configuration files. This approach:</p>



<ul class="wp-block-list">
<li>Keeps configuration changes outside the container, on the host file system</li>
<li>Makes every change auditable and version-controllable</li>
<li>Allows debug bundles to be collected from the host without exec-ing into a running container</li>
<li>Simplifies the <code>docker run</code> directive because the container itself does not encode environment-specific state</li>
</ul>



<p class="wp-block-paragraph">Originally adopted out of necessity for database containers, this mount-point pattern turned out to be repeatable across <em>all</em> containers in the stack, creating an unexpected but valuable layer of standardization.</p>



<h2 class="wp-block-heading">Lessons Learned: Practical Gotchas When Dockerizing</h2>



<p class="wp-block-paragraph">Despite a largely smooth migration, three specific issues surfaced that are worth knowing before you start your own containerization project.</p>



<h3 class="wp-block-heading">1. ulimits on CentOS Are Lower Than You Expect</h3>



<p class="wp-block-paragraph">During the first CentOS rollout, ClickHouse failed to write to disk as expected. The initial assumption was a database misconfiguration, but the root cause was the system&#8217;s default <code>ulimits</code> — specifically the open-file-descriptor limit, which is set surprisingly low in some CentOS configurations.</p>



<p class="wp-block-paragraph">The team considered modifying the ulimit on the host but recognized that each customer environment could configure ulimits differently, making that approach fragile. The better solution: use Docker&#8217;s <code>--ulimit</code> flag when launching the container.</p>


<pre class="wp-block-code"><span><code class="hljs">docker run --ulimit nofile=65536:65536 my-clickhouse-image</code></span></pre>


<p class="wp-block-paragraph">The <code>--ulimit</code> flag sits at the top of Docker&#8217;s override hierarchy, so it reliably enforces the required limit regardless of what the host OS or customer configuration specifies.</p>



<h3 class="wp-block-heading">2. Eliminate Docker Network Overhead with Host Networking</h3>



<p class="wp-block-paragraph">Network overhead introduced by Docker&#8217;s default bridge networking was a legitimate concern, especially for latency-sensitive inter-component communication. Because the deployment model is single-host (all components on one machine), the team used Docker&#8217;s host network mode:</p>


<pre class="wp-block-code"><span><code class="hljs">docker run --network host my-service-image</code></span></pre>


<p class="wp-block-paragraph">This removes the virtual network interface layer entirely, giving containers direct access to the host network stack and eliminating potential throughput or latency bottlenecks from the Docker networking layer. Note that this trade-off is appropriate for a single-host model; multi-host or multi-tenant deployments require a different approach.</p>



<h3 class="wp-block-heading">3. Bind Systemd Services to docker.service</h3>



<p class="wp-block-paragraph">Once customers saw the reliability of the new platform, their automated maintenance tools began issuing system updates — reboots, patch cycles — without Docker-aware sequencing. Docker&#8217;s own restart policy (<code>--restart always</code> or <code>--restart unless-stopped</code>) is not sufficient to guarantee that containers start in the correct order after a host reboot or a forced service restart triggered by an external automation tool.</p>



<p class="wp-block-paragraph">The fix was to define explicit <code>systemd</code> unit files for each container service and bind them to <code>docker.service</code> using <code>After=</code> and <code>Requires=</code> directives. This ensures that no application container attempts to start before the Docker daemon is fully up, and that startup ordering between dependent services is enforced by the init system rather than left to timing luck.</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript">&#91;Unit]
Description=My Application Container
After=docker.service
Requires=docker.service

&#91;Service]
Restart=always
ExecStart=<span class="hljs-regexp">/usr/</span>bin/docker run --name my-app my-app-image
ExecStop=<span class="hljs-regexp">/usr/</span>bin/docker stop my-app

&#91;Install]
WantedBy=multi-user.target</code></span></pre>


<h2 class="wp-block-heading">Results After Six Months in Production</h2>



<p class="wp-block-paragraph">According to the team, the outcomes exceeded their original goals:</p>



<ul class="wp-block-list">
<li><strong>SaaS and self-hosted releases now ship simultaneously</strong> — a goal that was not even stated at the start of the project.</li>
<li><strong>QA qualification cycles are shorter</strong>, particularly for operating system compatibility testing, because a validated container image behaves consistently across distributions.</li>
<li><strong>Release cycles are more predictable</strong> — the variability introduced by the Chef cookbook&#8217;s edge-case logic is gone.</li>
<li><strong>Support complexity dropped significantly</strong> — because the team no longer needs to reason about version skew between SaaS and on-premises deployments.</li>
<li><strong>All customers receive new capabilities at release time</strong>, not weeks or months later.</li>
</ul>



<h2 class="wp-block-heading">What Comes Next: Kubernetes for Self-Hosted</h2>



<p class="wp-block-paragraph">With Docker packaging standardized across the product, the team&#8217;s stated next step is scalability: extending the self-hosted platform to support Kubernetes-based deployment, bringing it into full alignment with the SaaS architecture already running on Nomad and Kubernetes.</p>



<h2 class="wp-block-heading">Key Takeaways</h2>



<ul class="wp-block-list">
<li>If your SaaS artifacts are already containers, you have most of the raw material needed for an on-premises containerization project.</li>
<li>Use host-mounted configuration volumes to keep container images environment-agnostic and configuration changes auditable.</li>
<li>Do not rely on Docker&#8217;s restart policy alone for production startup ordering — use <code>systemd</code> unit bindings.</li>
<li>Check <code>ulimits</code> early, especially on CentOS and RHEL-family hosts; use Docker&#8217;s <code>--ulimit</code> flag to enforce the values your workload actually needs.</li>
<li>For single-host deployments, <code>--network host</code> eliminates an entire category of networking overhead concerns.</li>
<li>Even organizations without containerized workloads in production often permit vendor-supplied Dockerized installations — OCI adoption has made Docker a broadly acceptable delivery format.</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bestdevops.com/real-world-lessons-from-devops-dockerizing-applications/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
