
{"id":1120,"date":"2021-03-02T00:33:06","date_gmt":"2021-03-02T00:33:06","guid":{"rendered":"https:\/\/blog.gordonbuchan.com\/blog\/?p=1120"},"modified":"2024-06-04T10:21:50","modified_gmt":"2024-06-04T10:21:50","slug":"web-presence-step-by-step-chapter-6-configuring-an-ubuntu-linux-cloud-server-to-create-a-linux-apache-mysql-php-lamp-web-server-part-2","status":"publish","type":"post","link":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/2021\/03\/02\/web-presence-step-by-step-chapter-6-configuring-an-ubuntu-linux-cloud-server-to-create-a-linux-apache-mysql-php-lamp-web-server-part-2\/","title":{"rendered":"Web presence step by step Chapter 6: Configuring an Ubuntu Linux cloud server to create a Linux Apache MySQL PHP (LAMP) web server, Part 2"},"content":{"rendered":"\n<p>Previous step: <a href=\"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/2021\/02\/20\/web-presence-step-by-step-chapter-5-configuring-an-ubuntu-linux-cloud-server-to-create-a-linux-apache-mysql-php-lamp-web-server-part-1\/\">Chapter 5:&nbsp;Configuring an Ubuntu Linux cloud server to create a Linux Apache MySQL PHP (LAMP) web server, Part 1<\/a><br>Next step: <a href=\"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/2021\/03\/07\/web-presence-step-by-step-chapter-7-configuring-the-ssh-server-on-an-ubuntu-linux-cloud-server-to-limit-sftp-folder-visibility-within-chroot-jail-directories\/\">Chapter 7: Configuring the SSH server on an Ubuntu Linux cloud server to limit SFTP directory visibility within chroot jail directories<\/a><\/p>\n\n\n\n<p>Web presence step by step is a series of posts that show you to how to build a web presence.<\/p>\n\n\n\n<p>In this post, we do advanced configuration on an Ubuntu Linux cloud server to create a Linux Apache MySQL PHP (LAMP) web server.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">A note re MySQL and MariaDB<\/h1>\n\n\n\n<p>A few years ago, the company that owned MySQL was purchased by Oracle. The open source code was legally \u201cforked\u201d into a project called MariaDB. When this document refers to \u201cMySQL,\u201d it is actually referring to the MariaDB descendant of the MySQL database engine, made possible by the terms of the GPLv2 open source software license. Notice that to maintain compatibility with existing software, the command to invoke MariaDB on the command line is \u201cmysql.\u201d<\/p>\n\n\n\n<p>This post assumes that you have performed the steps described in <a href=\"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/2021\/02\/20\/web-presence-step-by-step-chapter-5-configuring-an-ubuntu-linux-cloud-server-to-create-a-linux-apache-mysql-php-lamp-web-server-part-1\/\">Chapter 5:&nbsp;Configuring an Ubuntu Linux cloud server to create a Linux Apache MySQL PHP (LAMP) web server, Part 1<\/a>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Configuring the Linux Apache MySQL PHP (LAMP) web server<\/h1>\n\n\n\n<p>In the previous chapter, <a href=\"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/2021\/02\/20\/web-presence-step-by-step-chapter-5-configuring-an-ubuntu-linux-cloud-server-to-create-a-linux-apache-mysql-php-lamp-web-server-part-1\/\">Chapter 5:&nbsp;Configuring an Ubuntu Linux cloud server to create a Linux Apache MySQL PHP (LAMP) web server, Part 1<\/a>, we used apt to install the meta-package &#8220;lamp-server,&#8221; which installs the components for a basic Linux Apache MySQL PHP (LAMP) web server. In this chapter we configure the components.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Installing MPM-ITK<\/h1>\n\n\n\n<p>We need to install MPM-ITK, which allows the web server to execute programs under different usernames. This means that if a website has a security issue, the damage is limited to that website&#8217;s directory: other websites and the host server should remain unaffected.<\/p>\n\n\n\n<p>Enter the command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apt install libapache2-mpm-itk<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Configuring MySQL<\/h1>\n\n\n\n<p>The MySQL database server has been installed, but must be configured.<\/p>\n\n\n\n<p>Enter the command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mysql_secure_installation<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Testing the MySQL server<\/h2>\n\n\n\n<p>Let&#8217;s test the MySQL server. Enter the command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mysql -u root -p<\/pre>\n\n\n\n<p>enter the password you specified during the MySQL configuration step.<\/p>\n\n\n\n<p>enter the command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">show databases;<\/pre>\n\n\n\n<p>You will see a list similar to the following. Enter the command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">exit<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"517\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-130.png\" alt=\"\" class=\"wp-image-2340\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-130.png 735w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-130-300x211.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-130-350x246.png 350w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Testing that the web server is able to run PHP scripts<\/h1>\n\n\n\n<p>Let&#8217;s test that the web server is able to run PHP scripts.<\/p>\n\n\n\n<p>Enter the commands:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cd \/var\/www\/html<br>nano phpinfo.php<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"731\" height=\"499\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-131.png\" alt=\"\" class=\"wp-image-2342\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-131.png 731w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-131-300x205.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-131-350x239.png 350w\" sizes=\"auto, (max-width: 731px) 100vw, 731px\" \/><\/figure>\n\n\n\n<p>Enter the following text in the nano editor. Save and exit the file:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?PHP<br><br>phpinfo();<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"734\" height=\"499\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-132.png\" alt=\"\" class=\"wp-image-2344\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-132.png 734w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-132-300x204.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-132-350x238.png 350w\" sizes=\"auto, (max-width: 734px) 100vw, 734px\" \/><\/figure>\n\n\n\n<p>Use a web browser to load your domain name, followed by \/phpinfo.php, as in:<\/p>\n\n\n\n<p>linuxstepbystep.com\/phpinfo.php<\/p>\n\n\n\n<p>If you are successful, a page similar to the following should appear:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"959\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-10.png\" alt=\"\" class=\"wp-image-1354\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-10.png 1024w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-10-300x281.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-10-768x719.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Configuring the Apache web server<\/h1>\n\n\n\n<p>Enter the commands:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cd \/etc\/apache2<br>cp apache2.conf apache2.conf.factory<br>nano apache2.conf<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"733\" height=\"498\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-133.png\" alt=\"\" class=\"wp-image-2346\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-133.png 733w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-133-300x204.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-133-350x238.png 350w\" sizes=\"auto, (max-width: 733px) 100vw, 733px\" \/><\/figure>\n\n\n\n<p>Use the control-w command to search for the text &#8220;&lt;directory&#8221;:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"500\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-134.png\" alt=\"\" class=\"wp-image-2348\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-134.png 735w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-134-300x204.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-134-350x238.png 350w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/figure>\n\n\n\n<p>This is what it looks like when you find the section:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"736\" height=\"499\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-135.png\" alt=\"\" class=\"wp-image-2350\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-135.png 736w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-135-300x203.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-135-350x237.png 350w\" sizes=\"auto, (max-width: 736px) 100vw, 736px\" \/><\/figure>\n\n\n\n<p>Insert a block with the following text:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;Directory \/usr\/web\/&gt;\n        AllowOverride All\n        Require all granted\n&lt;\/Directory&gt;<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"498\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-137.png\" alt=\"\" class=\"wp-image-2354\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-137.png 735w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-137-300x203.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-137-350x237.png 350w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Creating the users, directories, and documents for the websites<\/h1>\n\n\n\n<p>Enter the commands:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">adduser --home \/usr\/web\/comingsoon comingsoon<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"734\" height=\"500\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-138.png\" alt=\"\" class=\"wp-image-2356\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-138.png 734w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-138-300x204.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-138-350x238.png 350w\" sizes=\"auto, (max-width: 734px) 100vw, 734px\" \/><\/figure>\n\n\n\n<p>Enter and confirm a password for the user. Answer the prompts for additional information. When asked: &#8220;Is the information correct?&#8221; enter &#8220;y&#8221; for yes:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"734\" height=\"498\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-139.png\" alt=\"\" class=\"wp-image-2358\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-139.png 734w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-139-300x204.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-139-350x237.png 350w\" sizes=\"auto, (max-width: 734px) 100vw, 734px\" \/><\/figure>\n\n\n\n<p>Enter the commands:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mkdir -p \/usr\/web\/comingsoon\/comingsoon<br>cd \/usr\/web\/comingsoon\/comingsoon<br>nano index.php<\/pre>\n\n\n\n<p>Enter the following text in the nano editor. Save and exit the file:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?PHP\n\necho \"&lt;p&gt;coming soon&lt;\/p&gt;\\n\";<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"481\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-140.png\" alt=\"\" class=\"wp-image-2360\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-140.png 960w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-140-300x150.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-140-768x385.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-140-350x175.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Enter these commands, note that each &#8220;chown&#8221; and &#8220;chmod&#8221; command should be its own line:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">chown -R root:root \/usr\/web\/comingsoon\nchown -R comingsoon:comingsoon \/usr\/web\/comingsoon\/comingsoon\nchmod -R 755 \/usr\/web\/comingsoon\/comingsoon<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"301\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-141.png\" alt=\"\" class=\"wp-image-2362\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-141.png 735w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-141-300x123.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-141-350x143.png 350w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">A note about the example domain and a reminder that you should use your domain name in its place<\/h2>\n\n\n\n<p>Note: for clarity and narrative flow we are using the example domain linuxstepbystep.com but you should substitute your domain name as appropriate.<\/p>\n\n\n\n<p>Enter this command (all on the same line):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">adduser --home \/usr\/web\/linuxstepbystep_com linuxstepbystep_com<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"481\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-142.png\" alt=\"\" class=\"wp-image-2364\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-142.png 960w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-142-300x150.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-142-768x385.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-142-350x175.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Enter the commands:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mkdir -p \/usr\/web\/linuxstepbystep_com\/linuxstepbystep.com\ncd \/usr\/web\/linuxstepbystep_com\/linuxstepbystep.com\nnano index.php<\/pre>\n\n\n\n<p>Enter the following text in the nano editor. Save and exit the file:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?PHP<br><br>echo \"&lt;p&gt;linuxstepbystep.com&lt;\/p&gt;\";<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"481\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-143.png\" alt=\"\" class=\"wp-image-2366\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-143.png 958w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-143-300x151.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-143-768x386.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-143-350x176.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Enter these commands, note that each &#8220;chown&#8221; and &#8220;chmod&#8221; command should be its own line:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">chown -R root:root \/usr\/web\/linuxstepbystep_com\nchown -R linuxstepbystep_com:linuxstepbystep_com \/usr\/web\/linuxstepbystep_com\/linuxstepbystep.com\nchmod -R 755 \/usr\/web\/linuxstepbystep_com\/linuxstepbystep.com<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"482\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-144.png\" alt=\"\" class=\"wp-image-2368\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-144.png 958w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-144-300x151.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-144-768x386.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-144-350x176.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Creating the virtual hosts for the websites<\/h1>\n\n\n\n<pre class=\"wp-block-preformatted\">cd \/etc\/apache2\nmv sites-available sites-available.factory\nmkdir -p \/etc\/apache2\/sites-available\ncd \/etc\/apache2\/sites-available<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"959\" height=\"481\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-145.png\" alt=\"\" class=\"wp-image-2370\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-145.png 959w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-145-300x150.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-145-768x385.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-145-350x176.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Enter the command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">nano 000.comingsoon.conf<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"956\" height=\"479\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-146.png\" alt=\"\" class=\"wp-image-2372\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-146.png 956w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-146-300x150.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-146-768x385.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-146-350x175.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Enter the following text in the nano editor. Save and exit the file:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;VirtualHost *:80&gt;\n&lt;IfModule mpm_itk_module&gt;\n        AssignUserID comingsoon comingsoon\n&lt;\/IfModule&gt;\nServerName comingsoon\nDocumentRoot \/usr\/web\/comingsoon\/comingsoon\nServerAdmin info@linuxstepbystep.com\nCustomLog \/var\/log\/apache2\/comingsoon-access_log combined\nErrorLog \/var\/log\/apache2\/comingsoon-error_log\n&lt;\/VirtualHost&gt;<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"725\" height=\"466\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-147.png\" alt=\"\" class=\"wp-image-2374\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-147.png 725w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-147-300x193.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-147-350x225.png 350w\" sizes=\"auto, (max-width: 725px) 100vw, 725px\" \/><\/figure>\n\n\n\n<p>Enter the commands:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a2ensite 000.comingsoon.conf\nnano 004.linuxstepbystep.com.conf<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"955\" height=\"480\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-148.png\" alt=\"\" class=\"wp-image-2376\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-148.png 955w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-148-300x151.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-148-768x386.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-148-350x176.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Enter the following text in the nano editor. Note the screen capture: the line starting with &#8220;AssignUserID&#8221; should be all on the same line. Save and exit the file:<\/p>\n\n\n\n<pre id=\"block-67456610-88e5-4cd5-873f-b49c8ca5b03c\" class=\"wp-block-preformatted\">&lt;VirtualHost *:80&gt;\n&lt;IfModule mpm_itk_module&gt;\n        AssignUserID linuxstepbystep_com linuxstepbystep_com\n&lt;\/IfModule&gt;\nServerName linuxstepbystep.com\nServerAlias www.linuxstepbystep.com\nDocumentRoot \/usr\/web\/linuxstepbystep_com\/linuxstepbystep.com\nServerAdmin info@linuxstepbystep.com\nCustomLog \/var\/log\/apache2\/linuxstepbystep.com-access_log combined\nErrorLog \/var\/log\/apache2\/linuxstepbystep.com-error_log\n&lt;\/VirtualHost&gt;<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"724\" height=\"462\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-149.png\" alt=\"\" class=\"wp-image-2378\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-149.png 724w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-149-300x191.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-149-350x223.png 350w\" sizes=\"auto, (max-width: 724px) 100vw, 724px\" \/><\/figure>\n\n\n\n<p>Enter the command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">a2ensite 004.linuxstepbystep.com.conf<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"959\" height=\"481\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-150.png\" alt=\"\" class=\"wp-image-2380\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-150.png 959w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-150-300x150.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-150-768x385.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-150-350x176.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Enter the command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl restart apache2<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"955\" height=\"479\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-151.png\" alt=\"\" class=\"wp-image-2381\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-151.png 955w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-151-300x150.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-151-768x385.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-151-350x176.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Testing the web server to see whether it can host separate virtual hosts (multiple websites)<\/h2>\n\n\n\n<p>The objective of this test is to display different text for each host name we enter in the web browser&#8217;s address bar.<\/p>\n\n\n\n<p>Enter your domain name in a web browser&#8217;s address bar:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"959\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-09-57-47-1024x959.png\" alt=\"\" class=\"wp-image-1193\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-09-57-47-1024x959.png 1024w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-09-57-47-300x281.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-09-57-47-768x719.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-09-57-47.png 1168w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Enter the IP address of your cloud server in the web server&#8217;s address bar. This is to test whether the default &#8220;park page&#8221; is active. This page will be displayed if a host name is pointed at the IP address of the cloud server, but the cloud server&#8217;s web server has not yet been configured with a virtual host profile for that host name.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"793\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-12-24-46-1024x793.png\" alt=\"\" class=\"wp-image-1195\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-12-24-46-1024x793.png 1024w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-12-24-46-300x232.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-12-24-46-768x595.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-12-24-46.png 1168w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Installing SSL Encryption with Let&#8217;s Encrypt<\/h1>\n\n\n\n<p>Enter the following command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apt install certbot python3-certbot-apache<\/pre>\n\n\n\n<p>Do you want to continue?<\/p>\n\n\n\n<p>Enter &#8220;y&#8221; for yes:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"974\" height=\"447\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-152.png\" alt=\"\" class=\"wp-image-2383\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-152.png 974w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-152-300x138.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-152-768x352.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-152-350x161.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Enter the command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">certbot --apache<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"974\" height=\"447\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-153.png\" alt=\"\" class=\"wp-image-2385\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-153.png 974w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-153-300x138.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-153-768x352.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-153-350x161.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Enter an email address:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"446\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-154.png\" alt=\"\" class=\"wp-image-2387\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-154.png 975w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-154-300x137.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-154-768x351.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-154-350x160.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Please read the Terms of Service at<\/p>\n\n\n\n<p>Enter &#8220;a&#8221; for agree<\/p>\n\n\n\n<p>Would you be willing to share your email address<\/p>\n\n\n\n<p>Enter &#8220;no&#8221; for no<\/p>\n\n\n\n<p>Which names would you like to activate HTTPS for?<\/p>\n\n\n\n<p>leave input blank, press Enter:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"970\" height=\"449\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-155.png\" alt=\"\" class=\"wp-image-2389\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-155.png 970w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-155-300x139.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-155-768x355.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-155-350x162.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Please choose whether or not to redirect HTTP traffic to HTTPS<\/p>\n\n\n\n<p>Enter &#8220;2&#8221; then press Enter:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"978\" height=\"447\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-156.png\" alt=\"\" class=\"wp-image-2391\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-156.png 978w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-156-300x137.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-156-768x351.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-156-350x160.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Enter the command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl restart apache2<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"446\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-157.png\" alt=\"\" class=\"wp-image-2393\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-157.png 975w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-157-300x137.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-157-768x351.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/image-157-350x160.png 350w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Enter your domain name in a web browser&#8217;s address bar.<\/p>\n\n\n\n<p>Notice the little lock symbol to the left of the host name. Click on the lock symbol, Click on Certificate. View the certificate&#8217;s details:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"706\" src=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-22-37-38-1024x706.png\" alt=\"\" class=\"wp-image-1307\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-22-37-38-1024x706.png 1024w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-22-37-38-300x207.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-22-37-38-768x530.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-from-2021-03-01-22-37-38.png 1151w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/figure>\n\n\n\n<p>Previous step: <a href=\"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/2021\/02\/20\/web-presence-step-by-step-chapter-5-configuring-an-ubuntu-linux-cloud-server-to-create-a-linux-apache-mysql-php-lamp-web-server-part-1\/\">Chapter 5:&nbsp;Configuring an Ubuntu Linux cloud server to create a Linux Apache MySQL PHP (LAMP) web server, Part 1<\/a><br>Next step: <a href=\"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/2021\/03\/07\/web-presence-step-by-step-chapter-7-configuring-the-ssh-server-on-an-ubuntu-linux-cloud-server-to-limit-sftp-folder-visibility-within-chroot-jail-directories\/\">Chapter 7: Configuring the SSH server on an Ubuntu Linux cloud server to limit SFTP directory visibility within chroot jail directories<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Previous step: Chapter 5:&nbsp;Configuring an Ubuntu Linux cloud server to create a Linux Apache MySQL PHP (LAMP) web server, Part 1Next step: Chapter 7: Configuring the SSH server on an Ubuntu Linux cloud server to limit SFTP directory visibility within chroot jail directories Web presence step by step is a series of posts that show &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/2021\/03\/02\/web-presence-step-by-step-chapter-6-configuring-an-ubuntu-linux-cloud-server-to-create-a-linux-apache-mysql-php-lamp-web-server-part-2\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Web presence step by step Chapter 6: Configuring an Ubuntu Linux cloud server to create a Linux Apache MySQL PHP (LAMP) web server, Part 2&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-1120","post","type-post","status-publish","format-standard","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=1120"}],"version-history":[{"count":187,"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1120\/revisions"}],"predecessor-version":[{"id":5000,"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1120\/revisions\/5000"}],"wp:attachment":[{"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=1120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=1120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=1120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}