{"id":701,"date":"2012-05-29T21:24:08","date_gmt":"2012-05-29T21:24:08","guid":{"rendered":"http:\/\/microsoftgeek.com\/?p=701"},"modified":"2012-05-29T21:24:08","modified_gmt":"2012-05-29T21:24:08","slug":"how-to-setup-a-dedicated-web-server-for-free","status":"publish","type":"post","link":"https:\/\/microsoftgeek.com\/?p=701","title":{"rendered":"How to Setup a Dedicated Web Server for Free"},"content":{"rendered":"<p>All great websites have a great server behind them. In this tutorial,  I\u2019ll show you how to set up a dedicated web server (with Apache, MySQL,  and PHP) <strong>using that old computer you have lying around the house and some free software.<\/strong><\/p>\n<hr \/>\n<h2>1. A Quick Overview<\/h2>\n<p>In this tutorial, we are aiming to accomplish several things:<\/p>\n<ul>\n<li>We\u2019re going to install the Ubuntu Server operating system. I commonly use Ubuntu because of its ease of use and<br \/>\nsimple administration. It also has a rather large and extremely active community behind it, which makes getting<br \/>\nsupport a breeze.<\/li>\n<li>We\u2019re going to install an OpenSSH server. This allows you to administer your server from remote computers.<\/li>\n<li>A LAMP (Linux, Apache, MySQL, and PHP) stack is going to be installed. This provides the backbone that will run<br \/>\nyour web site. Apache is the industry standard web server on Unix-based operating systems; it\u2019s what most web hosts<br \/>\nuse (NETTUTS is using it right now!) and it\u2019s what we\u2019re going to use.<\/li>\n<li>We\u2019re going to install a firewall to protect your server from unauthorized access.<\/li>\n<\/ul>\n<p>In order to follow this tutorial, you\u2019re going to need a few items:<\/p>\n<ul>\n<li>A computer to use as your server. It doesn\u2019t need to be powerful; as long as it\u2019s not ancient, it\u2019ll work fine. Please<br \/>\ndon\u2019t do this on your desktop PC; Ubuntu will completely wipe your computer.<\/li>\n<li>A CD burner and a blank CD. These are so that you can burn Ubuntu to a disk in order to install it.<\/li>\n<li>Time. Seriously, this process is time-consuming, especially if you run into problems. Try to set aside an afternoon<br \/>\nto follow this tutorial.<\/li>\n<\/ul>\n<p>You may be asking why you\u2019d want to have your own web server. There  are several reasons, a few of them being: you can have your own testing<br \/>\nground for your websites; with a little modification, you could host  your own site; and, you will learn a lot about Linux\/Unix as you go.<br \/>\nWith that said, let\u2019s get started!<\/p>\n<hr \/>\n<h2>2. Download Ubuntu Server<\/h2>\n<p>First and foremost, we\u2019re going to need a CD with Ubuntu on it. Point your web browser to <a href=\"http:\/\/www.ubuntu.com\/\">http:\/\/www.ubuntu.com\/<\/a>,<br \/>\nand click download from the menu to the left. You will now be presented with a box with two tabs: \u201cDesktop Edition\u201d and<br \/>\n\u201cServer Edition\u201d. Click the \u201cServer Edition\u201d tab, and select \u201cUbuntu 8.04 LTS\u201d. Next, select a download location from the<br \/>\ndrop-down box. Finally, hit the \u201cBegin Download\u201d button.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/16.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Now you need to burn the ISO (the file that you downloaded) to a blank CD. If you don\u2019t know how to do this, there is an<br \/>\nexcellent guide at <a href=\"https:\/\/help.ubuntu.com\/community\/BurningIsoHowto\">https:\/\/help.ubuntu.com\/community\/BurningIsoHowto<\/a><\/p>\n<hr \/>\n<h2>3. Install Ubuntu Server<\/h2>\n<p>Now that you\u2019ve downloaded and burned the ISO, let\u2019s get Ubuntu  installed on your server. Put the disk in the drive, and boot from the  CD. In most modern computers, this will happen by default if a disk is  in the drive when you turn it on. If it doesn\u2019t, then you need to press a  key on your keyboard right when you turn it on. For my laptop, it\u2019s  F12, and for my server, it\u2019s F2. It just depends on your computer. You  can find it by looking at the text on your screen right when you turn  the computer on, during the BIOS. You\u2019ll see something like \u201cPress [KEY]  to change boot order\u201d. Press that key, and select your CD drive.<\/p>\n<p>Still with me? Good. Now that you\u2019ve booted up Ubuntu, you should see the following screen:<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/1.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Select your language, and hit enter. Now you\u2019ll see this screen:<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/2.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Select \u201cInstall Ubuntu Server\u201d, and away we go!<\/p>\n<p>The installer will now ask you if you want it to detect your keyboard layout. Personally, I always choose no, because<br \/>\nit\u2019s faster to select a standard american keyboard from the list than to have the installer detect it. Either option is fine,<br \/>\njust follow the on-screen instructions.<\/p>\n<p>After you\u2019ve done that, you\u2019ll now see a bunch of loading screens saying things like \u201cDetecting CD-ROM drives\u201d and such.<br \/>\nThese should pass quickly and without problems. However, during these screens, the installer will try to auto-configure your<br \/>\nnetwork settings. For most cases, this will work without complaint. However, if it doesn\u2019t work for you, just follow the<br \/>\non-screen instructions to get it working.<\/p>\n<p>After it\u2019s done with all of that, it will ask you for a host name. You can usually set this to anything; I always set<br \/>\nmine to \u201cweb-server\u201d.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/4.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>The system will now want you to set the time zone for your clock. For me, it\u2019s Pacific. Choose the one that applies to<br \/>\nyou.<\/p>\n<p>Now, the system will detect more hardware, and you\u2019ll be prompted to \u201cpartion the disk(s)\u201d. Select \u201cGuided \u2013 use entire<br \/>\ndisk\u201d.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/5.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>You will now need to select the disk you wish to partition. For most setups, only one disk will be available; however,<br \/>\nfor more specialized systems, more options will be available here. Choose the one that applies to you.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/6.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>It will ask you if you want to write the changes to the disk. Select \u201cYes\u201d and hit enter. The installer will now proceed<br \/>\nto format the drive and set up the partitions.<\/p>\n<p>Now the magic happens. The system will begin to install. While this happens, go get a cup of coffee. This can take anywhere<br \/>\nfrom 10 minutes to an hour. It just depends on your system. There might be times that it seems like it\u2019s frozen; don\u2019t worry,<br \/>\nit isn\u2019t. Just let it do it\u2019s thing. However, if it\u2019s stuck on one thing for upwards of an hour, then yes, it is frozen.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/7.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Now that the system is installed, it needs to set up the account you are going to login with. First, give it your full<br \/>\nname and hit \u201cContinue\u201d.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/8.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Now give it your username. It will normally just set it as your first name,<br \/>\nbut you can change it. One name you may not use is \u201croot\u201d.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/9.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>You will now be asked to provide a password. It is ESSENTIAL that you choose a strong password, or your server will not<br \/>\nbe secure at all. I recommend at LEAST a mixture of numbers, lowercase letters, and uppercase letters. However, for my servers<br \/>\nI use symbols, as well as a mixture of the above. DO NOT use a password shorter than 7 characters.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/10.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Then, re-enter your password to verify that you typed it correctly.<\/p>\n<p>The system will now attempt to configure the \u201cPackage Manager\u201d (we\u2019ll get to what that is shortly). Provide it with your<br \/>\nproxy information, or leave it blank if you don\u2019t use a proxy, and select \u201cContinue\u201d.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/11.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>The system will now scan several servers looking for updates and configuration settings.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/12.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>After that has completed, you will be presented with several options to install server software. Now, listen VERY carefully.<br \/>\nSelect OpenSSH server, and press SPACE, NOT ENTER. If you hit enter, the  install will proceed without installing the OpenSSH server.<\/p>\n<p>You could install \u201cLAMP server\u201d as well, but I have no experience  with this option, so we\u2019re going to install it all with a different<br \/>\ncommand later on.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/13.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>The system will now install your selected software, as well as other system components.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/14.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Finally, the install will finish. Remove the CD, and hit enter. The computer will reboot. If all goes well, you will be<br \/>\npresented with a screen that looks similar to the following:<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/15.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Congratulations! You\u2019ve just finished the hardest part. Ubuntu is now installed, and it is time to turn this computer into<br \/>\na web server.<\/p>\n<hr \/>\n<h2>4. Update Your New Server<\/h2>\n<p>Before we go any further, we need to make sure your server is  up-to-date. To do this, you need to login. First, type your username<br \/>\n(the one you chose earlier), press enter, and then type your password.  As you\u2019re typing your password, you\u2019ll notice that nothing<br \/>\nseems to be happening. Don\u2019t worry, that\u2019s the way it was designed to  work. After you\u2019ve finished typing your password, hit enter,<br \/>\nand your screen should look similar to the one below if all went well:<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/17.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Now, type:<\/p>\n<pre>sudo aptitude update &amp;&amp; sudo aptitude dist-upgrade<\/pre>\n<p>It will ask you for you password, and again, you won\u2019t see anything  as you\u2019re typing it. After you\u2019ve done that, it will ask you if<br \/>\nyou want to continue. Type \u201cy\u201d and press enter. Your screen will look similar to the following:<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/18.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Your system will now download and install all the latest updates.  This will take a while depending on your internet connection. After<br \/>\nit has finished, your computer will need to be rebooted. To do this, type:<\/p>\n<pre>sudo shutdown -r now<\/pre>\n<p>And let it reboot. Your server is now completely updated.<\/p>\n<hr \/>\n<h3>A Quick Note About \u201cSudo\u201d<\/h3>\n<p>By now, you may have noticed that all of the commands you have typed have started with \u201csudo\u201d. This is because they require<br \/>\nadministrator privileges, and that\u2019s what \u201csudo\u201d does. It runs the  command (i.e. \u201cshutdown\u201d) as an administrator, allowing it to work<br \/>\nproperly. This is also why it asks you for your password. However, after you have typed \u201csudo\u201d once and entered your password,<br \/>\nyou do not have to enter your password again for five minutes. Not all  commands require sudo, only ones that modify parts of the system.<br \/>\nGot all of that? Good.<\/p>\n<h2>5. Install Apache, MySQL, and PHP<\/h2>\n<p>It is now time to install some programs. In order to access your  sites from the internet, we\u2019re going to need to install a web server  (Apache). In additon to the web server, we\u2019ll<br \/>\nalso want a database server (MySQL) and a server-side language (PHP) so  that we can run popular applications such as WordPress. So,<br \/>\nlet\u2019s get to it!<\/p>\n<p>Installing programs on Ubuntu is a lot different than installing programs on Windows or<br \/>\nOS X, in that Ubuntu will download and install the programs for you with  a simple command. This is because Ubuntu has something called<br \/>\na <em>Package Manager<\/em>, which manages nearly all the programs on your system. All we have to do is tell the package manager<br \/>\n(called \u201captitude\u201d) that we want it to install Apache, MySQL, and PHP. To do this, type the following command:<\/p>\n<pre>sudo aptitude install apache2 php5-mysql libapache2-mod-php5 mysql-server<\/pre>\n<p>And press enter. Aptitude will download and install of the programs you specified. It will also download and install any<br \/>\ndependencies.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/19.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>During the install process, MySQL will ask you for a root password.  You can set this to anything, just be sure you make it long and secure.<br \/>\nWhatever you do, DO NOT leave this blank.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/20.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>After that has all finished, you now have a fully working web server. To test it out, first find your server\u2019s IP by typing:<\/p>\n<pre>ifconfig | grep inet<\/pre>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/21.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>It\u2019s usually the first IP returned. In my case, it\u2019s 192.168.177.129.  Now that you know the IP, open your web browser and point it<br \/>\nto your server IP. If you see the \u201cIt works!\u201d message, then congratulations, it works.<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/22.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>However, we\u2019re not done yet. We don\u2019t want Apache or PHP to disclose  any information about themselves, as this information is not needed<br \/>\nby your users and could pose a security risk. First, back up the original Apache configuration file:<\/p>\n<pre>sudo cp \/etc\/apache2\/apache2.conf \/etc\/apache2\/apache2.conf.bak<\/pre>\n<p>Now open the configuration file:<\/p>\n<pre>sudo nano \/etc\/apache2\/apache2.conf<\/pre>\n<p>Scroll down (down arrow) to where it says \u201cServerTokens Full\u201d and change it to read \u201cServerTokens Prod\u201d<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/23.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Now, scroll down a little further and change \u201cServerSignature On\u201d to \u201cServerSignature Off\u201d<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/24.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Finally, press Control-O followed by Control-X. That will save the file and exit the text editor.<\/p>\n<p>Now, we need to do the same thing for PHP. First, back up the original PHP configuration file:<\/p>\n<pre>sudo cp \/etc\/php5\/apache2\/php.ini \/etc\/php5\/apache2\/php.ini.bak<\/pre>\n<p>Open the configuration file:<\/p>\n<pre>sudo nano \/etc\/php5\/apache2\/php.ini<\/pre>\n<p>Change \u201cexpose_php = On\u201d to \u201cexpose_php = Off\u201d<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/25.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Again, press Control-O followed by Control-X. Now that the configuration files are updated, restart Apache:<\/p>\n<pre>sudo \/etc\/init.d\/apache2 restart<\/pre>\n<p>You are done setting up Apache, MySQL, and PHP.<\/p>\n<hr \/>\n<h2>6. Install a Firewall<\/h2>\n<p>We now are going to lock down our server a bit more by installing Shorewall, a command-line firewall. To install it:<\/p>\n<pre>sudo aptitude install shorewall<\/pre>\n<p>By default, Shorewall is installed with no rules, allowing complete access. However, this is not the behavior we want.<br \/>\nInstead, we\u2019re going to block all connections to anything other than  port 80 (HTTP) and port 22 (SSH). First, copy the configuration<br \/>\nfiles to the Shorewall directory:<\/p>\n<pre>sudo cp \/usr\/share\/doc\/shorewall-common\/examples\/one-interface\/* \/etc\/shorewall\/<\/pre>\n<p>Now, open the \u201crules\u201d file:<\/p>\n<pre>sudo nano \/etc\/shorewall\/rules<\/pre>\n<p>Add these lines above where it says \u201c#LAST LINE\u201d<\/p>\n<pre>HTTP\/ACCEPT\tnet\t\t$FW\r\nSSH\/ACCEPT\tnet\t\t$FW<\/pre>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/26.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Then press Control-O and Control-X. Your firewall is now configured  to only accept HTTP and SSH traffic. The last thing we need to<br \/>\ndo is tell Shorewall to start on boot. So, open up the main Shorewall configuration file:<\/p>\n<pre>sudo nano \/etc\/shorewall\/shorewall.conf<\/pre>\n<p>Scroll down to \u201cSTARTUP_ENABLED=No\u201d and set it to \u201cSTARTUP_ENABLED=Yes\u201d<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/27.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>Press Control-O and Control-X. Now, open the Shorewall default configuration file:<\/p>\n<pre>sudo nano \/etc\/default\/shorewall<\/pre>\n<p>And change \u201cstartup=0\u2033 to \u201cstartup=1\u2033. Press Control-O and Control-X. Finally, start your firewall:<\/p>\n<pre>sudo \/etc\/init.d\/shorewall start<\/pre>\n<p>Congratulations! Your firewall is now set up and protecting your server.<\/p>\n<hr \/>\n<h2>7. Add Your Website to Your Web Server<\/h2>\n<p>Now that you\u2019ve got everything all set up, you\u2019d probably like to add  a website to it. By default, all of the files Apache serves<br \/>\nup to the internet are located at \u201c\/var\/www\/\u201d. However, you cannot write to this folder. Let\u2019s make it so you can:<\/p>\n<pre>sudo usermod -g www-data [YOUR USERNAME]\r\nsudo chown -R www-data:www-data \/var\/www\r\nsudo chmod -R 775 \/var\/www<\/pre>\n<p>What happened there was you added yourself to the \u201cwww-data\u201d group,  and made the website folder writable to the members of the \u201cwww-data\u201d<br \/>\ngroup.<\/p>\n<p>Now, you\u2019re going to log into your server using SFTP (not to be confused with FTPS). Some clients that support SFTP are:<br \/>\n<a href=\"http:\/\/winscp.net\/eng\/index.php\">WinSCP<\/a> (Windows, Free), <a href=\"http:\/\/filezilla-project.org\/\">FileZilla<\/a> (Windows, Linux, OS X, Free),<br \/>\n<a href=\"http:\/\/cyberduck.ch\/\">Cyberduck<\/a> (OS X, Free), and, my personal favorite, <a href=\"http:\/\/www.panic.com\/transmit\/\">Transmit<\/a><br \/>\n(OS X, $30)<\/p>\n<p>Connect to your server using your username and password, and, if your  client supports it, a default path of \u201c\/var\/www\u201d (if it doesn\u2019t,<br \/>\nsimply browse to \/var\/www once you have logged in): (Transmit pictured)<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/28.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>You may now add your files to this folder (\/var\/www) and they will show up on your server when you browse to it with your<br \/>\nweb browser.<\/p>\n<p>Now, you may wonder why we\u2019re using SFTP instead of FTP. Mainly, because SFTP is already built into OpenSSH (which you installed<br \/>\nearlier). However, it is also a lot more secure than FTP, and makes it  difficult (if not impossible) for malicious users to gain access<br \/>\nto your login credentials.<\/p>\n<hr \/>\n<h2>8. Make Your Server Accesible to the Internet<\/h2>\n<p>Most modern home networks are behind a router these days. Because of  this, your web server will not be visible to the internet without<br \/>\na little work. As I don\u2019t have every router available to test with, I can only give you general directions in this area.<\/p>\n<p>There are two ways to open your server up to the internet: a DMZ or  Port Forwarding. The main difference you\u2019ll notice is that with a DMZ,  your server uses the<br \/>\nfirewall we installed earlier to protect itself. However, with Port  Forwarding, your server will be protected by your router\u2019s firewall.<\/p>\n<p>However, before we go on, you\u2019re going to want to give your server a  static LAN address. To do that, login to your router, and look for  something<br \/>\nalong the lines of \u201cStatic IPs\u201d or \u201cStatic Routing\u201d. After you have  given your server a static LAN address, you can do these next parts.  Remember,<br \/>\nGoogle is your friend.<\/p>\n<p>To port foward, there is an excellent website, <a href=\"http:\/\/portforward.com\/routers.htm\">PortForward.com<\/a>, that, while ugly, can<br \/>\nhelp you get the job done for almost any router. The ports that you want to forward are 22 and 80.<\/p>\n<p>To create a DMZ, you need to login to your router and look for  something like \u201cDMZ settings\u201d. Once you find it, add your server to<br \/>\nthe DMZ, and you\u2019ll be set. Again, Google is helpful in situations like this.<\/p>\n<p>Now, <a href=\"http:\/\/whatismyip.com\/\">find your public IP<\/a>, and voila! You can access your server from anywhere as long<br \/>\nas your IP doesn\u2019t change.<\/p>\n<hr \/>\n<h2>9. Managing Your Server Remotely<\/h2>\n<p>Beside allowing you to upload files, OpenSSH allows you to login to  your server from anywhere as long as you know it\u2019s IP. For Windows,  you\u2019ll<br \/>\nneed an SSH client. I recommend <a href=\"http:\/\/www.chiark.greenend.org.uk\/%7Esgtatham\/putty\/download.html\">Putty<\/a>. For OS X, SSH is<br \/>\nalready installed. Simply open up Terminal, and type \u201cssh <em>you<\/em>@<em>yourip<\/em>\u201c. For Putty, choose SSH, and put in your IP, username, and password<br \/>\nwhen it asks for it. You\u2019ll notice that, once you login, it looks exactly the same as the screen on the server:<\/p>\n<div><img decoding=\"async\" src=\"http:\/\/d2o0t5hpnwv4c1.cloudfront.net\/144_WebServer\/30.png\" border=\"0\" alt=\"\" \/><\/div>\n<p>You can do anything from here that you would do actually sitting at  the server. To logout from the server, simply type \u201cexit\u201d and hit enter.<\/p>\n<hr \/>\n<h2>10. That\u2019s It!<\/h2>\n<p>You now have a completely functioning web server. It makes for a  great testing ground, and would even be suitable to host websites with  fairly<br \/>\nlow traffic. There is obviously a <em>lot<\/em> left to be learned, but hopefully you have gained a little insight into how web servers work.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>All great websites have a great server behind them. In this tutorial, I\u2019ll show you how to set up a dedicated web server (with Apache, MySQL, and PHP) using that old computer you have lying around the house and some free software. 1. A Quick Overview In this tutorial, we are aiming to accomplish several [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-701","post","type-post","status-publish","format-standard","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/posts\/701","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=701"}],"version-history":[{"count":2,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/posts\/701\/revisions"}],"predecessor-version":[{"id":703,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=\/wp\/v2\/posts\/701\/revisions\/703"}],"wp:attachment":[{"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=701"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=701"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/microsoftgeek.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}