whew, nearly done with edits from session with jon
authorChris Koeritz <fred@gruntose.com>
Fri, 17 Nov 2017 02:45:54 +0000 (21:45 -0500)
committerChris Koeritz <fred@gruntose.com>
Fri, 17 Nov 2017 02:45:54 +0000 (21:45 -0500)
production/sites/cakelampvm.com/docs/manual/cakelampvm_guide_v002.html

index 258113928842d8125b6bbe7588e7ab058128de8a..f23c2c06fc9d269e44a614bca177827315764bc3 100644 (file)
         href="https://feistymeow.org/">Feisty Meow® codebase</a> .&nbsp;
       Together, these services provide you with a very flexible and powerful
       testbed for web development, especially suited for <a title="it's cake" href="https://cakephp.org/">CakePHP</a>.</p>
+    <p>Commands preceded by an octothorpe ('#') below are intended to be typed
+      into a bash shell running on the cakelampvm virtual machine.&nbsp; The
+      bash shell can be obtained either by logging into the VM through ssh or by
+      logging in directly to the Virtualbox VM console.&nbsp; You may find the
+      ssh session more convenient, because copy &amp; paste features work as
+      expected.</p>
+    <p>Commands preceded by a greater-than symbol ('&gt;') are intended to be
+      run on the Host PC in a Windows command prompt (or in a bash prompt running
+      on the Host PC).</p>
     <h2> Guest VM Configuration<a id="#config" name="#config"></a></h2>
     <ul>
-      <li>hostname: <a title="the vm's website, when configured properly" href="https://cakelampvm.com/">cakelampvm.com</a></li>
-      <li>local IP address: 10.28.42.20</li>
-      <li>services: DNS (bind9), apache2, fluxbox X windowing system, <a title="not just in the garden"
-          href="https://www.gnome.org/">gnome display manager</a></li>
-      <li>main user: developer (password distributed separately)</li>
-      <li>mysql root password: (password distributed separately)</li>
+      <li>Hostname: <a title="the vm's website, when configured properly" href="https://cakelampvm.com/">cakelampvm.com</a></li>
+      <li>Local IP Address: 10.28.42.20</li>
+      <li>Services Included: DNS (bind9), apache2, fluxbox X windowing system, <a
+          title="not just in the garden" href="https://www.gnome.org/">gnome
+          display manager</a></li>
+      <li>Main VM User: developer (password distributed separately)</li>
+      <li>Database Access: mysql root account, password: (password distributed
+        separately)</li>
     </ul>
     <h2>Powering up with the Feisty Meow® scripts<a id="#powerup" name="#powerup"></a></h2>
     The feisty meow scripts are a cohesive bash scripting environment for
-    getting a variety of tasks done.&nbsp; The scripts recently incorporated the
-    "avbash" collection from Saco Designs and added those scripts to the
-    "site_avenger" collection of scripts.&nbsp; These provide tools for bringing
-    up CakePHP web sites and managing the collection of repositories for those
-    sites.&nbsp; Each website is considered an "application", and the
-    application name itself (e.g. "winterportlibrary") can often provide all the
-    details for "powering up" the site.&nbsp; The feisty meow team has added
-    additional scripts for managing DNS domains and Apache websites that provide
-    the capability to "stand up" an entire website around an application, with
-    accompanying domain.
+    getting a variety of tasks done.&nbsp; The feisty meow scripts recently
+    incorporated the "avbash" collection from Saco Designs and added those
+    scripts to a new "site_avenger" collection of scripts.&nbsp; The site
+    avenger scripts provide tools for bringing up CakePHP web sites and managing
+    the collection of repositories for those sites.&nbsp; Each website is
+    considered an "application", and the application name itself (e.g.
+    "winterportlibrary") can often provide all the details for "powering up" the
+    site.&nbsp; The feisty meow team has added additional scripts for managing
+    DNS domains and Apache websites that provide the capability to "stand up" an
+    entire website around an application, with an accompanying DNS domain and
+    Apache2 site definition.
     <p>The site avenger scripts are documented separately within the feisty meow
       codebase.&nbsp; Consult the <span style="text-decoration: underline;">f</span><a
         title="quickstart" href="https://feistymeow.org/feisty_meow/readme.txt">eisty
 meow
         readme</a> file first, as it provides some valuable information on
