<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Md. Hazzaz Bin Faiz</title>
    <description>The latest articles on DEV Community by Md. Hazzaz Bin Faiz (@hazzazbinfaiz).</description>
    <link>https://dev.to/hazzazbinfaiz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F618842%2F7ca68fc9-f875-42ec-a366-6462e651d9fa.jpeg</url>
      <title>DEV Community: Md. Hazzaz Bin Faiz</title>
      <link>https://dev.to/hazzazbinfaiz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hazzazbinfaiz"/>
    <language>en</language>
    <item>
      <title>Changing ASCII case using bitwise operator</title>
      <dc:creator>Md. Hazzaz Bin Faiz</dc:creator>
      <pubDate>Fri, 11 Apr 2025 17:21:52 +0000</pubDate>
      <link>https://dev.to/hazzazbinfaiz/changing-ascii-case-using-bitwise-operator-4oc1</link>
      <guid>https://dev.to/hazzazbinfaiz/changing-ascii-case-using-bitwise-operator-4oc1</guid>
      <description>&lt;p&gt;I am writing this post to share the method with my friends.&lt;/p&gt;

&lt;p&gt;I am doing Bachelor in Computer Science and Engineering. My microprocessor course teacher gave us a task to change case from upper or lower to uppercase.&lt;/p&gt;

&lt;p&gt;It is kind of "DO it yourself" task.&lt;/p&gt;

&lt;p&gt;I am using &lt;strong&gt;emu 8086&lt;/strong&gt; for this task.&lt;/p&gt;

&lt;p&gt;Here are two test cases that we have must pass:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Teas Case 1:&lt;br&gt;
Input : abcd&lt;br&gt;
Output : ABCD &lt;/p&gt;

&lt;p&gt;Teas Case 2:&lt;br&gt;
Input : aBCd&lt;br&gt;
Output : ABCD&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;NOTE: Input will be always 4 character and between a-z or A-Z.&lt;/p&gt;

&lt;p&gt;We can solve it using conditional instruction. &lt;br&gt;
To make the problem more interesting, I've challenged myself to solve it without branching.&lt;/p&gt;

&lt;p&gt;Gladly, I've found a way to solve it using bitwise operator. &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Character&lt;/th&gt;
&lt;th&gt;ASCII value (binary)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;0 1 0 0 0 0 0 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;a&lt;/td&gt;
&lt;td&gt;0 1 1 0 0 0 0 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We can see that the 6th bit is zero for uppercase character and one for lowercase character. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fog7hmgctx1cergsimoqx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fog7hmgctx1cergsimoqx.png" alt="Indicating bit to change" width="515" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we can set the bit to &lt;strong&gt;0&lt;/strong&gt; no matter what is the input, the character will become Uppercase.&lt;/p&gt;

&lt;p&gt;We can set it to zero and left rest of bits unchanged by using bitwise AND operation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a -&amp;gt;   0110 0001
       1101 1111
----------------
AND -&amp;gt; 0100 0001
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I am going to use 11011111 (binary) or DF (hex) to set the 6th bit to zero and leave other bits unchanged.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PROC MAIN
   MOV AH, 01H   ; input mode

   INT 21H       ; take 1st character in AL
   AND AL, 0DFH  ; perform AND operation
   MOV BL, AL    ; Move result to another Register

   INT 21H       ; same as 1st character
   AND AL, 0DFH
   MOV BH, AL

   INT 21H       ; same as 1st character
   AND AL, 0DFH
   MOV CL, AL

   INT 21H       ; same as 1st character
   AND AL, 0DFH
   MOV CH, AL


   MOV AH, 02H

   MOV DL, 0AH   ; print newline
   INT 21H
   MOV DL, 0DH   ; print cret
   INT 21H 


   MOV DL, BL    ; print 1st character
   INT 21H

   MOV DL, BH    ; print 2nd character
   INT 21H

   MOV DL, CL    ; print 3rd character
   INT 21H

   MOV DL, CH    ; print 4th character
   INT 21H

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

&lt;/div&gt;



&lt;p&gt;Case 1 :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwbiyqg3tq0xbpctuf2n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwbiyqg3tq0xbpctuf2n.png" alt="Case 1" width="244" height="113"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Case 2 :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr10duzm9nfc1bpu6gfwe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr10duzm9nfc1bpu6gfwe.png" alt="Case 2" width="243" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy Coding !!!&lt;/p&gt;

