
<!doctype linuxdoc system>

<article>

<!-- Title Information -->

<title>Comanche User Guide
<author>Daniel Lopez Ridruejo, <tt/ridruejo@apache.org/
<date>v0.2, 1 December 1999

<!-- Abstract -->
<abstract>
This document explains how to get started with Comanche and gives an
overview of its capabilities.
</abstract>

<!-- Table of Contents -->
<toc>


<sect>User Guide for Comanche
<p>
This document introduces Comanche from an end user perspective, with an
emphasis on how to quickly become productive with Comanche. As a guiding
example, this introduction deals with the Apache module for Comanche.
There is one section on Samba. Samba support is more experimental than Apache.
<p>
This release of Comanche is completely functional. As in any other complex
piece of software, there is always room for improvements and a decision
needs to be made as to when to make a release. The author believes this
release is a good blend of functionality and ease of use.
<p>
<sect1>Downloading and installing Comanche
<p>
You can download Comanche at <htmlurl
url="http://www.covalent.net/projects/comanche/downloads">. Comanche runs on
most Unices and Windows 95/98/NT. There are binaries available for the
following platforms: Linux intel, Irix MIPS, Solaris Sparc, HP parisc and
Windows. It is recommended that you download first the binary since it is
ready to run. If you wish you may compile the source later (basically you
have to compile Tcl/Tk and the incr Tcl extension). More on this in the
appendix.

<sect2>Apache on Windows
<p> 
<itemize>
<item>Install Apache 1.3.x for Windows from 
<htmlurl url="http://www.apache.org/">. You can
download it from <htmlurl url="http://www.apache.org/dist/">
<item>Install Comanche: Uncompress the downloaded file using <url
url="http://www.winzip.com" name="Winzip"> or a similar tool
</itemize>

<sect2>Apache on Unix
<p> Download the appropriate binary file for your platform. Type: gunzip
comanche-XX.tgz ; tar xvf comanche-XX.tar<br>

<sect1>Back up the configuration files
<p>
   Before the user becomes familiar with Comanche, it is a good idea for him
to back up the configuration files. In Unix they are usually located under
the conf subdirectory of the place where the user installed Apache. If he
installed Apache from the source release and he did not changed the
destination directory, it defaults to /usr/local/apache. If Apache came
preinstalled, different distributions tend to place configuration files in
different places. In Red Hat look under /etc/httpd. In other distributions
the user may need to look into /usr/local/etc/httpd/.
<p>
   In the conf subdirectory the user will find at least three files:
httpd.conf, srm.conf, and access.conf. Later versions of Apache only need to
deal with one configuration file, httpd.conf
<p>
   The user should make  a copy of those files and put them in a safe place.

<sect1>Starting Comanche
<p>
<sect2>Windows
<p>In the Windows platform, the user needs to open the folder that contains
the Comanche executable (Comanche.exe) and double-click on the icon. This
will start up Comanche. There is no need for further configuration, since
Apache stores it settings in the Windows Registry. Comanche reads these
settings and provides the user the possibility to configure all installed
versions of Apache. In case there is no version of Apache installed,
Comanche will prompt you with a dialog to manually specify where Apache
files are located. This is useful if you just want to write configuration
files without the need to have Apache installed or you have a custom version
of Apache that is not in the registry (take a look to the following Starting
Comanche on Unix section for more details in this dialog)

<sect2>Unix
<p> The first time you install Comanche in Unix, you have to tell it where
to find the Apache binaries and configuration files. It will display a
dialog where you can specify:
<itemize>
<item>One-line server comment: Short description to help you identify the
server (e.g "Production server" or "Apache SSL test machine").
<item>Apache executable: usually named httpd. It is the Apache binary program.
<item>Config file: the file containing the configuration directives, usually
named httpd.conf or apache.conf. Older versions of Apache used 3
configuration files (httpd.conf, srm.conf and access.conf, although any
content can appear in any of the files). It is suggested that you combine
the contents of the three files in one httpd.conf if you plan to use it
with Comanche.
<item>Commands: Here you can specify commands for
starting, stopping or restarting the server
</itemize>
If you have installed Apache yourself from the source in the default
directory /usr/local/apache then the information to fill is:
<itemize>
<item>Executable: /usr/local/apache/bin/httpd
<item>Config file: /usr/local/apache/conf/htppd.conf or
/usr/local/apache/conf/apache.conf
<item>Commands (name; command; icon):
<itemize>
<item>start; /usr/local/apache/bin/apachectl start; start 
<item>stop; /usr/local/apache/bin/apachectl stop; stop
<item>restart; /usr/local/apache/bin/apachectl restart; refresh
<item> Other ones that you may want to consider if you have the lynx browser
installed:
<item>status; /usr/local/apache/bin/apachectl status ;wheelSmall
<item>fullstatus; /usr/local/apache/bin/apachectl fullstatus ;wheelSmall
</itemize>
</itemize>