-      configuring the codebase.&nbsp; The site avenger script documentation is
-      available in the <a title="useful commands" href="https://feistymeow.org/feisty_meow/documentation/feisty_meow_command_reference.txt">feisty
+      configuring the codebase initially.&nbsp; The site avenger script commands
+      are documented in the <a title="useful commands" href="https://feistymeow.org/feisty_meow/documentation/feisty_meow_command_reference.txt">feisty
         meow command reference</a> file.</p>
     <p>(The feisty meow codebase is already configured for the developer account
       on the cakelampvm virtual machine.)</p>
@@ -133,12 +145,17 @@ meow
         These are my settings, with IPv6 left disabled:<br>
         <img alt="nat net config" src="images/nat_network_config.png"></li>
     </ol>
-    <h2>Start up the VM<a id="#start-vm" name="#start-vm"></a></h2>
+    <h2>Starting up the VM<a id="#start-vm" name="#start-vm"></a></h2>
     <p>Using the virtualbox interface, you should now be able to start your
       virtual machine.&nbsp; Virtualbox will complain if it detects any
       remaining configuration problems in the VM, but it should start
       normally.&nbsp; The Linux boot sequence will show many lines of text,
       before bringing up a black console window with a login dialog.</p>
+    <p>If Windows complains about the Virtualbox application slamming into its
+      firewall, then allow the Virtualbox to get through.&nbsp; Usually, telling
+      Windows that once is enough, but if any odd network access problems result,
+      edit the Windows firewall settings and allow Virtualbox to use both
+      "Public" and "Private" networks.</p>
     <p>You can log in directly on the VM console with the developer account, but
       it is generally more useful to connect to the cakelampvm over ssh.&nbsp;
       If the networking has been established properly, you should be able to do
@@ -152,6 +169,26 @@ meow
       describes how to set up Cygwin to run X server, which enable X forwarding
       to your local display.</p>
     <p>...{insert that info}...</p>
+    <h2>Updating cakelampvm to the Latest Model<a id="#update-vm" name="#update-vm"></a></h2>
+    <p>The cakelampvm is released with the intention to not be released
+      again.&nbsp; Version 001 was not built with that explicit intention, which
+      then required the release of Version 002.&nbsp; We hope to not need a v003
+      release.</p>
+    <p>There is an update feature built into the VM that is quite easy to
+      use.&nbsp; The updates are driven by the feisty meow script repository in
+      conjunction with a local scripted command.&nbsp; To activate the "update
+      process" for your VM, run the following commands (without the initial '#'
+      symbol):</p>
+    <p># rpuffer $FEISTY_MEOW_APEX&nbsp;&nbsp; # updates to the latest version
+      of feisty meow<br>
+      # revamp_cakelampvm&nbsp;&nbsp;&nbsp; # enacts any configuration changes
+      needed, plus fixes web folder and other permissions.</p>
+    <p>These two commands can be run at any time to patch up your VM to the
+      latest.</p>
+    <p>The first command ("rpuffer ...") is also useful on its own for getting
+      the latest version of the feisty meow code.&nbsp; If there are bug fixes
+      you need for the scripts or you want updated cakelampvm documentation,
+      that is the command to use.</p>
     <h2>Using the guest VM's DNS services<a id="#dns-from-vm" name="#dns-from-vm"></a></h2>
     <p>The cakelampvm has been set up to provide a DNS server which will answer
       name lookup requests on any of the sites that the cakelampvm is hosting
@@ -168,14 +205,49 @@ meow
       server, because a secondary DNS server can "take over" providing the name
       lookups, and thus foul up DNS requests that should succeed for your
       VM-hosted sites.</p>
