more updates
[feisty_meow.git] / production / sites / cakelampvm.com / docs / manual / cakelampvm_guide_v002.html
index 610b4564f960ec684afd245a279c08a7bdffbbbc..279fd5f348fe317dc09403569b77563f4ab506d1 100644 (file)
@@ -9,18 +9,51 @@
       Configuration and Usage</h1>
     <h2 style=" text-align: center;">By Chris Koeritz</h2>
     <h3 style="   text-align: center;"> Vintage: cakelampvm v002 &nbsp;&nbsp;
-      Updated: 2017-11-10</h3>
-    <h6> </h6>
-    <h2>Basic info for the guest VM</h2>
+      Updated: 2017-11-16</h3>
+    <p>The cakelampvm project provides a Virtualbox VM that acts as an "internet
+      in a bottle".&nbsp; The virtual machine provides DNS services (<a title="dns server"
+        href="http://www.bind9.net/">bind9</a>), a Web server (<a title="patchy"
+        href="https://httpd.apache.org/">Apache2</a>), a full <a title="ubuntu means compassion and humanity"
+        href="https://www.ubuntu.com/">Ubuntu</a> <a title="it's pronounced leenoox"
+        href="https://www.linuxfoundation.org/">Linux</a> desktop environment,
+      the <a title="flux is change" href="http://fluxbox.org/">Fluxbox</a> <a
+        title="a better windows" href="https://www.x.org/">X window manager</a>,
+      and a suite of tools called the <a title="feisty meow® concerns ltd. website"
+        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>
+    <h2> Guest VM Configuration<a id="#config" name="#config"></a></h2>
     <ul>
-      <li>hostname: cakelampvm.com</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: DNS (bind9), apache2, fluxbox X windowing system, gnome
-        display manager</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>
     </ul>
-    <h2>How to set up virtualbox for your host PC</h2>
+    <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.
+    <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
+        meow command reference</a> file.</p>
+    <p>(The feisty meow codebase is already configured for the developer account
+      on the cakelampvm virtual machine.)</p>
+    <h2>How to set up virtualbox for your host PC<a id="#virtualbox-setup" name="#virtualbox-setup"></a></h2>
     <ol>
       <li>Download and install virtualbox:
         https://www.virtualbox.org/wiki/Downloads</li>
         machines.&nbsp; Before starting it, perform the following network
         configuration sections.</li>
     </ol>
-    <h3>Configure the Host-Only network on virtualbox</h3>
+    <h3>Configure the Host-Only network on virtualbox<a id="#host-only" name="#host-only"></a></h3>
     <p>Configuring host-only networking for the VM makes the VM completely local
       to your machine.&nbsp; The cakelampvm will not be accessible on the
       internet or from the LAN, and can only be accessed by your host PC.</p>
+    <p>Note: If the host-only or NAT network exist ahead of time, virtualbox may
+      complain about them even if they have the correct configuration.&nbsp;
+      This can be corrected simply by opening the VM settings and selecting the
+      appropriate network names again.</p>
+    <p>To configure the host-only network, follow these steps:</p>
     <ol>
       <li> Go to virtual box "Preferences" (global preferences, not for a
         specific vm).</li>
       <li> Click on the "Network" tab.</li>
       <li> Choose the "Host-only Networks" tab from within "Network".</li>
-      <li> Click the plus icon to add a new host-only network.</li>
+      <li> Click the plus icon to add a new host-only network, or if there is
+        already a Host-only network, then edit it.</li>
       <li>Set the "Adapter" parameters:<br>
         IPv4 Address: 10.28.42.1<br>
         IPv4 Network Mask: 255.255.255.0<br>
         for convenience and stability.</li>
     </ol>
     <p>Additional information on host-only (and other) network adapter types is
-      at: https://www.virtualbox.org/manual/ch06.html#network_nat_service<br>
-    </p>
-    <h3>Configure the Nat Network on virtualbox</h3>
+      at: https://www.virtualbox.org/manual/ch06.html#network_nat_service</p>
+    <h3>Configure the NAT Network on virtualbox<a id="#nat-network" name="#nat-network"></a></h3>
+    <p>The NAT (Network Address Translation) network allows the VM to get off of
+      the machine and onto the internet safely.&nbsp; It will use this interface
+      for any communication off of the host machine.&nbsp; Since the real IP
+      address of the VM is hidden behind the NAT firewall on Virtualbox, this
+      keeps the VM safe from attackers, and hence your machine stays safe as
+      well.</p>
+    <p>To set up the NAT network, follow these steps:</p>
     <ol>
       <li> Go to virtual box "Preferences" (global preferences, not for a
         specific vm).</li>
         These are my settings, with IPv6 left disabled:<br>
         <img alt="nat net config" src="images/nat_network_config.png"></li>
     </ol>
