Difference between revisions of "OPS345 Lab 3"

From CDOT Wiki
Jump to: navigation, search
Line 81: Line 81:
 
?>
 
?>
 
</source>
 
</source>
 +
* If you feel curious you can see what other metadata you can get via http://169.254.169.254 here: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html

Revision as of 04:32, 22 September 2021

  • www instance was created in the last lab, with a static private IP, and port fowarding done from port 2211 on router to port 22 on www.
  • yum install httpd iptables-services
  • enable iptables
  • before starting the service, we'll configure the server to store all webpages on a separate volume: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html
    • 1GB in us-east-1a
    • rename to www-data
    • attach to www (note reboot is not required)
  • ls /dev/xvd* -l > /dev/xvdf
  • vgcreate vg_www /dev/xvdf
  • lvcreate -n lv_www -l 100%FREE vg_www
  • blkid
  • ls /dev/mapper/vg_www-lv_www
  • mkfs.ext4 -L www /dev/mapper/vg_www-lv_www
  • vi /etc/fstab
    • /dev/mapper/vg_www-lv_www /var/www ext4 defaults 0 0
  • mount /var/www/
  • ls /var/www/
  • mount | grep /dev/xvd
  • ls /var/www/
  • mkdir /var/www/html
  • vi /var/www/html/index.php
    Hello. My web server still works.<br />
    If this shows the current date and time, PHP works too:<br />
    <?php system("date"); ?>
  • chown -R andrew /var/www/html
  • systemctl start httpd
  • On router: iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 10.3.45.11:80
  • On www: iptables -I INPUT 3 -p tcp --dport 80 -j ACCEPT
  • service iptables save
  • Edit security group, allow HTTP
  • ss -atnp on router and www
  • install php, restart httpd
  • make proper html page:
    <html>
    <head>
    <style>
    body  {background-color: powderblue;}
    table {border-spacing: 1cm 0cm;}
    h2    {color: blue;}
    th    {text-align: left;}
    p     {color: red; font-weight: bold;}
    </style>
    </head>
    <body>
    Hello. My web server still works.<br />
    If this shows the current date and time, PHP works too:<br /><br />
    <?php system("date"); ?>
    <h2>Instance Info</h2>
    <table>
    <tr><th>Configuration</th><th>Value</th></tr>
    <tr>
      <td><p>Private IP</p></td>
      <td><?php system("curl http://169.254.169.254/latest/meta-data/local-ipv4"); ?></td>
    </tr>
    <tr>
      <td><p>Public IP</p></td>
      <td><?php system("curl http://169.254.169.254/latest/meta-data/public-ipv4"); ?></td>
    </tr>
    </table>
    </body>
    </html>
  • Removing public ip doesn't work. Have to modify subnet and recreate the vm:
    • Terminate www, rename it to www-deleted.
    • Modify subnet to not auto-assign public IPs.
    • Recreate the www instance with the same steps, except specify a primary ip.
    • Install httpd, php
    • To get yum install to work, allocate a new elastic ip "temporary" and associate with www
    • Note that www-data was not deleted when the original www was terminated. Attach it to www now.
    • All the data on the logical volume is still there, but fstab is gone, add lv-www back into there.
    • Start httpd, everything should be back to as it was.
    • Dissasociate the public ip. Everything should keep working.
  • Add a 404 check for missing ip:
<?php 
system("curl http://169.254.169.254/latest/meta-data/public-ipv4 2>&1| grep -q '404 - Not Found'", $rc);      
if ($rc == 0) 
  echo "None found";
else
  system("curl http://169.254.169.254/latest/meta-data/public-ipv4");
?>