-    <p>It is important to remember to switch back to a normal DNS server
-      configuration when you shut off the cakelampvm, or your machine will not
-      know the names of any sites on the internet any more!</p>
-    <p>Once the DNS server is properly set up, these ping commands should get
-      answering responses (from 10.28.42.20):</p>
-    <pre>ping cakelampvm.com</pre>
-    <pre>ping defaultcake.cakelampvm.com</pre>
-    <pre>ping mapsdemo.cakelampvm.com</pre>
+    <p>If your Host PC is running Windows, see the DNS configuration section
+      below that is tailored to that operating system.</p>
+    <p>Important Note: It behooves you to remember to switch back to a normal
+      DNS server configuration when you shut off the cakelampvm, or your machine
+      will not know the names of any sites on the internet any more!</p>
+    <p>Once the DNS server is properly set up (by whatever means necessary),
+      these ping commands should get answering responses (from 10.28.42.20) on
+      both the cakelampvm VM and on your host PC.&nbsp; Note: ping on Linux
+      keeps going forever, so hit control-C when you are tired of seeing the pings:</p>
+    <pre># ping cakelampvm.com</pre>
+    <pre># ping mapsdemo.cakelampvm.com</pre>
+    <p>Note that any other answer than 10.28.42.20 for the address is *bzzzt*
+      wrong, and means something needs to be fixed.</p>
+    <p>If these pings succeed (which hopefully they will!), then try accessing
+      the websites of each domain:</p>
+    <pre>(browse to) http://cakelampvm.com</pre>
+    <pre>(browse to) http://mapsdemo.cakelampvm.com</pre>
+    <p>These should show local sites on the VM rather than sites on the
+      internet.&nbsp; If you instead get failures to find the domains, or if the
+      "real internet" site comes up for cakelampvm.com (the page covered with
+      red X marks and complaining), then the DNS is not hooked up properly yet.</p>
+    <h4>Troubleshooting the DNS</h4>
+    <p>If your pings are getting the wrong answers and you're certain the DNS
+      settings on your Host PC are right, then you may need to flush your DNS
+      cache, and that might be sufficient.&nbsp; On Windows, the command for
+      flushing DNS is:</p>
+    <pre>&gt; ipconfig /flushdns</pre>
+    <p>and on Linux the flush DNS command can be many different things, but try
+      these two most common options:</p>
+    <pre># sudo service dns-clean restart&nbsp;&nbsp; # restarts the client side DNS cache.</pre>
+    <p>or</p>
+    <pre># sudo service nscd restart&nbsp;&nbsp; # restarts the nscd caching server.</pre>
+    After, this try the pings again.&nbsp; If they still fail, please go back
+    over your DNS configuration very carefully.&nbsp; The cakelampvm's DNS
+    feature *does* actually work, but operating systems sometimes do their best
+    to deny this.<br>
+    <h4>Troubleshooting the Apache Sites</h4>
+    <p>If your DNS pings and lookups are functioning properly, but you're just
+      not getting the right websites, then try clearing your browser's cache and
+      shutting the browser application down.&nbsp; Then, start the browser up
+      and try the address again.&nbsp; Often this cache dumping is enough to fix
+      the browser so that you start seeing the local website versions on
+      cakelampvm.com.</p>
     <h3>Setting up DNS on Windows<a id="#windoze-dns" name="#windoze-dns"></a></h3>
     <p>The ipconfig tool will provide helpful information about your current
       networking and DNS configuration:</p>
@@ -200,15 +272,26 @@ meow
       for easier access.</p>
     <p>Currently, the root of all web servers is exposed as "www".&nbsp; Editing
       the files in those folders requires ownership by the developer user.&nbsp;
