Request VM feedback
[catagits/Catalyst-Manual.git] / lib / Catalyst / Manual / Tutorial / 01_Intro.pod
index 1227837..297e0b9 100644 (file)
@@ -70,21 +70,29 @@ form management).
 The most recent code for the tutorial is included on the Tutorial Virtual
 Machine you can download from:
 
+L<http://cattut.shadowcat.co.uk/>
+
+See L</STARTING WITH THE TUTORIAL VIRTUAL MACHINE> below for
+instructions getting and using the VM.
+
+Should you wish to download the code directly, you get pull it via the
+following command (note: will probably be switching to git soon):
+
     svn co http://dev.catalyst.perl.org/repos/Catalyst/trunk/examples/Tutorial/ CatalystTutorial
 
 This will download the most recent code for each chapter of the
 tutorial into the CatalystTutorial directory on your machine.
 
-B<These reference implementations are provided so that when you follow
+These reference implementations are provided so that when you follow
 the tutorial, you can use the code to ensure that your system is set up
 correctly (which shouldn't be an issue if you use the Tutorial Virtual
 Machine), :-) and that you have not inadvertently made any typographic
-errors, or accidentally skipped part of the tutorial.>
+errors, or accidentally skipped part of the tutorial.
 
 B<NOTE: You can use any Perl-supported OS and environment to run
 Catalyst.> It should make little or no difference to Catalyst's
 operation, B<but this tutorial has been written using the Debian-based
-Tutorial Virtual Machine that you can download and use to work through
+Tutorial Virtual Machine> that you can download and use to work through
 the full tutorial step by step.  B<WE STRONGLY RECOMMEND THAT YOU USE
 THE VIRTUAL MACHINE IMAGE TO WORK THROUGH THE TUTORIAL> to avoid issues
 that may crop up if you are working with a different configuration.  We
@@ -176,18 +184,35 @@ applications can be found at
 L<http://wiki.catalystframework.org/wiki/resources/catalystexamples> and
 in the C<examples> area of the Catalyst Subversion repository at
 L<http://dev.catalyst.perl.org/repos/Catalyst/trunk/examples/>.
-***Todo: update link above?
-
 
 
 =head1 STARTING WITH THE TUTORIAL VIRTUAL MACHINE
 
+The steps below briefly outline how you can download the Tutorial
+Virtual Machine.  This document uses the term "host machine" to refer to
+the physical machine where you will run the virtualization software and
+boot up the VM.  The terms "guest machine" or just "VM" refer to the
+virtual machine itself -- the thing where you actually do the tutorial
+and that you boot up on the "host machine".
+
+Also, to reduce download size, the Tutorial VM just includes a minimal
+command-line environment.  In general, it is expected that people will
+boot up the Tutorial VM on their main desktop (the "host machine" using
+the terminology above) and then use that main desktop machine to SSH and
+web browse into the "guest VM" as they work through the tutorial.  If
+you wish to install X-Windows (or any other packages), just use the
+C<aptitude> (or C<apt-get>) Debian commands.
+
+
 =over 4
 
 =item 1 
 
-Download the C<debian-live-6.0.1-i386-rescue.iso> image from
-L<http://cdimage.debian.org/cdimage/release/current-live/i386/iso-hybrid/>.
+Download a Tutorial Virtual Machine image from
+L<http://cattut.shadowcat.co.uk/>
+
+B<A big thanks to Shadowcat Systems for hosting the virtual machines>
+B<(and everything else they do for the Perl community)!>
 
 =item 2
 
@@ -217,47 +242,51 @@ Type "C<ifconfig>" to get the IP address assigned to the virtual
 machine.  You should get output along the lines of:
 
     eth0  Link encap:Ethernet  HWaddr 00:01:22:3b:45:69
-          inet addr:192.168.245.128  Bcast:192.168.245.255  Mask:255.255.255.0
+          inet addr:192.168.0.12  Bcast:192.168.0.255  Mask:255.255.255.0
     ...
 
 You want the IP address on the second line below the C<eth0> interface.
 The image it design to automatically use a DHCP-assigned address.
 
-If DHCP is not working or is not available in your location, most
-virtual machine "host" environments let's you select between one of
-several different types of networking between the "guest" and the "host"
-machine.
 
-    1) Bridged
-    2) NAT
-    3) Local host only
+Try to ping this IP address from your "host machine" (main desktop):
 
-The Tutorial Virtual Machine defaults to "Bridged" -- this should result
-in the VM acting like another device on your network that will get a
-different DHCP IP address than the host machine.  The advantage of this
-approach, is that you can easily SSH and web browse to the guest virtual
-machine.
 