</description>
      <category>assembly</category>
      <category>bitwise</category>
    </item>
    <item>
      <title>Practicing subdomain route in local environment with laravel</title>
      <dc:creator>Md. Hazzaz Bin Faiz</dc:creator>
      <pubDate>Mon, 16 Oct 2023 02:41:25 +0000</pubDate>
      <link>https://dev.to/hazzazbinfaiz/practicing-subdomain-route-in-local-environment-with-laravel-4ln0</link>
      <guid>https://dev.to/hazzazbinfaiz/practicing-subdomain-route-in-local-environment-with-laravel-4ln0</guid>
      <description>&lt;p&gt;Subdomain route is a less used feature in laravel as most of the laravel applications are hosted under one single domain. But the feature is available in laravel.&lt;/p&gt;

&lt;p&gt;A friend of mine requested to write an article about how he can set up his local environment to test this subdomain routing, and I thought It will be better if I just document it 🙃.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting UP DNS
&lt;/h2&gt;

&lt;p&gt;First of all we need to set up DNS such a way that every subdomain points to one single host. &lt;a href="https://en.wikipedia.org/wiki/Wildcard_DNS_record"&gt;A wildcard entry&lt;/a&gt; is enough for DNS server but wildcard is not supported in local host file.&lt;br&gt;
We need to manually entry every subdomain in host file.&lt;br&gt;
Host file path is different based on Operating System,&lt;br&gt;
In windows : &lt;code&gt;C:\Windows\System32\drivers\etc\hosts&lt;/code&gt;&lt;br&gt;
In Linux : &lt;code&gt;/etc/hosts&lt;/code&gt;&lt;br&gt;
In Mac : &lt;code&gt;/private/etc/hosts&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We must have elevated privilege to edit host file, In windows we need to edit this file as Administrator, in linux use sudo or root user&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As example I am using &lt;code&gt;laravel.test&lt;/code&gt; as main domain,&lt;br&gt;
In host file, add those entries&lt;br&gt;
&lt;code&gt;&lt;br&gt;
127.0.0.1 laravel.test&lt;br&gt;
127.0.0.1 one.laravel.test&lt;br&gt;
127.0.0.1 two.laravel.test&lt;br&gt;
127.0.0.1 three.laravel.test&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Setting up Route
&lt;/h2&gt;

&lt;p&gt;In laravel, we just need to add a domain route to capture subdomains.&lt;br&gt;
In, &lt;code&gt;routes/web.php&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Route&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'{subdomain}.laravel.test'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;Route&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'/'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nv"&gt;$subdomain&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$subdomain&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, if we start laravel app and brows &lt;code&gt;http://laravel.test&lt;/code&gt; it will ignore subdomain route as it is not a subdomain, but if we brows &lt;code&gt;http://one.laravel.test&lt;/code&gt; it will return only the subdomain.&lt;/p&gt;

&lt;p&gt;Port number won't effect routing. If your application is running on port &lt;strong&gt;8000&lt;/strong&gt;, you can hit the subdomain route by browsing &lt;code&gt;http://one.laravel.test:8000&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;One thing to keep in mind, (from laravel official documentation)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In order to ensure your subdomain routes are reachable, you should register subdomain routes before registering root domain routes. This will prevent root domain routes from overwriting subdomain routes which have the same URI path.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now you know what to do next, Artisan&lt;br&gt;
Happy coding !!!&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
    </item>
    <item>
      <title>Trick to make laravel Inertia SEO friendly</title>
      <dc:creator>Md. Hazzaz Bin Faiz</dc:creator>
      <pubDate>Mon, 07 Feb 2022 11:57:33 +0000</pubDate>
      <link>https://dev.to/hazzazbinfaiz/trick-to-make-laravel-inertia-seo-friendly-3h3j</link>
      <guid>https://dev.to/hazzazbinfaiz/trick-to-make-laravel-inertia-seo-friendly-3h3j</guid>
      <description>&lt;p&gt;We usually struggle to make our single page applications SEO friendly as they render in client side.&lt;/p&gt;

&lt;p&gt;Meta tags and other SEO friendly information should be render from server side in order to make the application SEO friendly.&lt;/p&gt;

&lt;p&gt;In laravel with inertia we render one single view for every route.&lt;/p&gt;

&lt;p&gt;If we want to render meta tags from server side, we have to pass those information to that view.&lt;/p&gt;

&lt;p&gt;We can use a simple class to achieve this.&lt;/p&gt;