-      Currently the defaultcake server is owned by developer.</p>
-    <p>One should be able to create a new directory in the www folder owned by
-      the developer user over the network also, which can be used for creating
-      new projects.&nbsp; However, there is a config issue in the current vm
-      (v001) about this; to fix, run this command on the guest vm as the
-      developer user:</p>
-    <pre>sudo chmod g+w /var/www</pre>
-    <p>Afterwards, the www folder should allow the developer user to create new
-      folders at will.</p>
+      The existing mapsdemo site is owned by a different user ("fred") rather
+      than developer, mostly as a test case.&nbsp; The "fred", "developer", and
+      "www-data" accounts on the VM have all been put into each others Unix
+      "groups" so that they can access each other's files, and thus you may not
+      notice any issues editing fred's files.</p>
+    <p>One should be able to create a new directory over the network also.&nbsp;
+      Try creating a junk folder in the "www" folder, and then deleting it
+      again.&nbsp; That should succeed, and this approach can be used to create
+      folders (from the Host PC) that are owned by the developer user (on the
+      VM).&nbsp; You should be able to create folders or copy files within the
+      developer's home folder also ("/home/developer").</p>
+    <p>If you run into any permission problems that prevent file access, either
+      remotely or within the VM itself, then try running this command to fix
+      them:</p>
+    <pre># revamp_cakelampvm</pre>
+    <p>Afterwards, the www folder and others should allow the developer user to
+      create new folders at will.</p>
+    <p>The revamp command above is also used to deliver new configuration to the
+      VM from the feisty meow script environment; running it after any update of
+      the feisty meow codebase is a good idea.</p>
     <h2>Accessing files on the host PC from the guest VM<a id="#samba-shares" name="#samba-shares"></a></h2>
     <p>If you want to share a folder from the host to the guest, perhaps for
       driver updates or other conveniences, then make the share with these
@@ -222,8 +305,7 @@ meow
         shared, and give it a name for the guest.&nbsp; We assume the folder
         name will be "myshare".</li>
       <li>On the guest vm, run the following commands to mount the share:<br>
-        <pre>mkdir ~/shared&nbsp;&nbsp;&nbsp; # for the guest's version of the shared folder</pre>
-        <pre>sudo mount -t vboxsf myshare ~/shared&nbsp;&nbsp;&nbsp; # mount the vm's share name onto the folder on the vm.</pre>
+        <pre># mkdir ~/shared&nbsp;&nbsp;&nbsp; # for the guest's version of the shared folder<br># sudo mount -t vboxsf myshare ~/shared&nbsp;&nbsp;&nbsp; # mount the vm's share name onto the folder on the vm.</pre>
       </li>
     </ol>
     <h2>Adding a new website and domain on the guest VM</h2>
@@ -242,6 +324,8 @@ meow
       its own (e.g., "B.C" is an SLD).</p>
     <p>Once the DNS option has been picked and implemented, continue to the next
       section of "Creating a New Apache Site".</p>
+    <p>For either Option A or Option B, first connect to the cakelampvm via ssh
+      as the developer user, e.g.: ssh developer@cakelampvm.com </p>
     <h3>DNS Option A: Adding a sub-domain in an existing domain</h3>
     <p>Let us say a customer needs an application called "excalibur".&nbsp; It
       will be a new subdomain within an existing domain, such as the
@@ -251,21 +335,17 @@ meow
     already exist before adding the subdomain; see DNS Option B below for
     details on how to add a containing domain for the first time.
     <h4>Quick approach: Use the feisty meow "add_domain" command.</h4>
-    <p> Connect to the cakelampvm via ssh as the developer user, e.g.: ssh
-      developer@cakelampvm.com </p>
     <p>Run this command in a bash shell on the VM:</p>
     <pre># add_domain excalibur.cakelampvm.com</pre>
     <p>Done.</p>
     <h4>Manual approach: Edit the bind9 configuration.</h4>
     <p>Note: the manual approach is not compatible with later use of feisty
       meow's "remove_domain".</p>
-    Connect to the cakelampvm via ssh as the developer user, e.g.: ssh
-    developer@cakelampvm.com
-    <p>Execute the following command to edit the DNS file for the cakelampvm
-      domain:</p>
+    Execute the following command to edit the DNS file for the cakelampvm
+    domain:
     <pre># sudo vi /etc/bind/cakelampvm.com.conf</pre>
     <p>Add a stanza for the new site at the end of this file:</p>
-    <pre>excalibur.cakelampvm.com&nbsp;&nbsp;&nbsp; IN A&nbsp;&nbsp;&nbsp; 10.28.42.20<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IN HINFO "linux server" "ubuntu"</pre>
+    <pre>excalibur.cakelampvm.com.&nbsp;&nbsp;&nbsp; IN A&nbsp;&nbsp;&nbsp; 10.28.42.20<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IN HINFO "linux server" "ubuntu"</pre>
     <p>Restart the DNS server:</p>
     <pre># sudo service bind9 restart</pre>
     <p>Afterwards, pinging excalibur.cakelampvm.com should work from both the