If you are running Red Hat Linux:
<itemize>
<item>Executable: /usr/sbin/httpd
<item>Config file: /etc/httpd/conf/htppd.conf
<item>Commands (name; command; icon):
<itemize>
<item>start; /etc/rc.d/init.d/httpd start ; start 
<item>stop; /etc/rc.d/init.d/httpd stop ; stop
<item>restart; /etc/rc.d/init.d/httpd restart ; refresh
<item>status; /etc/rc.d/init.d/httpd status ;wheelSmall
</itemize>
</itemize>
People with other distributions of Linux please contact me with the default
location of files, so I can include them here. You can have a look and
manually alter this configuration at plugins/apache/apache.conf

<sect1>The interface
<p>
   Once Comanche has been started, it displays a Windows Explorer like
interface. It is divided in several parts. On the top, there is a Menubar.
These menus can be used to exit Comanche, access online help or display an
About box.
<p>
   There is a tree structure in the left, which allows the user to connect
to each of the managed machines, represented by icons, by double clicking on
them. This expands them into various nodes representing services that can be
managed. The user can navigate clicking the nodes or using the navigation
buttons in the upper task bar.
<p><img src="images/ug-console-general.gif">
<p>
   When a user selects a node by clicking on it, the right panel will be
loaded with a HTML page that will display information about the currently
selected node. The user can request further inforamtion or execute actions
by clicking in the appropriate links.
<p>
   By right-clicking on a node, Comanche will pop up a menu. This menu is
context sensitive and will vary depending on the node. In this version of
Comanche it enables the user to request the property pages for a certain
node or create new nodes
<p><img src="images/ug-console-menu.gif">

<sect1>Apache module for Comanche.
<p>
  The current Apache module for Comanche supports the most commonly used
options of Apache. All others options are preserved and can be edited via
the command line interface if the needs arises. Support for new directives
can be easily added through XML configuration files as described in other
sections of this document.
<p>
  To access the Apache plugin, click on the computer icon it will display
the currently installed modules. One of them must be the Apache module.
Expand that node and you will see at least the following nodes:
<p>
<bf>Server Management</bf>. Here you can Start/Stop/Restart the Apache
server process. If you have certain parameters configured you can also have
access to the current statistics served (via the status module). 
<p>
<bf>Default Server</bf>. With Apache you can host several websites
just using a single Apache server. This is a popular technique named virtual
hosting. Comanche lets you configure different virtual hosts. These virtual
hosts inherit certain settings from a main server (Default server).
Characteristics defined here will be inherited by all virtual hosts. Certain
Apache properties can only be configured in the Default Server node.
<p>
   Setting an Apache server is simple using Comanche. If the user just wants
a web server to server static files, there is only a few pieces of
information that Apache needs to know in order to do its job.
<p>
   Right clicking on the node named "Default Server" and selecting
configure brings up a set of Property Pages.
<p>First thing to fill in the property page is the server name (look figure).
   Usually Apache is able to know the name of the machine it is installed
via a reverse lookup of its IP address (given that my IP number is X, what
is my name?). This entry should be filled with the Fully Qualified Domain
Name for the machine, which is probably something similar to
www.somedomain.com. This name has to have a DNS record set up 
to work if it is to be accessed from the internet (that is, you cannot just
come up with a name and hope it works). If you do not know what a DNS record
is contact your system admin, have a look at the file /etc/hosts on Unix
Systems or just set server name to the IP address of the machine. Another
important piece of information is the web master email address, which will
get transmitted to the visitors if they encounter a problem while browsing
the web site. 
<p>
   To complete the basic set up it is necessary to tell Apache the document
root, which is the directory containing the web pages to be served. That is,
if you choose your document root to be /usr/local/apache/htdocs and the user
requests http://www.somedomain.com/bla.html, Apache will get him the file
/usr/local/apache/htdocs/bla.html by default.<p>
   Once you have changed these parameters, you can go back to the <bf>Server
Management</bf> node and restart the server so the changes take place.
<p><img src="images/ug-console-main-server-servername.gif">
<p>
   Other settings that can be configured are:
<p>
   <bf>Listening settings</bf>: Web servers can listen to a specific port. The