&lt;p&gt;in app\Meta.php (You can put this class anywhere you want).&lt;/p&gt;

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

&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="kn"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;App&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Meta&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="nv"&gt;$meta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;addMeta&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nv"&gt;$meta&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$content&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;render&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nv"&gt;$html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nv"&gt;$meta&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$name&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;$html&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;meta name="'&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'" content="'&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;$content&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'" /&amp;gt;'&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$html&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;Now in the controller add meta or code snippet as you want.&lt;/p&gt;

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

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;App\Meta&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;




&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;Meta&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;addMeta&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'title'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Dashboard'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nc"&gt;Meta&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;addMeta&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'description'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'My awesome site .....'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;Inertia&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Dashboard'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;To add a meta tag, call &lt;code&gt;addMeta&lt;/code&gt; method of &lt;code&gt;Meta&lt;/code&gt; class with name as first parameter and content as second parameter.&lt;/p&gt;

&lt;p&gt;You can add as many meta tags as you want.&lt;/p&gt;

&lt;p&gt;Now in view we need to render those meta tags.&lt;br&gt;
To render those, just call &lt;code&gt;render&lt;/code&gt; method of &lt;code&gt;Meta&lt;/code&gt; class.&lt;/p&gt;

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

&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"utf-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
{!! \App\Meta::render() !!}


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

&lt;/div&gt;

&lt;p&gt;Now if we check source, we'll find our meta tags and snippets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8okewter57taw04yyv91.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8okewter57taw04yyv91.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that if you want to use this approach with laravel octane, this will lead to unexpected result.&lt;br&gt;
We have to clean it up in every request.&lt;/p&gt;

&lt;p&gt;In order to claen up, add cleanup method in &lt;code&gt;Meta&lt;/code&gt; class.&lt;/p&gt;

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

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;cleanup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;static&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nv"&gt;$meta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;Now we can cleanup by listening &lt;code&gt;RequestReceived&lt;/code&gt; event of laravel octane.&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;EventServiceProvider&lt;/code&gt;&lt;/p&gt;

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

&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;App\Meta&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Illuminate\Support\Facades\Event&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Laravel\Octane\Events\RequestReceived&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="n"&gt;boot&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;Event&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;RequestReceived&lt;/span&gt; &lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;Meta&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;cleanup&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;This is just a simple idea on how we can make inertia SEO friendly.&lt;/p&gt;

&lt;p&gt;Have Fun 🎉 !!!&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>seo</category>
      <category>spa</category>
      <category>inertia</category>
    </item>
    <item>
      <title>Laravel zero downtime deployment with shared hosting</title>
      <dc:creator>Md. Hazzaz Bin Faiz</dc:creator>
      <pubDate>Thu, 22 Apr 2021 16:31:42 +0000</pubDate>
      <link>https://dev.to/hazzazbinfaiz/laravel-zero-downtime-deployment-with-shared-hosting-454m</link>
      <guid>https://dev.to/hazzazbinfaiz/laravel-zero-downtime-deployment-with-shared-hosting-454m</guid>
      <description>&lt;p&gt;Lot of developers struggle to host a laravel application in a way so that they can deploy their latest update to production automatically.&lt;/p&gt;

&lt;p&gt;I want to share some methods those I personally use.&lt;/p&gt;

&lt;p&gt;In shared hosting you can update your production application using git VCS. This is really a cool feature. But we need some more.&lt;/p&gt;

&lt;p&gt;We need to make sure every time we update our application, our production applications migrations and cache update as well.&lt;/p&gt;

&lt;p&gt;There are two deploy on shared hosting.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Store your repository in repository hosting platform like GitHub. Update production application by pulling from your server.&lt;/li&gt;
&lt;li&gt;Push your repository direct to server. (Must have SSH access).&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Host somewhere and pull from server
&lt;/h2&gt;

&lt;p&gt;Store your repository in any repository platform like GitHub.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqoqrh5zdmd0xiww36tva.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqoqrh5zdmd0xiww36tva.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copy the clone url.&lt;br&gt;
Now, go to cpanel and navigate to &lt;strong&gt;Git™ Version Control&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgo2kjkrljnl3l6ke14zt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgo2kjkrljnl3l6ke14zt.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
Now click on the &lt;strong&gt;Create&lt;/strong&gt; button to create a repository in your server.&lt;/p&gt;