-    <h2>Using the guest VM's DNS services</h2>
+    <h2>Start 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>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
+      this with:</p>
+    <pre>ssh developer@cakelampvm.com&nbsp; (or equivalent with your ssh client)</pre>
+    <p>And then provide the password to log in.</p>
+    <p>If a feature called "X forwarding" is enabled in your ssh client, then
+      you can start graphical applications on the VM and display them on your
+      local machine.&nbsp; This works right away on most Linux hosts, but can
+      also work on PCs with X window system installed.&nbsp; The section below
+      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>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 requests for all of the sites that the VM hosts.</p>
+      name lookup requests on any of the sites that the cakelampvm is hosting
+      for you.&nbsp; It will also serve as a general DNS server for any other
+      domains that need to be looked up.</p>
     <p>To use the cakelampvm DNS, modify your host operating system network
       configuration by adding or changing the DNS server to use the guest VM's
-      DNS service.&nbsp; This is available at the local address
-      10.28.42.20.&nbsp; The DNS server can be tested with nslookup, dig and
-      other tools.</p>
+      DNS service.&nbsp; The cakelampvm is available at the local IP address
+      10.28.42.20.&nbsp; (The DNS server can be tested with nslookup, dig and
+      other tools.)</p>
     <p>Note that the cakelampvm DNS should be listed first, if one intends to
-      override any DNS names that actually exist out on the internet.</p>
-    <p>If the DNS server is properly set up, then these ping commands should get
-      answering responses:</p>
+      override any DNS names that actually exist out on the internet.&nbsp; We
+      have also found it most effective to have only the cakelampvm as your DNS
+      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>
-    <h2>Editing files on the guest VM from the host</h2>
+    <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>
+    <pre>ipconfig --all</pre>
+    <p>The DNS configuration on Windows is somewhat byzantine.&nbsp; The pipe
+      characters ('|') below are used to separate the menus or tabs or dialogs
+      to traverse.&nbsp; Follow this path to get to the DNS config:</p>
+    <pre>Control Panel | Network &amp; Sharing | click WiFI or Ethernet link near top right | click Adapter Settings on left | click on specific network device to modify | select Properties</pre>
+    <p><br>
+    </p>
+    <p>{fill in rest}<br>
+    </p>
+    <p><br>
+    </p>
+    <h2>Editing files on the guest VM from the host<a id="#editing-files-on-vm"
+        name="#editing-files-on-vm"></a></h2>
     <p>On the host computer, look for the guest vm as a networked computer
       called cakelampvm.&nbsp; This should provide some network shares using
       Microsoft SMB protocol, and they can be attached to using the "developer"
     <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>
-    <h2>Accessing files on the host PC from the guest VM</h2>
+    <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
       steps:</p>
       </li>
     </ol>
     <h2>Adding a new website and domain on the guest VM</h2>
-    <p>To add a new website, you will need to pick one of the DNS options below
-      (A or B) depending on how you want to name the site.&nbsp; After the DNS
-      is updated, then follow the section after for creating a new apache conf
-      file.</p>
-    <p>Assuming one has created a new folder in "www" called "greatsite", then
-      the new web site can be brought online on the vm with one of the following
-      options.</p>
-    <h3>DNS Option A: Using a sub-domain in the cakelampvm.com domain</h3>
+    <p>To add a new website, you will first need to pick one of the DNS options
+      below (A or B) depending on how you want to name the site.</p>
+    <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
+      "cakelampvm.com" domain, meaning we want the VM to start answering
+      requests for "excalibur.cakelampvm.com".</p>
+    <h3>DNS Option A: Adding a sub-domain in an existing domain</h3>
+    Note that this option requires the containing domain "cakelampvm.com" to
+    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>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>
     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
     <pre>iface enp0s8 inet dhcp</pre>
     <p> </p>
     <h2>Handy Techniques</h2>
+    <h3>Assorted Guides and Cheat-Sheets</h3>
+    <p>Cheat sheet for Vim: <a title="vim commands" href="https://vim.rtorr.com/">https://vim.rtorr.com/</a></p>
+    <p>Git branching model that seems to work well: <a title="release and patch process"
+        href="http://nvie.com/posts/a-successful-git-branching-model/">http://nvie.com/posts/a-successful-git-branching-model/</a></p>
+    <p><br>
+    </p>
     <h3>Get the network address on the guest vm</h3>
     <p>Run this command: ifconfig</p>
     <p>In the results, look for "inet addr".&nbsp; There may be more than one,
@@ -279,7 +380,20 @@ https://askubuntu.com/questions/293816/in-virtualbox-how-do-i-set-up-host-only-v
         here:
 https://help.ubuntu.com/community/How%20to%20Create%20a%20Network%20Share%20Via%20Samba%20Via%20CLI%20%28Command-line%20interface/Linux%20Terminal%29%20-%20Uncomplicated%2C%20Simple%20and%20Brief%20Way%21</li>
     </ul>
+    <p><span style="font-style: italic;"><br>
+      </span></p>
+    <p><span style="font-style: italic;"><br>
+      </span></p>
+    <p><span style="font-style: italic;"><br>
+      </span></p>
+    <p><span style="font-style: italic;">remaining work:</span></p>
+    <p>todo: arrange gritty details to back.</p>
+    <p>todo: toc goes after intro paragraph.</p>
     <p><br>
     </p>
+    <h6> </h6>
+    <h2><span style="text-decoration: underline;"><br>
+      </span></h2>
+    <p> </p>
   </body>
 </html>