default port that Apache listens to is 80. To access ports lower than
1024 requires administrator privileges. Changing this parameter to a
different number allows a normal user to run his own web server at a higher
port. As an experiment, change the Port parameter to 8080 and restart the
server. Try connecting to your webserver like http://www.somedomain.com. It
will give you an error. Now try connecting to http://www.somedomain.com:8080 .
It should work (just remember to restart the server everytime you apply
changes.
<p>
   Also, the user may choose to only listen to a certain IP address or to
all the available IP addresses.
<p><img src="images/ug-main-server-listen.gif">
<p>
   <bf>Logging</bf>: When Apache finds an error, it can report it to a file
(the error log) or it can notify system logging system (syslog in
Unix machines). The error logging files are the first place that should be
checked when there is a problem with a web server configuration,
permissions, etc.
<p><img src="images/ug-main-server-logs.gif">
<p>
   <bf>Directory aliases</bf>: It is possible to map certain URLs to
directories in the filesystem. It is possible to map /images to
/ftp/pub/images, and thus when the user requests the file
http://www.someserver.com/images/button.gif the server will deliver the file
/ftp/pub/images/button.gif 
<p><img src="images/ug-main-server-alias.gif">
<p>
   <bf>CGI</bf>: CGI does the same, but it instructs the web server that the
destination directory contains cgi programs. Cgi programs are not served as
is, but executed and they provide content to the user.
<p><img src="images/ug-main-server-cgi.gif">
<p>
   <bf>Redirection</bf>: Allows an user to redirect requests for certain
urls to a different location.
<p><img src="images/ug-main-server-redirect.gif">
<p>Redirection, Directory and CGI aliases allow for regular expression
modes. Regular expressions allow for matching of URLs against certain
predefined patterns. 
<p>
   Comanche makes it possible to easily create virtual hosts. As explained
before, virtual hosts allows a single Apache installation to serve requests for
different internet domains. To create a new virtual host, the user can
select with the right mouse button the Apache icon, and select the "Add new
node" entry. This will pop up a window where the user can enter the IP
address of the web server. The newly created node can then be administered
with similar options to those of the Default Web Server.
<p>
Note: It is possible to enter the domain name in the previous dialog, but it
is usually desirable to use the IP address. If a domain name is used instead,
Apache must use DNS to find the address of www.somedomain.com. If for some
reason DNS is not available at the time your server is parsing its config
file, then this virtual host will not be configured. It won't be able to
respond to any hits to this virtual host 
<p><img src="images/ug-create-vhost.gif">
<p>
It is possible to create directory, location and files nodes under the
default web server and virtual hosts. Directory and location nodes allow to
place restrictions or configure properties based on the URL or file
requested by the client. Files sections do the same for certain files or
files patterns.
<p>
   To add a new directory or location, right click in the default web server
or one of the virtual hosts node and select aqdd new node. Type in either
the path to the directory or the URL of the location (For example, if we
want to create a location that will be accesed when the user types
http://www.somedomain.com/mylocation, the name of the location will be
/mylocation).
<p><img src="images/ug-create-directory.gif">
<p>
   The features currently implemented for location and directories have to
do basically with IP based access control and user authentication. 
<p>
<bf>IP based access control</bf>.You can control who have access to these
directories based on their IP address or domain name. You can choose in
which order the directives will be evaluated and construct statements that
allow denying or granting access based on certain IP, domain name or the
existence of a certain environment variable (i.e specific version of a
browser) 
<p><img src="images/ug-directory-ipaccess.gif">
<p>
<bf>User authentication</bf>. With IP based access restrictions we can place
restrictions on who can get our web pages based on <bf>where</bf> they come
from. With user authentication, we can place restrictions based on
<bf>who</bf> they are. For that we require a user name and a password (the
password dialog box that appears on browsers when accessing restricted areas
of a website).<p>
The parameters that can be configured are:
<itemize>
<item><bf>Authentication realm</bf>: In the password pop up dialog box, it
will indicate which resources the server is asking the password for (Member
services, Administration, etc...)
<item><bf>Authentication type</bf>: It can be basic (clear text) or based on
a digest algorithm (supported by most modern browsers).
<item><bf>Access based on user/group</bf>: Any valid user can have access,
only certain users or only the users that belong to certain groups
<item><bf>User/group files</bf>: Apache does not use Unix user/groups files,
but instead maintains a database of its own. These configuration properties
allows to specify the location of the files describing the users and groups.
</itemize>
<p><img src="images/ug-directory-auth-files.gif">
<p><img src="images/ug-directory-user-group.gif">
<p><img src="images/ug-directory-auth-realm.gif">


<sect1>Samba support
<p>
Samba support in Comanche is still experimental. In fact, the whole Samba
module was developed in one day. It offers similar options to SWAT (the
excellent web based admin tool that comes with Samba). The file that
the Samba module for Apache configures is (Comanche directory )/conf/samba/smb.conf
 Replace that one with your own smb.conf file to configure your Samba
installation. Expect support for Samba to improve in the near future.

</article>