&lt;p&gt;A form will appear. Paste clone url.&lt;br&gt;
Give a directory name, if you want to deploy your application to public_html directory, first clean public_html directory and write &lt;strong&gt;public_html&lt;/strong&gt; in Repository Path.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Putting laravel application in public_html is not good for security reason. If you want to know how to put laravel in another directory and link to public html, read &lt;a href="https://dev.to/hazzazbinfaiz/linking-publichtml-to-laravel-public-directory-in-shared-hosting-5ce2"&gt;Linking public_html to laravel public directory in shared hosting&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26njdpcrqw3t3jqtlwro.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26njdpcrqw3t3jqtlwro.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, click &lt;strong&gt;Create&lt;/strong&gt; button to create repository.&lt;br&gt;
If your repository is public, your server will clone the repository.&lt;/p&gt;

&lt;p&gt;If your repository is public, Read &lt;a href="https://dev.to/hazzazbinfaiz/deploy-private-git-repository-to-shared-hosting-na4"&gt;Deploy private git repository to shared hosting&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you have a clone copy of your repository on your server.&lt;/p&gt;

&lt;p&gt;Every time you update anything in your original repository you have to pull it from your server in order to sync servers repository with original repository.&lt;/p&gt;

&lt;p&gt;To sync servers repository, login to cpanel and navigate to &lt;strong&gt;Git™ Version Control&lt;/strong&gt; under &lt;strong&gt;FILES&lt;/strong&gt; category. You will see the list of repository.&lt;br&gt;
Click on the &lt;strong&gt;Manage&lt;/strong&gt; button next to the repository you want to sync.&lt;/p&gt;

&lt;p&gt;Now click on &lt;strong&gt;Pull or Deploy&lt;/strong&gt; tab.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zjfko991ubbownqvh2d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2zjfko991ubbownqvh2d.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on &lt;strong&gt;Update from Remote&lt;/strong&gt; button to update from remote repository.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftd5yg2rf81tih1szhj35.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftd5yg2rf81tih1szhj35.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now is zero downtime deployment part.&lt;/p&gt;

&lt;p&gt;We want to automate the deployment part so that every time we update anything, migrate latest updates and recache config, views and events.&lt;/p&gt;

&lt;p&gt;Put all commands you want to run every time any update become available in production in a bash file.&lt;/p&gt;

&lt;p&gt;And execute it every time after updating the servers repository.&lt;/p&gt;

&lt;p&gt;We can use cron job to automate this task.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash&lt;/span&gt;

&lt;span class="nv"&gt;LAST_GIT_HASH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;git rev-parse &lt;span class="nt"&gt;--short&lt;/span&gt; HEAD&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;LAST_HASH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; .git/laste_hash.txt&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$LAST_GIT_HASH&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$LAST_HASH&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /home/user/path_to_repository/
    php artisan down
    composer &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nt"&gt;--no-dev&lt;/span&gt;
    php artisan migrate &lt;span class="nt"&gt;--force&lt;/span&gt;
    php artisan optimize
    php artisan up
    git rev-parse &lt;span class="nt"&gt;--short&lt;/span&gt; HEAD &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; .git/laste_hash.txt
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can add as much commands you need.&lt;/p&gt;

&lt;p&gt;Put this bash file where you created the git repository.&lt;br&gt;
You should add this to your project so that you can track it or add this bash file in .gitignore file so that your servers repository won't track it.&lt;/p&gt;

&lt;p&gt;Execute this shell script in every minute by adding this command in cron tab.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/usr/bin/bash /home/user/path_to_repository/script.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This script checks if the last deployed commit and the checked out HEAD is even or not. If not, it will execute commands between the condition.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Push your repository direct to server
&lt;/h2&gt;

&lt;p&gt;In this way you don't need to store your repository in cloud. You can push from your computer (Must have SSH Access).&lt;/p&gt;

&lt;p&gt;At first login to cpanel and navigate to &lt;strong&gt;Git™ Version Control&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgo2kjkrljnl3l6ke14zt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgo2kjkrljnl3l6ke14zt.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
Now click on the &lt;strong&gt;Create&lt;/strong&gt; button to create a repository in your server.&lt;/p&gt;

&lt;p&gt;A form will appear.&lt;br&gt;
This time turn off &lt;strong&gt;Clone a Repository&lt;/strong&gt; toggle switch because we are not cloning from anywhere.&lt;/p&gt;