@@ -275,48 +355,67 @@ meow
       config file for the new domain and add it to the bind directory.&nbsp; For
       this example, we need to add the site "excalibur.tv" into the DNS.</p>
     <h4>Quick approach: Use the feisty meow "add_domain" command.</h4>
-    <p> Connect to the cakelampvm via ssh as the developer user, e.g.: ssh
-      developer@cakelampvm.com </p>
-    <p>Run this command in a bash shell on the VM:</p>
+    Run this command in a bash shell on the VM:
     <pre># add_domain excalibur.tv</pre>
     <p>Done.</p>
     <h4>Manual approach: Edit a new DNS config file</h4>
-    <p>Create a file called /etc/bind/excalibur.tv.conf for our new domain
-      excalibur.tv with these contents:</p>
-    <pre>$TTL 1W<br>@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN SOA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fred.cakelampvm.com. (<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2017100801&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; serial<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; refresh<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; retry<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; expiry<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6H )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; minimum<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN NS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ns.cakelampvm.com.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN MX&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mail.cakelampvm.com.<br><br># main domain for machine.<br>excalibur.tv.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.28.42.20<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN HINFO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "linux server" "ubuntu"</pre>
+    <p>Note: the manual approach is not compatible with later use of feisty
+      meow's "remove_domain".</p>
+    Create a file called /etc/bind/excalibur.tv.conf for our new domain
+    excalibur.tv with these contents:
+    <pre>$TTL 1W<br>@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN SOA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fred.cakelampvm.com. (<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2017100801&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; serial<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; refresh<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; retry<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; expiry<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6H )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; minimum<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN NS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ns.cakelampvm.com.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN MX&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mail.cakelampvm.com.<br><br># new SLD for our excalibur site.<br>excalibur.tv.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.28.42.20<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN HINFO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "linux server" "ubuntu"</pre>
     The gnarly prefix stuff above the "excalibur.tv." listing establishes
     configuration info for the new domain.&nbsp; This file relies on the
     existing cakelampvm.com infrastructure in DNS, such as the "ns" host, which
     is the domain's name server.&nbsp; However, the new domain does <span style="text-decoration: underline;">not</span>
     live inside the cakelampvm.com domain.<br>
-    <p>Now that the config file is in place, edit "named.conf.local" to add the
-      new file by adding this bit of configuration at the end:</p>
+    <p>Now that the config file is in place, edit "/etc/bind/named.conf.local"
+      to add the new file by adding this bit of configuration at the end:</p>
     <pre>zone "excalibur.tv" in {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file "/etc/bind/excalibur.tv.conf";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type master;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow-query { any; };<br>};</pre>
     <p>Restart the DNS server:</p>
     <pre># sudo service bind9 restart</pre>
     <p>Afterwards, pinging excalibur.tv should work from both the guest and the
       host.</p>
     <h3>Creating a New Apache site</h3>
+    <p>First, connect to the cakelampvm via ssh as the developer user, e.g.: ssh
+      developer@cakelampvm.com </p>
+    <h4>Quick approach: Use the feisty meow "add_apache_site" command.</h4>
+    <p>Run this command in a bash shell on the VM:</p>
+    <pre># add_apache_site excalibur excalibur.tv</pre>
+    <p>(The first parameter is the application name, the second is the domain
+      name.)</p>
+    <p>Done.</p>
+    <h4>Manual approach: Edit an Apache config file</h4>
+    <p>Note: the manual approach is not compatible with later use of feisty
+      meow's "remove_apache_site".</p>
+    <p>For Apache, the choice of DNS Option A or B, subdomain or SLD does not
+      matter.&nbsp; The site configuration file just has to accurately specify
+      the domain in question.</p>
     <p>Start with the following template file for the new website, and modify it
       for the appropriate host name:</p>