-In some environments, you might have better luck with "NAT" (Network
-Address Translation) mode.  With this configuration, the guest VM shares
-the same IP address as the host machine.  The downside of the approach
-is that special configuration is required if you want to be able to SSH
-or web browse to the guest VM (some virtual machine host environments
-let you configure a "static NAT" or "port forwarding" to reach the guest
-OS).
+    MainComputer:~$ ping 192.168.0.12
+    PING 192.168.0.12 (192.168.0.12) 56(84) bytes of data.
+    64 bytes from 192.168.0.12: icmp_req=1 ttl=255 time=4.97 ms
+    64 bytes from 192.168.0.12: icmp_req=2 ttl=255 time=3.43 ms
+    ...
 
-"Local host only" mode let's the guest VM and the host machine talk on a
-"private subnet" that other devices in your network cannot reach.
 
-Consult the documentation on your virtual machine host environment for
-help configuring the options above.
+B<Note:> The ping above is being originated B<from> your B<host machine>
+(main desktop) and going B<to> your guest B<virtual machine>, not the
+other way around.
+
+If you are not seeing a valid IP address or it's not responding to pings
+(for example, you get error messages along the lines of "Request timed
+out", "100% packet loss", or "Destination Host Unreachable"), there
+could be a few network-related issues you might need to sort out.  See
+the section below L</Sorting Out Virtual Machine Network-Related Issues>
+for additional information and troubleshooting advice.
+
+B<Note:> Remember this IP address... you will be using it throughout the
+tutorial.
+
 
 =item 6
 
-B<From your main desktop machine>, open an SSH client and connect to
-the IP address found in the previous step.  You should get a login
-prompt (accept the SSH key).  Login with the same username and password:
-B<root> / B<catalyst>
+B<From your main desktop machine>, open an SSH client and connect to the
+IP address found in the previous step.  You should get a login prompt
+(accept the SSH key if you get a warning message about that).  Login
+with the same username and password as we used in Step 4: B<root> /
+B<catalyst>
+
+    catalyst login: root
+    Password: catalyst
+    ...
+    root@catalyst:~#
+
 
 =item 7
 
@@ -265,18 +294,18 @@ B<Using the SSH session>, change to the sample code directory for
 Chapter 3 included with the Tutorial Virtual Machine and start the
 Catalyst Development Server:
 
-    $ cd Final/Chapter03
-    $ perl scripts/myapp_server -r
+    $ cd Final/Chapter03/MyApp
+    $ perl scripts/myapp_server
 
 =item 8
 
-B<From your main desktop machine>, open a web browser and go to
-B<http://A.B.C.D:3000/>, where C<A.B.C.D> is the IP address to your
-virtual machine that you looked up in Step 5.  For example, if your
-virtual machine is using the IP address C<192.168.0.21>, you would put
-the following URL into your web browser:
+B<From your main desktop machine> (the "host machine"), open a web
+browser and go to B<http://A.B.C.D:3000/>, where C<A.B.C.D> is the IP
+address to your virtual machine that you looked up in Step 5.  For
+example, if your virtual machine is using the IP address
+C<192.168.0.12>, you would put the following URL into your web browser:
 
-    http://192.168.0.21:3000/
+    http://192.168.0.12:3000/
 
 Make sure you don't forget the B<:3000> to use port 3000 instead of the
 usual port 80 that is used by HTTP by default.
@@ -299,6 +328,93 @@ install Emacs:
 =back
 
 
+You may note that the Tutorial Virtual Machine uses L<local::lib> so
+that the Perl modules are run from ~/perl5 (in this case, /root/perl5)
+vs. the usual location of your "system Perl".  We recommend that you
+also consider using this very handy module.  It can greatly ease the
+process of maintaining and testing different combinations or Perl
+modules across development, staging, and production servers.  (The
+"relocatable Perl" feature can also be used to to run both the modules
+B<and> Perl itself from your home directory [or any other directory you
+chose]).
+
+B<Note>: Please provide feedback on how the Virtual Machine approach for
+the tutorial works for you.  If you have suggestions or comments, you
+can reach the author through the email address at the bottom of this
+page or via an RT ticket at
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=Catalyst-Manual>.
+
+
+
+=head2 Sorting Out Virtual Machine Network-Related Issues
+
+In general, using a virtual machine to work through the tutorial is
+*much* easier than trying to do it in other environments, especially if
+you are new to Catalyst (or Perl or CPAN or ...).  However, it's
+possible that you could run into a few network-related issues.  The good
+news is that there is lots of information about the issue available via
+search engines on the Internet.  Here is some background information to
+get you started.
+
+In Step 5 of the prior section above, we assumed that a "Bridged Mode"
+configuration and DHCP will work (it should for most people).  If DHCP
+is not working or is not available in your location, most virtual
+machine "host" environments let you select between one of several
+different types of networking between the "guest" and the "host"
+machine.
+
+    1) Bridged
+    2) NAT
+    3) Local host only
+
+The Tutorial Virtual Machine defaults to "Bridged" -- this should result
+in the VM acting like another device on your network that will get a
+different DHCP IP address than the host machine.  The advantage of this
+approach, is that you can easily SSH and web browse to the guest virtual
+machine.  In general, this is the best option if you want to be able to
+boot up the VM and then use your SSH client and web browser from your
+main machine to connect into the virtual machine.
+
+In some environments, you might have better luck with "NAT" (Network
+Address Translation) mode.  With this configuration, the guest VM shares
+the same IP address as the host machine.  The downside of this approach
+is that special configuration is required if you want to be able to SSH
+or web browse to the guest VM.  The NAT option should automatically
+allow the VM "outbound connection" (e.g., to the Internet if you want to
+install additional Debian packages), but it requires special
+configuration if you want to get "inbound connections" that go from some
+other machine (including the "host machine") into the VM.  Some virtual
+machine host environments let you configure a "static NAT" or "port
+forwarding" to reach the guest OS, but others omit this functionality.
+
+"Local host only" mode let's the guest VM and the host machine talk on a
+"private subnet" that other devices in your network cannot reach.  This
+can work as long as you don't need to go from the VM to the Internet
+(for example, to install other Debian packages).
+
+Consult the documentation on your virtual machine host environment for
+help configuring the options above.  Here are some links that might
+help:
+
+=over 4
+
+=item *
+
+L<http://vmfaq.com/entry/34/>
+
+=item *
+
+L<http://www.vmware.com/support/pubs/player_pubs.html>
+
+=item *
+
+L<http://www.virtualbox.org/manual/ch06.html>
+
+=back
+
+
+
+
 =head1 VERSIONS AND CONVENTIONS USED IN THIS TUTORIAL
 
 This tutorial was built using the following resources. Please note that