&lt;p&gt;Give a directory name, if you want to deploy your application to public_html directory, first clean public_html directory and write &lt;strong&gt;public_html&lt;/strong&gt; in Repository Path.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Putting laravel application in public_html is not good for security reason. If you want to know how to put laravel in another directory and link to public html, read &lt;a href="https://dev.to/hazzazbinfaiz/linking-publichtml-to-laravel-public-directory-in-shared-hosting-5ce2"&gt;Linking public_html to laravel public directory in shared hosting&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now, click &lt;strong&gt;Create&lt;/strong&gt; button to create repository.&lt;/p&gt;

&lt;p&gt;You will see a page with instruction command.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5uqg5xm82z0np68vrh7v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5uqg5xm82z0np68vrh7v.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow those instructions to push your local repository to the server.&lt;/p&gt;

&lt;p&gt;Now is zero downtime deployment part.&lt;/p&gt;

&lt;p&gt;This time we will use git hook to automate this task.&lt;br&gt;
Every time we push any update to remote repository, git executes &lt;code&gt;post-receive&lt;/code&gt; hook.&lt;/p&gt;

&lt;p&gt;In order to set up git hook for our task, we need to edit hook script.&lt;br&gt;
If your repository is in &lt;code&gt;/home/user/repositories/example&lt;/code&gt; directory, path of &lt;code&gt;post-receive&lt;/code&gt; path will be &lt;code&gt;/home/user/repositories/example/.git/hooks/post-receive&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You can edit is using cpanel text editor, or from terminal by SSH.&lt;/p&gt;

&lt;p&gt;Some script should be already there, just go to end of the file and paste your deployment commands.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /home/user/repositories/example/
php artisan down
composer &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nt"&gt;--no-dev&lt;/span&gt;
php artisan migrate &lt;span class="nt"&gt;--force&lt;/span&gt;
php artisan optimize
php artisan up

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

&lt;/div&gt;



&lt;p&gt;You can add as much commands you need.&lt;/p&gt;

&lt;p&gt;After adding those commands, the &lt;code&gt;post-receive&lt;/code&gt; file will be like,&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fppr0n0cmsxg33rzt151g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fppr0n0cmsxg33rzt151g.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will see the output of this hook while pushing from computer.&lt;/p&gt;

&lt;p&gt;Have Fun 🎉 !!!&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>git</category>
      <category>deployment</category>
      <category>devops</category>
    </item>
    <item>
      <title>Linking public_html to laravel public directory in shared hosting</title>
      <dc:creator>Md. Hazzaz Bin Faiz</dc:creator>
      <pubDate>Thu, 22 Apr 2021 10:35:05 +0000</pubDate>
      <link>https://dev.to/hazzazbinfaiz/linking-publichtml-to-laravel-public-directory-in-shared-hosting-5ce2</link>
      <guid>https://dev.to/hazzazbinfaiz/linking-publichtml-to-laravel-public-directory-in-shared-hosting-5ce2</guid>
      <description>&lt;p&gt;Putting laravel application in public_html directory is very dangerous.&lt;/p&gt;

&lt;p&gt;User should land on public directory.&lt;br&gt;
If you can edit the document root, update it from &lt;code&gt;/home/user/public_html&lt;/code&gt; to &lt;code&gt;/home/user/public_html/public&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;But some shared hosting provider forbids updating document root of main domain.&lt;/p&gt;

&lt;p&gt;Some people stores application to other directory and copies the index.php file from public directory and update path.&lt;br&gt;
It works fine, but if you are serving asset like &lt;code&gt;css&lt;/code&gt; and &lt;code&gt;js&lt;/code&gt; files from server and try to deploy updates by git, your server will server old contents unless you copy latest assets to public_html directory.&lt;/p&gt;

&lt;p&gt;There is another trick, to do it and your assets will remain update to original asset and no need to copy index.php file.&lt;/p&gt;

&lt;p&gt;Let's assume that you have laravel application in &lt;code&gt;/home/user/laravel&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;SSH to your server and cd to home by &lt;code&gt;cd ~&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Back up public_html directory if you have any important file in it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Delete &lt;code&gt;public_html&lt;/code&gt; directory by running &lt;code&gt;rm -rf public_html&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now create a symbolic link with name &lt;code&gt;public_html&lt;/code&gt; point to your laravel applications public directory by running&lt;br&gt;
&lt;code&gt;ln -s /home/user/laravel/public/ public_html&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now the public_html is just a symbolic link of your applications public directory.&lt;/p&gt;

&lt;p&gt;If anything change in your applications public directory, it will immediately available for user. &lt;/p&gt;