-    <pre>&lt;VirtualHost *:80&gt;<br>&nbsp;&nbsp;&nbsp; ServerName greatsite.cakelampvm.com<br>&nbsp;&nbsp;&nbsp; ServerAlias greatsite.cakelampvm.com *.greatsite.cakelampvm.com<br>&nbsp;&nbsp;&nbsp; DocumentRoot /var/www/greatsite<br>&nbsp;&nbsp;&nbsp; ErrorLog ${APACHE_LOG_DIR}/greatsite.cakelampvm.com-error.log<br>&nbsp;&nbsp;&nbsp; CustomLog ${APACHE_LOG_DIR}/greatsite.cakelampvm.com-access.log combined<br>&nbsp;&nbsp;&nbsp; Alias /statistics "/var/www/webwork.repository/webwork/maps_demo/webroot/statistics"<br>&nbsp;&nbsp;&nbsp; Include /etc/apache2/conf-library/basic-options.conf<br>&nbsp;&nbsp;&nbsp; Include /etc/apache2/conf-library/rewrite-enabling.conf<br>&lt;/VirtualHost&gt;</pre>
-    <p>The above example is pre-modified for DNS Option A above, the
-      greatsite.cakelampvm.com name.&nbsp; Switching all of those to
-      "greatsite.tv" instead would support DNS option B.</p>
-    <p>Copy that file into /etc/apache/available-sites under an appropriate
-      name, which here we will call "greatsite.conf".</p>
-    <p>Tell apache to use the new file:</p>
-    <pre>a2ensite greatsite.conf</pre>
+    <pre>&lt;VirtualHost *:80&gt;<br>&nbsp;&nbsp;&nbsp; ServerName excalibur.tv
+&nbsp;&nbsp;&nbsp; DocumentRoot /home/apps/excalibur<br>&nbsp;&nbsp;&nbsp; ErrorLog ${APACHE_LOG_DIR}/excalibur.tv-error.log<br>&nbsp;&nbsp;&nbsp; CustomLog ${APACHE_LOG_DIR}/excalibur.tv-access.log combined<br>&nbsp;&nbsp;&nbsp; Include /etc/apache2/conf-library/basic-options.conf<br>&nbsp;&nbsp;&nbsp; Include /etc/apache2/conf-library/rewrite-enabling.conf<br>&lt;/VirtualHost&gt;</pre>
+    <p>The above example is appropriate for our excalibur app in the
+      excalibur.tv domain (using DNS Option B).&nbsp; Modifying the excalibur.tv
+      references in it is sufficient to retarget it for any domain you want.</p>
+    <p>Copy the new site config file into "/etc/apache2/sites-available" with an
+      appropriate file name that includes the site's domain name.&nbsp; We will
+      call our config file "excalibur.tv.conf".&nbsp; If you developed the file
+      in your home folder, this would be the command to move it up to Apache:</p>
+    <pre># sudo cp ~/excalibur.tv.conf /etc/apache2/sites-available</pre>
+    <p>Then tell apache to use the new file:</p>
+    <pre># sudo a2ensite excalibur.tv  # the '.conf' portion of the filename is unnecessary for this command.
+</pre>
     <p>Finally, restart apache to get it to begin serving the site:</p>
-    <pre>sudo service apache2 restart</pre>
+    <pre>sudo service apache2 restart</pre>
     <h3>Test the new web site</h3>
     <p>Given the configuration above, your host PC should now be able to access
       the new website.</p>
-    <p>To test this, first try pinging the hostname, e.g.: ping
-      greatsite.cakelampvm.com or ping greatsite.tv</p>
-    <p>Then, if there are responses to the ping, it means the DNS is
-      working.&nbsp; If there are no responses, check the instructions in the
-      above DNS option section.</p>
+    <p>To test this, first try pinging the new DNS name:</p>
+    <pre># ping excalibur.tv</pre>
+    <p>If there are responses to the ping, it means the DNS is working.&nbsp; If
+      there are no responses, check the instructions in the above DNS option
+      section.</p>
     <p>Once the DNS is working, one can try browsing to the site at:
       http://greatsite.cakelampvm.com or http://greatsite.tv (depending on the
       DNS option chosen).</p>