@@ -364,18 +480,19 @@ but if you are running your web browser from outside the Tutorial
 Virtual Machine, you will want to substitute the IP address of your VM
 for the C<localhost> in the URLs (again, you can get the IP address for
 eth0 from the C<ifconfig> command).  For example, if your VM has an
-IP address of 192.168.245.128, you will want to use a base URL of
-C<http://192.168.245.128:3000>.  Note that the development server
+IP address of 192.168.0.12, you will want to use a base URL of
+C<http://192.168.0.12:3000>.  Note that the development server
 defaults to port 3000 (you can change with with the "-p" option on the
 command line.
 
-B<Please Note:> Depending on the web browser you are using, you might need
-to hit C<Shift+Reload> or C<Ctrl+Reload> to pull a fresh page when
+B<Please Note:> Depending on the web browser you are using, you might
+need to hit C<Shift+Reload> or C<Ctrl+Reload> to pull a fresh page when
 testing your application at various points (see
-L<http://en.wikipedia.org/wiki/Bypass_your_cache> for a comprehensive
-list of options for each browser).  Also, the C<-k> keepalive option to
-the development server can be necessary with some browsers (especially
-Internet Explorer).
+L<http://en.wikipedia.org/wiki/Wikipedia:Bypass_your_cache> for a
+comprehensive list of options for each browser).
+
+Also, the C<-k> B<keepalive option> to the development server can be
+necessary with some browsers (B<especially Internet Explorer>).
 
 =back
 
@@ -401,10 +518,10 @@ L<Catalyst Basics|Catalyst::Manual::Tutorial::02_CatalystBasics>
 
 Kennedy Clark, C<hkclark@gmail.com>
 
-Please report any errors, issues or suggestions to the author.  The
-most recent version of the Catalyst Tutorial can be found at
-L<http://dev.catalyst.perl.org/repos/Catalyst/Catalyst-Manual/5.80/trunk/lib/Catalyst/Manual/Tutorial/>.
+Feel free to contact the author for any errors or suggestions, but the
+best way to report issues is via the CPAN RT Bug system at
+L<https://rt.cpan.org/Public/Dist/Display.html?Name=Catalyst-Manual>.
 
-Copyright 2006-2010, Kennedy Clark, under the
+Copyright 2006-2011, Kennedy Clark, under the
 Creative Commons Attribution Share-Alike License Version 3.0
 (L<http://creativecommons.org/licenses/by-sa/3.0/us/>).