&lt;p&gt;Have Fun 🎉 !!!&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>linux</category>
      <category>hosting</category>
    </item>
    <item>
      <title>Deploy private git repository to shared hosting</title>
      <dc:creator>Md. Hazzaz Bin Faiz</dc:creator>
      <pubDate>Thu, 22 Apr 2021 10:01:35 +0000</pubDate>
      <link>https://dev.to/hazzazbinfaiz/deploy-private-git-repository-to-shared-hosting-na4</link>
      <guid>https://dev.to/hazzazbinfaiz/deploy-private-git-repository-to-shared-hosting-na4</guid>
      <description>&lt;p&gt;Using git in shared platform, developer can deploy latest update easily to shared hosting.&lt;/p&gt;

&lt;p&gt;If the repository is private, you need to do some extra work to deploy.&lt;/p&gt;

&lt;p&gt;Before setting up git repository in server, you need to import passwordless SSH key to your server.&lt;/p&gt;

&lt;p&gt;To generate SSH key run &lt;code&gt;ssh-keygen -t rsa -b 4096 -f id_rsa&lt;/code&gt;&lt;br&gt;
Press enter twice to generate passwordless key pair.&lt;/p&gt;

&lt;p&gt;It will generate two file, &lt;code&gt;id_rsa&lt;/code&gt; and &lt;code&gt;id_rsa.pub&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Log in to cpanel and navigate to &lt;strong&gt;SSH Access&lt;/strong&gt; under &lt;strong&gt;SECURITY&lt;/strong&gt; category.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9beqdEbM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yddqugqg5vdwz1saqol6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9beqdEbM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yddqugqg5vdwz1saqol6.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now click to Manage SSH Keys button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KDRKc7-D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/euseyv1pyfr333m9qdhy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KDRKc7-D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/euseyv1pyfr333m9qdhy.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To import your generated SSH key, click on Import Key button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C4BJSAdp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/81dvhjhulqy8h0vz3d19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C4BJSAdp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/81dvhjhulqy8h0vz3d19.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now copy the content of &lt;code&gt;id_rsa&lt;/code&gt; file generated before and paste it to the textbox labeled with, &lt;strong&gt;Paste the private key into the following text box:&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now copy the content of &lt;code&gt;id_rsa.pub&lt;/code&gt; file generated before and paste it to the textbox labeled with, &lt;strong&gt;Paste the public key into the following text box:&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Leave the password field empty and click on &lt;strong&gt;Import&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;Now we need to tell GitHub about our public key.&lt;/p&gt;

&lt;p&gt;Go to repository setting and navigate to &lt;strong&gt;Deploy keys&lt;/strong&gt; section and click &lt;strong&gt;Add deploy key&lt;/strong&gt; button to import your generated public key.&lt;/p&gt;

&lt;p&gt;A for will appear, give this key a Title as you want and paste content of &lt;code&gt;id_rsa.pub&lt;/code&gt; file in key textbox.&lt;/p&gt;

&lt;p&gt;Deploy keys always have pull access by default. If you like to push changes from your server, check &lt;strong&gt;Allow write access&lt;/strong&gt; checkbox.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Add key&lt;/strong&gt; button to add this key as deploy key.&lt;/p&gt;

&lt;p&gt;Now your server can pull from this private repository.&lt;/p&gt;

&lt;p&gt;To deploy your repository to your server. Go to cpanel and navigate to &lt;strong&gt;Git™ Version Control&lt;/strong&gt; under &lt;strong&gt;FILES&lt;/strong&gt; category.&lt;/p&gt;

&lt;p&gt;Click on Create button, copy SSH clone url from GitHub and paste it to &lt;strong&gt;Clone URL&lt;/strong&gt; textbox.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2mi6kI1c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/21fi95o9xt4sp0hylqm1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2mi6kI1c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/21fi95o9xt4sp0hylqm1.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give a &lt;strong&gt;Repository Path&lt;/strong&gt; where you want to clone the repository and &lt;strong&gt;Repository Name&lt;/strong&gt; as you like.&lt;/p&gt;

&lt;p&gt;Click on Create button to create the repository.&lt;/p&gt;

&lt;p&gt;Your server will clone the repository to the Repository Path you have given during repository creation.&lt;/p&gt;

&lt;p&gt;Have Fun 🎉&lt;/p&gt;

</description>
      <category>deployment</category>
      <category>git</category>
      <category>cpanel</category>
      <category>ssh</category>
    </item>
  </channel>
</rss>
