LDP/LDP/howto/linuxdoc/WWW-HOWTO.sgml

1880 lines
94 KiB
Plaintext

<!doctype linuxdoc system>
<article>
<title>Linux WWW HOWTO
<author>by Mr. Poet, <tt>
<htmlurl url="mailto:poet@linuxports.com" name="poet@linuxports.com"></tt>
<date>v0.85, 21 August 1999
<abstract>
This document contains information about setting up WWW services under Linux
(both server and client). It tries not to be a in
detail manual but an overview and a good pointer to further information.
</abstract>
<toc>
<!-- Introduction SECTION ================================================== -->
<sect>Introduction
<p>
Many people are trying Linux because they are looking for a
really good <em>Internet capable</em> operating system.
Also, there are institutes, universities, non-profits, and small
businesses which want to set up Internet sites on a
small budget. This is where the WWW-HOWTO comes in. This document
explains how to set up clients and servers for the largest
part of the Internet - <em>The World Wide Web</em>.
All prices in this document are stated in US dollars. This document
assumes you are running Linux on an Intel platform. Instructions and
product availability my vary from platform to platform. There are many
links for downloading software in this document. Whenever possible use a
mirror site for faster downloading and to keep the load down on the main
server.
<sect1>Copyright
<p>
This document is Copyright (c) 1999 by Mr. Poet
This document is Copyright (c) 1997 by Wayne Leister. The original author of
this document was Peter Dreuw.(All versions prior to 0.8)
This HOWTO is free documentation; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
This document is distributed in the hope that it will be useful, but without
any warranty; without even the implied warranty of merchantability or
fitness for a particular purpose. See the GNU General Public License for
more details.
You can obtain a copy of the GNU General Public License by writing to the
Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Trademarks are owned by there respective owners.
<!-- Insert new Copyright -->
<sect1>Feedback
<p>
Any feedback is welcome. I do not claim to be an expert.
Some of this information was taken from badly
written web sites; there are bound to be errors and omissions.
But make sure you have the latest version before
you send corrections; It may be fixed in the next version (see the next
section for where to get the latest version).
Send feedback to
<htmlurl url="mailto:poet@linuxports.com" name="poet@linuxports.com">.
<sect1>New versions of this Document
<p>
New versions of this document are always available at the LinuxPorts
<htmlurl url="http://www.linuxports.com/howto/www" name="Website">.
<!-- WWW = CLIENT SECTION =========================================== -->
<sect>Setting up WWW client software (Antiquated)
<p>
<quote>Please note that the following section is very outdated and was last updated
in 1997. This section is being kept here for historical purposes only. All
major distributions of Linux come with Netscape and Lynx. These are the two
most popular browsers for the Linux Operating System. If you do not have
these browsers installed currently please go to their respective sections
for download information.</quote>
The following chapter is dedicated to the setting up web browsers.
Please feel free to contact me, if your favorite web browser is not
mentioned here. In this version of the document only a few of the browsers
have there own section, but I tried to include all of them (all I could
find) in the overview section. In the future those browsers that deserve
there own section will have it.
The overview section is designed to help you decide which browser to use,
and give you basic information on each browser. The detail section is
designed to help you install, configure, and maintain the browser.
However I use Lynx when I don't feel like firing up the
X-windows/Netscape monster.
<sect1>Overview
<p>
<descrip>
<tag><ref id="netscape" name="Navigator/Communicator"></tag> Netscape Navigator
is the only Linux browser mentioned here, which is capable of
advanced HTML features. Some of these features are frames, Java, Javascript,
automatic update, and layers. It also has news and mail capability. But it is a resource hog;
it takes up lots of CPU time and memory. It also sets up a separate cache
for each user wasting disk space.
Netscape is currently an OpenSource product and can be downloaded from
<htmlurl url="ftp://ftp.netscape.com" name="ftp.netscape.com=>.
<tag><ref id="lynx" name="Lynx"></tag> Lynx is the one of the smallest web
browsers. It is the king of text based
browsers. It's free and the source code is available under the GNU public
license. It's text based, but it has many special features. Lynx now
supports tables, color (via curses) and frames.
<quote>Note on frame support for lynx:
The frame support for lynx is limited, it will notice the frames and show
the title of the frames for your to select as hot links. Since, frame titles
are usually very undescriptive for coding simplicity this can be confusing.
</quote>
<tag/Kfm/ Kfm is part of the K Desktop Environment (KDE). KDE is a system
that runs on top of X-windows. It gives you many features like drag an
drop, sounds, a trashcan and a unified look and feel. Kfm is the K File Manager, but
it is also a web browser. It is very usable as a web browser and it supports frames, tables, ftp
downloads, looking into tar files, and more. The current release of KDE is
1.1.1 with 1.1.2 very near by. Kfm can be used without KDE, but you still need the librarys that
come with KDE. For more information about KDE and Kfm visit the KDE website
at <url url="http://www.kde.org">.
<tag><ref id="emacs" name="Emacs"></tag> Emacs is the one program that does everything. It is a word processor,
news reader, mail reader, and web browser. It has a steep learning curve at
first, because you have to learn what all the keys do. The X-windows version
is easier to use, because most of the functions are on menus.
Another drawback is that it's mostly text based. (It can display graphics if
you are running it under X-windows). It is also free, and the source code
is available under the GNU public license.
<tag/NCSA Mosaic/ Mosaic is an X-windows browser developed by the National
Center for Supercomputing Applications (NCSA) at the University of Illinois.
NCSA spent four years on the project and has now moved on to other things.
Again, Mosaic is no longer supported. However since the source is free for
non-commercial use it might make an interesting project for someone who
wants to develop a new browser.
<tag/Amaya/ Amaya is the X-windows concept browser for the W3C for HTML 3.2.
Therefore it supports all the HTML 3.2 standards. It also supports some of
the features of HTML 4.0. It supports tables, forms, client side image
maps, put publishing, gifs, jpegs, and png graphics. It is both a browser and
authoring tool. The latest public release is 1.0 beta. Version 1.1 beta
is in internal testing and is due out soon. For more information visit the
Amaya web site at <url url="http://www.w3.org/Amaya/">.
It can be downloaded from
<url url="ftp://ftp.w3.org/pub/Amaya-LINUX-ELF-1.0b.tar.gz">.
<tag/Qweb/ Qweb is yet another basic X-windows browser. It supports
tables, forms, and server site image maps. The latest version is 1.3. For
more information visit the Qweb website at
<url url="http://sunsite.auc.dk/qweb/">
The source is available from
<url url="http://sunsite.auc.dk/qweb/qweb-1.3.tar.gz">
The binaries are available in a Red Hat RPM from
<url url="http://sunsite.auc.dk/qweb/qweb-1.3-1.i386.rpm">
</descrip>
It is the reccomendation of this author that users of web browsers use
either Netscape 4.x, Lynx or Netscape 5.xAlpha. They are the only one
currently available for Linux that support most features. Personally I
suggest Netscape5.xAlpha, even though it is Alpha Software it is quite
stable and frankly implements the standards better than the 4.x versions do.
<!-- Lynx =================================== -->
<sect>Lynx<label id="lynx">
<p>
Lynx is one of the smaller (around 600 K executable) and faster
web browsers available. It does not eat up much bandwidth nor system
resources as it only deals with text displays. It can display on any
console, terminal or xterm. You will not need an <em>X Windows system</em>
or additional system memory to run this little browser.
<sect1>Where to get
<p>
Most distributions have Lynx in them. Therefore I
will not bore you with the details of compiling and installing Lynx.
The latest version is 2.8.2 and can be retrieved from <url
url="http://www.slcc.edu/lynx/fote/"> or from almost any friendly Linux
FTP server like
<htmlurl url="ftp://sunsite.unc.edu/pub/Linux/apps/www/browsers/"
name="ftp://sunsite.unc.edu under /pub/Linux/apps/www/broswers/">
or mirror site.
For more information on Lynx try these locations:
<descrip>
<tag/Lynx Links/ <url url="http://www.crl.com/~subir/lynx.html">
<tag/Lynx Pages/ <url url="http://lynx.browser.org">
<tag/Lynx Help Pages/
<url url="http://www.crl.com/~subir/lynx/lynx&lowbar;help/lynx&lowbar;help&lowbar;main.html">
(the same pages you get from lynx --help and typing ? in lynx)
</descrip>
Note: The Lynx help pages have recently moved. If you have an older version
of Lynx, you will need to change your lynx.cfg (in /usr/lib) to point to the
new address(above).
I think the most special feature of Lynx against all other
web browsers is the capability for batch mode retrieval. One can write
a shell script which retrieves a document, file or anything like that
via <em/http/, <em/FTP/, <em/gopher/, <em/WAIS/, <em/NNTP/ or
<em>file://</em> - url's and save it to disk.
Furthermore, one can fill in data into HTML forms in batch mode by simply
redirecting the standard input and using the <em/-post_data/ option.
For more special features of Lynx just look at the help files and the man
pages. If you use a special feature of Lynx that you would like to see
added to this document, let me know.
<!-- Emacs W3 ================================= -->
<sect>Emacs-W3<label id="emacs">
<p>
There are several different flavors of Emacs. The two most popular are
GNU Emacs and XEmacs. GNU Emacs is put out by the Free Software
Foundation, and is the original Emacs. It is mainly geared toward text based
terminals, but it does run in X-Windows. XEmacs (formerly Lucid Emacs)
is a version that only runs on X-Windows. It has many special features that
are X-Windows related (better menus etc).
<sect1>Where to get
<p>
Most distributions include GNU Emacs.
The most recent GNU emacs is 19.34. It doesn't seem to
have a web site. The FTP site is
at <url url="ftp://ftp.gnu.ai.mit.edu/pub/gnu/">.
The latest version of XEmacs is 20.2. The XEmacs FTP site is at
<url url="ftp://ftp.xemacs.org/pub/xemacs">.
For more information about XEmacs goto see its web page at
<url url="http://www.xemacs.org">.
Both are available from the Linux archives at
<htmlurl url="ftp://sunsite.unc.edu/pub/Linux/apps/editors/emacs/"
name="ftp://sunsite.unc.edu under /pub/Linux/apps/editors/emacs/">
If you got GNU Emacs or XEmacs installed, you probably got the W3 browser
running to.
The Emacs W3 mode is a nearly fully featured web browser system
written in the Emacs Lisp system. It mostly deals with text, but can
display graphics, too - at least - if you run the emacs under the X Window
system.
To get XEmacs in to W3 mode, goto the apps menu and select browse the web.
I don't use Emacs, so if someone will explain how to get it into the W3 mode
I'll add it to this document. Most of this information was from the
original author. If any information is incorrect, please let me know. Also
let me know if you think anything else should be added about Emacs.
<!-- Netscape Navigator/Communicator ======================= -->
<sect>Netscape Navigator/Communicator<label id="netscape">
<p>
<sect1>Different versions and options.
<p>
Netscape Navigator is the King of WWW browsers. Netscape Navigator can do
almost everything. But on the other hand, it is one of the most memory hungry
and resource eating program I've ever seen.
There are 3 different versions of the program:
Netscape Navigator includes the web browser, netcaster (push client)
and a basic mail program.
Netscape Communicator includes the web browser, a web editor, an advanced
mail program, a news reader, netcaster (push client), and a
group conference utility.
Netscape Communicator Pro includes everything Communicator has plus a group
calendar, IBM terminal emulation, and remote administration features (administrators
can update thousands of copies of Netscape from their desk).
In addition to the three versions there are two other options you must pick.
The first is full install or base install. The full install includes
everything. The base install includes enough to get you started. You can
download the additional components as you need them (such as multimedia
support and netcaster). These components can be installed by the Netscape
smart update utility (after installing goto help->software updates). At
this time the full install is not available for Linux.
The second option is import or export. If you are from the US are Canada
you have the option of selecting the import version. This gives you the
stronger 128 bit encryption for secure transactions (SSL). The export version
only has 40 bit encryption, and is the only version allowed outside the US
and Canada.
The latest version of the Netscape Navigator/Communicator/Communicator Pro
is 4.6.1. There are two different versions for Linux. One is for the old
1.2 series kernels and one for the new 2.x kernels. If you don't have at
least a 2.0 kernel I suggest you upgrade; there are many improvements in the new kernel.
Beta versions are also available. If you try a beta version, they
usually expire in a month or so!
You can also try the 5.0 alpha at the Mozilla project located at <htmlurl
url="www.mozilla.org" name="www.mozilla.org">. I suggest this highly, the
new Netscape 5 is the best browser I have seen in a long time. It is
extremely flexible and mostly stable even for an Alpha release.
<sect1>Where to get
<p>
The best way to get Netscape software is to go through their web site at
<url url="http://www.netscape.com/download/">. They have menu's to guide
you through the selection. When it ask for the Linux version, it is
referring to the kernel (most people should be using 2.0 by now). If your
not sure which version kernel you have run 'cat /proc/version'.
Going through the web site is the only way to get the import versions.
If you want an export version you can download them
directly from the Netscape FTP servers. The FTP servers are also more up to
date. For example when I first wrote this the web interface did not have the
non-beta 4.03 for Linux yet, but it was on the FTP site. Here are the links
to the export Linux 2.0 and 2.2 versions:
Netscape Navigator 4.6.1 is at
<url url="ftp://ftp.netscape.com/pub/communicator/4.6/shipping/english/unix/linux20/navigator&lowbar;standalone/navigator-v403-export.x86-unknown-linux2.0.tar.gz">
Netscape Communicator 4.6.1 for Linux 2.0 (kernel) is at
<url url="ftp://ftp.netscape.com/pub/communicator/4.6/shipping/english/unix/linux20/base&lowbar;install/communicator-v403-export.x86-unknown-linux2.0.tar.gz">
These url's will change as new versions come out. If these links break you
can find them by fishing around at the FTP site
<url url="ftp://ftp.netscape.com/pub/communicator/">.
These servers are heavily loaded at times. Its best to wait for off peak
hours or select a mirror site. Be prepared to wait, these
archives are large. Navigator is almost 8megs, and Communicator base
install is 10megs.
<sect1>Installing
<p>
This section explains how to install version 4 of Netscape Navigator,
Communicator, and Communicator Pro.
First unpack the archive to a temporary directory.
Then run the <tt/ns-install/ script (type <tt>./ns-install</tt>). Then make a symbolic link
from the <tt>/usr/local/netscape/netscape</tt> binary to
<tt>/usr/local/bin/netscape</tt>
(type <tt>ln -s /usr/local/netscape/netscape /usr/local/bin/netscape</tt>).
Finally set the system wide environment variable <tt>&dollar;MOZILLA_HOME</tt> to
<tt>/usr/local/netscape</tt> so Netscape can find its files. If you are using bash
for your shell edit your <tt>/etc/profile</tt> and add the lines:
<tscreen><verb>
MOZILLA_HOME="/usr/local/netscape"
export MOZILLA_HOME
</verb></tscreen>
After you have it installed the software can automatically update itself
with smart update.
Just run Netscape as root and goto help->software updates. If you only got
the base install, you can also install the Netscape components from there.
Note: This will not remove any old versions of Netscape, you must manually
remove them by deleting the Netscape binary and Java class file
(for version 3).
<!-- WWW - SERVER SECTION ======================================== -->
<sect>Setting up WWW server systems
<p>
This section contains information on different http server software
packages and additional server side tools like script languages for
CGI programs etc. There are several dozen web servers, I only covered those
that are fully functional. As some of these are commercial products,
I have no way of trying
them. Most of the information in the overview section was pieced together
from various web sites.
If there is any incorrect or missing information please let me know.
For a technical description on the http mechanism, take a look at
the RFC documents mentioned in the chapter "For further reading" of
this HOWTO.
I prefer to use the Apache server. It has almost all the features you would
ever need and its free! I will admit that this section is heavily biased
toward Apache. I decided to concentrate my efforts on the Apache section
rather than spread it out over all the web servers. I may cover other web
servers in the future.
<!-- Overview =============================== -->
<sect1>Overview
<p>
<descrip>
<tag/Cern httpd/ This was the first web server. It was developed by the
European Laboratory for Particle Physics (CERN). CERN httpd is no longer
supported. The CERN httpd server
is reported to have some ugly bugs, to be quite slow and resource hungry.
The latest version is 3.0. For more information visit the CERN httpd home
page at <url url="http://www.w3.org/Daemon/Status.html">.
It is available for download at
<url url="ftp://sunsite.unc.edu/pub/Linux/apps/www/servers/httpd-3.0.term.tpz">
(no it is not a typo, the extension is actually .tpz on the site; probably
should be .tgz)
<tag/NCSA HTTPd/ The NCSA HTTPd server is the father to Apache (The
development split into two different servers). Therefore the setup files
are very similar. NCSA HTTPd is free and the source code is available.
This server not covered in this document, although
reading the Apache section may give you some help. The NCSA server was once
popular, but most people are replacing it with Apache. Apache is a drop in
replacement for the NCSA server(same configuration files), and it fixes several
shortcomings of the NCSA server. NCSA HTTPd accounts for 4.9% (and
falling) of all web servers. (source September 1997
<url url="http://www.netcraft.com/survey/" name="Netcraft survey">).
The latest version is 1.5.2a. For
more information see the NCSA website at <url url="http://hoohoo.ncsa.uiuc.edu">.
<tag><ref id="apache" name="Apache"></tag> Apache is the king of all web
servers. Apache and its source code is free. Apache is modular, therefore
it is easy to add features. Apache is very flexible and has many, many
features. Apache
and its derivatives makes up 55% of all web domains.
There are over 3,928,112 Apache servers in operation (source August 1999
<url url="http://www.netcraft.com/survey/" name="Netcraft survey">).
The official Apache is missing SSL, but there are two
derivatives that fill the gap. Stronghold is a commercial product that is
based on Apache. It retails for &dollar;995; an economy version is available for
&dollar;495 (based on an old version of Apache). Stronghold is the number two
secure server behind Netscape (source
<url url="http://www.c2.net/products/stronghold" name="C2 net"> and
<url url="http://www.netcraft.com/survey/" name="Netcraft survey">).
For more information visit the Stronghold website at
<url url="http://www.c2.net/products/stronghold/">. It was developed
outside the US, so it is available with 128 bit SSL everywhere.
Apache-SSL is a free implementation of SSL, but it is not for commercial use
in the US (RSA has US patents on SSL technology). It can be used for
non-commercial use in the US if you link with the free RSAREF library. For
more information see the website at
<url url="http://www.algroup.co.uk/Apache-SSL/">.
<tag/Netscape Fast Track Server/ Fast Track was developed by Netscape, but the
Linux version is put out by Caldera. The Caldera site lists it as Fast
Track for OpenLinux. I'm not sure if it only runs on Caldera OpenLinux or
if any Linux distribution will do (E-mail me if you have the answer).
Netscape servers account for 6.11% (and RISING!) of all web servers (source
August 1999 <url url="http://www.netcraft.com/survey/">).
The server sells for &dollar;295. It is also included with the Caldera OpenLinux
Standard distribution which sells for &dollar;399 (&dollar;199.50 educational). The web
pages tell of a nice administration interface and
a quick 10 minute setup. The server has support for 40-bit SSL.
To get the full 128-bit SSL you need
Netscape Enterprise Server. Unfortunately that is not available for Linux :(
The latest version available for Linux is 2.0 (Version 3 is in beta, but its
not available for Linux yet).
To buy a copy goto the Caldera web site at
<url url="http://www.caldera.com/products/netscape/netscape.html">
For more information goto the Fast Track page at
<url url="http://www.netscape.com/comprod/server&lowbar;central/product/fast&lowbar;track/">
<tag/WN/ WN has many features that make it attractive. First it is smaller
than the CERN, NCSA HTTPd, an Apache servers. It also has many built-in
features that would require CGI's. For example site searches, enhanced
server side includes. It can also decompress/compress files on the fly
with its filter feature. It also has the ability to retrieve only part of a
file with its ranges feature. It is released under the GNU public license.
The current version is 2.08. For more information see the WN website at
<url url="http://hopf.math.nwu.edu/">.
<tag/AOLserver/ AOLserver is made by America Online. I'll admit that I
was surprised by the features of a web server coming from AOL. In addition
to the standard features it supports database connectivity. Pages can query
a database by Structured Query Language (SQL) commands. The database is
access through Open Database Connectivity (ODBC). It also has built-in
search engine and TCL scripting. If that is not enough you can add your own
modules through the c Application Programming Interface (API). I almost
forgot to mention support for 40 bit SSL. And you get all this for free!
For more information visit the AOLserver site at
<url url="http://www.aolserver.com/server/">
<tag/CL-HTTP/ CL-HTTP stands for Common Lisp Hypermedia Server. If you are
a Lisp programmer this server is for you. You can write your CGI scripts in
Lisp. It has a web based setup function. It also supports all the standard
server features. CL-HTTP is free and the source code is available.
For more information visit the CL-HTTP website at
<url url="http://www.ai.mit.edu/projects/iiip/doc/cl-http/home-page.html">
</descrip>
If you have a commercial purpose (company web site, or ISP), I would
strongly recommend that you use Apache. I've also heard that the Netscape
Server is easy to setup. If you have an internal use you can be a bit more
flexible. But unless one of them has a feature that you just have to use,
This is only a partial listing of all the servers available. For a more
complete list visit Netcraft at
<url url="http://www.netcraft.com/survey/servers.html"> or Web Compare at
<url url="http://webcompare.internet.com">.
<!-- Apache httpd ============================= -->
<sect>Apache<label id="apache">
<p>
The current version of Apache is 1.3.9.
The main Apache site is at
<url url="http://www.apache.org/">. Another good source of information is
Apacheweek at
<url url="http://www.apacheweek.com/">.
The Apache documentation is ok, so I'm not going to go into detail in setting
up apache. The documentation is on the website and is
included with the source (in HTML format). There are also text files
included with the source, but the HTML version is better. The documentation
should get a whole lot better once the Apache Documentation Project gets
under way. Right now most of the documents are written by the developers.
Not to discredit the developers, but they are a little hard to understand
if you don't know the terminology.
<sect1>Where to get
<p>
Apache is included in the Red Hat, Slackware, and OpenLinux distributions.
Although they may not be the latest version, they are very reliable
binaries. The bad news is you will have to live with their directory
choices (which are totally different from each other and the Apache defaults).
The source is available from the Apache web site at
<url url="http://www.apache.org/dist/">
Binaries are are also available at apache at the same place.
You can also get binaries from sunsite at
<url url="ftp://sunsite.unc.edu/pub/Linux/apps/www/servers/">.
And for those of us running Red Hat the latest binary RPM file can usually
be found in the contrib directory at
<url url="ftp://ftp.redhat.com/pub/contrib/i386/">
If your server is going to be used for commercial purposes, it is highly
recommended that you get the source from the Apache website and compile it
yourself. The other option is to use a binary that comes with a major
distribution. For example Slackware, Red Hat, or OpenLinux distributions. The
main reason for this is security. An unknown binary could have a back door for
hackers, or an unstable patch that could crash your system. This also gives
you more control over what modules are compiled in, and allows you to set
the default directories. It's not that difficult to compile Apache, and
besides you not a real Linux user until you compile your own programs ;)
<sect1>Compiling and Installing
<p>
First untar the archive to a temporary directory. Next change to the src
directory. Then edit the Configuration file if you want to include any special
modules. The most
commonly used modules are already included. There is no need to change the
rules or makefile stuff for Linux. Next run the Configure shell script
(<tt>./Configure</tt>). Make sure it says Linux platform and gcc as the compiler.
Next you may want to edit the httpd.h file to change the default directories.
The server home (where the config files are kept) default is
<tt>/usr/local/etc/httpd/</tt>, but you may want to change
it to just <tt>/etc/httpd/</tt>. And the server root (where the HTML pages are
served from) default is
<tt>/usr/local/etc/httpd/htdocs/</tt>, but I like the directory
<tt>/home/httpd/html</tt> (the
Red Hat default for Apache). If you are going to be using su-exec (see
special features below) you
may want to change that directory too. The server root can also be changed from the
config files too. But it is also good to compile it in, just encase Apache
can't find or read the config file. Everything else should be changed
from the config files.
Finally run make to compile Apache.
If you run in to problems with include files missing, check the following
things. Make sure you have the kernel headers (include files) installed for
your kernel version. Also make sure you have these symbolic links in place:
<tscreen><verb>
/usr/include/linux should be a link to /usr/src/linux/include/linux
/usr/include/asm should be a link to /usr/src/linux/include/asm
/usr/src/linux should be a link to the Linux source directory (ex.linux-2.0.30)
</verb></tscreen>
Links can be made with <tt>ln -s</tt>, it works just like the cp command except it
makes a link (<tt>ln -s source-dir destination-link</tt>)
When make is finished there should be an executable named httpd in the
directory. This needs to be moved in to a bin directory.
<tt>/usr/sbin</tt> or
<tt>/usr/local/sbin</tt> would be good choices.
Copy the conf, logs, and icons sub-directories from the source to the server
home directory. Next rename 3 of the files files in the conf sub-directory
to get rid of the <tt>-dist</tt> extension (ex. <tt>httpd.conf-dist</tt> becomes
<tt/httpd.conf/)
There are also several support programs that are included with Apache. They
are in the <tt/support/ directory and must be compiled and installed separately.
Most of them can be make by using the makefile in that directory (which is
made when you run the main <tt/Configure/ script). You don't need any of them to
run Apache, but some of them make the administrators job easier.
<sect1>Configuring
<p>
Now you should have four files in your <tt/conf/ sub-directory (under
your server home directory). The <tt/httpd.conf/ sets up the server daemon (port
number, user, etc). The <tt/srm.conf/ sets the root document tree, special
handlers, etc. The <tt/access.conf/ sets the base case for access. Finally
<tt/mime.types/ tells the server what mime type to send to the browser for each
extension.
The configuration files are pretty much self-documented (plenty of
comments), as long as you understand the lingo. You should read through
them thoroughly before putting your server to work. Each configuration
item is covered in the Apache documentation.
The <tt/mime.types/ file is not really a configuration file. It is used by the
server to translate file extensions into mime-types to send to the browser.
Most of the common mime-types are already in the file. Most people should
not need to edit this file. As time goes on, more mime types will be added
to support new programs. The best thing to do is get a new mime-types file
(and maybe a new version of the server) at that time.
Always remember when you change the configuration files you need to restart
Apache or send it the SIGHUP signal with <tt/kill/ for the changes to take
effect. Make sure you send the signal to the parent process and not any of
the child processes. The parent usually has the lowest process id number. The
process id of the parent is also in the <tt/httpd.pid/ file in the log
directory. If you accidently send it to one of the child processes the
child will die and the parent will restart it.
I will not be walking you through the steps of configuring Apache. Instead
I will deal with specific issues, choices to be made, and special features.
I highly recommend that all users read through the security tips in the
Apache documentation. It is also available from the Apache website at
<url url="http://www.apache.org/docs/mics/security&lowbar;tips.html">.
<sect1>Hosting virtual websites
<p>
Virtual Hosting is when one computer has more than one domain name. The old
way was to have each virtual host have its own IP address. The new way uses
only one IP address, but it doesn't work correctly with browsers that don't
support HTTP 1.1.
My recommendation for businesses is to go with the IP based virtual
hosting until most people have browsers that support HTTP 1.1 (give it a year
or two). This also gives you a more complete illusion of virtual
hosting. While both methods can give you virtual mail capabilities (can
someone confirm this?), only IP
based virtual hosting can also give you virtual FTP as well.
If it is for a club or personal page, you may want to consider
shared IP virtual hosting.
It should be cheaper than IP based hosting and you will be saving
precious IP addresses.
You can also mix and match IP and shared IP virtual hosts on the same
server. For more information on virtual hosting visit Apacheweek at <url
url="http://www.apacheweek.com/features/vhost">.
<sect2>IP based virtual hosting
<p>
In this method each virtual host has its own IP address. By determining the
IP address that the request was sent to, Apache and other programs can tell
what domain to serve. This is an incredible waste of IP space. Take for
example the servers where my virtual domain is kept. They have over 35,000
virtual accounts, that means 35,000 IP addresses. Yet I believe at last
count they had less than 50 servers running.
Setting this up is a two part process. The first is getting Linux setup
to accept more than one IP address. The second is setting up apache to serve
the virtual hosts.
The first step in setting up Linux to accept multiple IP addresses is to
make a new kernel. This works best with a 2.0 series kernel (or higher).
You need to include IP networking and IP aliasing
support. If you need help with compiling the kernel see the
<url name="kernel howto"
url="http://sunsite.unc.edu/LDP/HOWTO/Kernel-HOWTO.html">.
Next you need to setup each interface at boot. If you are using the Red Hat
Distribution then
this can be done from the control panel. Start X-windows as root, you
should see a control panel. Then double click on network configuration.
Next goto the interfaces panel and select your network card. Then click
alias at the bottom of the screen. Fill in the information and click done.
This will need to be done for each virtual host/IP address.
If you are using other distributions you may have to do it manually.
You can just put the commands in the <tt/rc.local/ file in
<tt>/etc/rc.d</tt> (really they should go in with the networking
stuff). You need to have a <tt/ifconfig/ and <tt/route/ command for each device. The
aliased addresses are given a sub device of the main one. For example eth0
would have aliases eth0:0, eth0:1, eth0:2, etc. Here is an example of
configuring a aliased device:
<tscreen><verb>
ifconfig eth0:0 192.168.1.57
route add -host 192.168.1.57 dev eth0:0
</verb></tscreen>
You can also add a broadcast address and a netmask to the ifconfig command.
If you have alot of aliases you may want to make a for loop to make it
easier. For more information see the
<url name="IP alias mini howto" url="http://sunsite.unc.edu/LDP/HOWTO/mini/IP-Alias.html">.
Then you need to setup your domain name server (DNS) to serve these new
domains. And if you don't already own the domain names, you need to
contact the <url name="Internic" url="http://www.internic.net"> to register
the domain names. See the DNS-howto for information on setting up your DNS.
Finally you need to setup Apache to server the virtual domain correctly.
This is in the <tt/httpd.conf/ configuration file near the end. They give you an
example to go by. All commands specific to that virtual host are put in
between the <tt/virtualhost/ directive tags. You can put almost any command in there.
Usually you set up a different document root, script directory, and log
files. You can have almost unlimited number of virtual hosts by adding
more <tt/virtualhost/ directive tags.
In rare cases you may need to run separate servers if a directive is needed
for a virtual host,
but is not allowed in the virtual host tags. This is done using the
bindaddress directive. Each server will have a different name and setup
files. Each server only responds to one IP address, specified by the
bindaddress directive. This is an incredible waste of system resources.
<sect2>Shared IP virtual hosting
<p>
This is a new way to do virtual hosting. It uses a single IP address,
thus conserving IP addresses for real machines (not virtual ones). In the
same example used above those 30,000 virtual hosts would only take 50 IP
addresses (one for each machine).
This is done by using the new HTTP 1.1 protocol. The browser tells the server which
site it wants when it sends the request. The problem is browsers that don't
support HTTP 1.1 will get the servers main page, which could be setup to
provide a menu of virtual hosts available. That
ruins the whole illusion of virtual hosting. The illusion that you have
your own server.
The setup is much simpler than the IP based virtual hosting. You still need
to get your domain from the Internic and setup your DNS. This time the DNS
points to the same IP address as the original domain. Then Apache is setup
the same as before. Since you are using the same IP address in the
virtualhost tags, it knows you want Shared IP virtual hosting.
There are several work arounds for older browsers. I'll explain the best
one. First you need to make your main pages a virtual host (either IP based
or shared IP). This
frees up the main page for a link list to all your virtual hosts. Next you
need to make a back door for the old browsers to get in. This is done using
the <tt/ServerPath/ directive for each virtual host inside the
<tt/virtualhost/
directive. For example by adding <tt>ServerPath /mysite/</tt> to www.mysite.com old
browsers would be able to access the site by www.mysite.com/mysite/. Then
you put the default page on the main server that politely tells them to get
a new browser, and lists links to all the back doors of all the sites you
host on that machine. When an old browser accesses the site they will be
sent to the main page, and get a link to the correct page. New browsers
will never see the main page and will go directly to the virtual hosts. You
must remember to keep all of your links relative within the web sites,
because the pages will be accessed from two different URL's (www.mysite.com
and www.mysite.com/mysite/).
I hope I didn't lose you there, but its not an easy workaround. Maybe you
should consider IP based hosting after all. A very similar workaround is
also explained on the apache website at
<url url="http://www.apache.org/manual/host.html">.
If anyone has a great resource
for Shared IP hosting, I would like to know about it. It would be nice to
know what percent of browsers out there support HTTP 1.1, and to have a
list of which browsers and versions support HTTP 1.1.
<sect1>CGI scripts
<p>
There are two different ways to give your users CGI script capability. The
first is make everything ending in <tt/.cgi/ a CGI script. The second is to make
script directories (usually named <tt/cgi-bin/). You
could also use both methods. For either method to work the scripts must be
world executable (<tt/chmod 711/). By giving your users script
access you are creating a big security risk. Be sure to do your homework to
minimize the security risk.
I prefer the first method, especially for complex scripting. It allows you
to put scripts in any directory. I like to put my scripts with the web pages
they work with. For sites with allot of scripts it looks much better than
having a directory full
of scripts. This is simple to setup. First uncomment the <tt/.cgi/ handler
at the end of the <tt/srm.conf/ file. Then make sure all your directories have
the <tt/option ExecCGI/ or <tt/All/ in the <tt/access.conf/ file.
Making script directories is considered more secure.
To make a script directory you use the ScriptAlias directive in the
<tt/srm.conf/ file. The first argument is the Alias the second is the actual
directory. For example <tt>ScriptAlias /cgi-bin/ /usr/httpd/cgi-bin/</tt> would make
<tt>/usr/httpd/cgi-bin</tt> able to execute scripts. That directory would be used
whenever someone asked for the directory <tt>/cgi-bin/</tt>. For security reasons
you should also change
the properties of the directory to <tt>Options none, AllowOveride none</tt> in the
<tt/access.conf/ (just uncomment the example that is there). Also do not make
your script directories subdirectories of your web page directories.
For example if you are serving pages from <tt>/home/httpd/html/</tt>, don't make the
script directory <tt>/home/httpd/html/cgi-bin</tt>; Instead make it
<tt>/home/httpd/cgi-bin</tt>.
If you want your users to have there own script directories you can use
multiple <tt/ScriptAlias/ commands. Virtual hosts should have there
<tt/ScriptAlias/ command inside the <tt/virtualhost/ directive tags.
Does anyone know a simple way to allow
all users to have a cgi-bin directory without individual ScriptAlias
commands?
<sect1>Users Web Directories
<p>
There are two different ways to handle user web directories. The first is to
have a subdirectory under the users home directory (usually <tt/public_html/).
The second is to have an entirely different directory tree for web directories.
With both methods make sure set the access options for these directories
in the <tt/access.conf/ file.
The first method is already setup in apache by default. Whenever a request
for <tt>/~bob/</tt> comes in it looks for the <tt/public_html/ directory in bob's
home directory. You can change the directory with the <tt/UserDir/ directive in
the <tt/srm.conf/ file. This directory must be world readable and executable.
This method creates a security risk because for Apache to
access the directory the users home directory must be world executable.
The second method is easy to setup. You just need to change the
<tt>UserDir</tt> directive in the <tt>srm.conf</tt> file. It has many
different formats; you may want
to consult the Apache documentation for clarification. If you want each
user to have their own directory under <tt>/home/httpd/</tt>, you would use
<tt>UserDir /home/httpd</tt>. Then when the request <tt>/~bob/</tt> comes in it would translate to
<tt>/home/httpd/bob/</tt>. Or if you want to have a subdirectory under bob's
directory you would use <tt>UserDir /home/httpd/*/html</tt>. This would translate to
<tt>/home/httpd/bob/html/</tt> and would allow you to have a script directory
too (for example <tt>/home/httpd/bob/cgi-bin/</tt>).
<sect1>Daemon mode vs. Inetd mode
<p>
There are two ways that apache can be run. One is as a daemon that is
always running (Apache calls this standalone). The second is from the
inetd super-server.
Daemon mode is far superior to inetd mode. Apache is setup for daemon mode
by default. The only reason to use the inetd mode is for very
low use applications. Such as internal testing of scripts,
small company Intranet, etc. Inetd mode will save memory because apache
will be loaded as needed. Only the inetd daemon will remain in memory.
If you don't use apache that often you may just want to keep it in daemon
mode and just start it when you need it. Then you can kill it when you are
done (be sure to kill the parent and not one of the child processes).
To setup inetd mode you need to edit a few files. First in
<tt>/etc/services</tt>
see if http is already in there. If its not then add it:
<tscreen><verb>
http 80/tcp
</verb></tscreen>
Right after 79 (finger) would be a good place. Then you need to edit the
<tt>/etc/inetd.conf</tt> file and add the line for Apache:
<tscreen><verb>
http stream tcp nowait root /usr/sbin/httpd httpd
</verb></tscreen>
Be sure to change the path if you have Apache in a different location. And
the second httpd is not a typo; the inet daemon requires that. If you are
not currently using the inet daemon, you may want to comment out the rest of
the lines in the file so you don't activate other services as well (FTP,
finger, telnet, and many other things are usually run from this daemon).
If you are already running the inet deamon (<tt/inetd/), then you only need to
send it the SIGHUP signal (via kill; see kill's man page for more info) or
reboot the computer for changes to take effect. If you are not running
<tt>inetd</tt> then you can start it manually. You should also add it to your
init files so it is loaded at boot (the <tt/rc.local/ file may be a good
choice).
<sect1>Allowing put and delete commands
<p>
The newer web publishing tools support this new method of uploading web
pages by http (instead of FTP). Some of these products don't even support
FTP anymore! Apache does support this, but it is lacking a script to handle
the requests. This script could be a big security hole, be sure you know
what you are doing before attempting to write or install one.
If anyone knows of a script that works let me know and I'll include the
address to it here.
For more information goto Apacheweek's article at
<url url="http://www.apacheweek.com/features/put">.
<sect1>User Authentication/Access Control
<p>
This is one of my favorite features. It allows you to password protect a
directory or a file without using CGI scripts. It also allows you to deny
or grant access based on the IP address or domain name of the client. That
is a great feature for keeping jerks out of your message boards and
guest books (you get the IP or domain name from the log files).
To allow user authentication the directory must have <tt>AllowOverrides
AuthConfig</tt> set in the <tt/access.conf/ file. To allow access control (by domain
or IP address) AllowOverrides Limit must be set for that directory.
Setting up the directory involves putting an <tt/.htaccess/ file in the
directory. For user authentication it is usually used with
an <tt/.htpasswd/ and optionally a <tt/.htgroup/ file. Those files can be shared among
multiple <tt/.htaccess/ files if you wish.
For security reasons I recommend that everyone use these directives in there
access.conf file:
<tscreen><verb>
&lt;files ~ "/\.ht"&gt;
order deny,allow
deny from all
&lt/files&gt;
</verb></tscreen>
If you are not the administrator of the system you can also put it in your
.htaccess file if AllowOverride Limit is set for your directory.
This directive will prevent people from looking into your access control files
(.htaccess, .htpasswd, etc).
There are many different options and file types that can be used with access
control. Therefore it is beyond the scope of this document to describe the
files. For information on how to setup User Authentication see the Apacheweek
feature at
<url url="http://www.apacheweek.com/features/userauth"> or the NCSA pages
at <url url="http://hoohoo.ncsa.uiuc.edu/docs-1.5/tutorials/user.html">.
<sect1>su-exec
<p>
The su-exec feature runs CGI scripts as the user of the owner. Normally it
is run as the user of the web server (usually nobody). This allows users to
access there own files in CGI scripts without making them world
writable (a security hole). But if you are not careful you can create a
bigger security hole by using the su-exec code. The su-exec code does
security checks before executing the scripts, but if you set it up wrong you
will have a security hole.
The su-exec code is not for amateurs. Don't use it if you don't know what
you are doing. You could end up with a gaping security hole where your
users can gain root access to your system. Do not modify the code for any
reason. Be sure to read all the documentation carefully. The su-exec code
is hard to setup on purpose, to keep the amateurs out (everything must be
done manually, no make file no install scripts).
The su-exec code resides in the <tt/support/ directory of the source. First you
need to edit the <tt/suexec.h/ file for your system. Then you need to compile
the su-exec code with this command:
<tscreen><verb>
gcc suexec.c -o suexec
</verb></tscreen>
Then copy the suexec executable to the proper directory. The Apache default is
<tt>/usr/local/etc/httpd/sbin/</tt>. This can be changed by editing
<tt/httpd.h/ in the
Apache source and recompiling Apache. Apache will only look in this directory,
it will not search the path. Next the file needs to be changed to user root
(<tt/chown root suexec/) and the suid bit needs to be set
(<tt/chmod 4711 suexec/).
Finally restart Apache, it should display a message on the console that
su-exec is being used.
CGI scripts should be set world executable like normal. They will
automaticaly be run as the owner of the CGI script. If you set the SUID (set user id) bit on the
CGI scripts they will not run. If the directory or file is world or group
writable the script will not run. Scripts owned by system users will not be
run (root, bin, etc.). For other security conditions that must
be met see the su-exec documentation. If you are having problems see the
su-exec log file named <tt/cgi.log/.
Su-exec does not work if you are running Apache from inetd, it only
works in daemon mode. It will be fixed in the next version because there
will be no inetd mode. If you
like playing around in source code, you can edit the http_main.c. You want
to get rid of the line where Apache announces that it is using the su-exec
wrapper (It wrongly prints this in front of the output of everything).
Be sure and read the Apache documentation on su-exec. It is included with
the source and is available on the Apache web site at
<url url="http://www.apache.org/docs/suexec.html">
<sect1>Imagemaps
<p>
Apache has the ability to handle server side imagemaps. Imagemaps are
images on webpages that take users to different locations depending on
where they click. To enable imagemaps first make sure the imagemap module
is installed (its one of the default modules). Next you need to uncomment
the <tt/.map/ handler at the end of the <tt/srm.conf/ file. Now all files ending in
<tt/.map/ will be imagemap files. Imagemap files map different areas on the
image to separate links. Apache uses map files in the standard NCSA
format. Here is an example of using a map file in a web page:
<tscreen><verb>
&lt;a href="/map/mapfile.map"&gt;
&lt;img src="picture.gif" ISMAP&gt;
&lt;/a&gt;
</verb></tscreen>
In this example <tt/mapfile.map/ is the mapfile, and <tt/picture.gif/ is the image to
click on.
There are many programs that can generate NCSA compatible map files or you
can create them yourself. For a more detailed discussion of imagemaps and
map files see the Apacheweek feature at
<url url="http://www.apacheweek.com/features/imagemaps">.
<sect1>SSI/XSSI
<p>
Server Side Includes (SSI) adds dynamic content to otherwise static web
pages. The includes are embedded in the web page as comments. The web
server then parses these includes and passes the results to the web
server. SSI can add headers and footers to documents, add date the
document was last updated, execute a system command or a CGI script. With
the new eXtended Server Side Includes (XSSI) you can do a whole lot more.
XSSI adds variables and flow control statements (if, else, etc).
Its almost like having an programming language to work with.
Parsing all HTML files for SSI commands would waste allot of system
resources. Therefore you need to distinguish normal HTML files from those
that contain SSI commands. This is usually done by changing the extension
of the SSI enhanced HTML files. Usually the <tt/.shtml/ extension is used.
To enable SSI/XSSI first make sure that the includes module is installed.
Then edit <tt/srm.conf/ and uncomment the <tt/AddType/ and <tt/AddHandler/ directives for
<tt/.shtml/ files. Finally you must set <tt/Options Includes/ for all directories where
you want to run SSI/XSSI files. This is done in the <tt/access.conf/ file. Now
all files with the extension <tt/.shtml/ will be parsed for SSI/XSSI commands.
Another way of enabling includes is to use the <tt/XBitHack/ directive. If you
turn this on it looks to see if the file is executable by user. If it is
and <tt/Options Includes/ is on for that directory, then
it is treated as an SSI file. This only works for files with the mime type
text/html (<tt/.html .htm/ files). This is not the preferred method.
There is a security risk in allowing SSI to execute system commands and CGI
scripts. Therefore it is possible to lock that feature out with the
<tt/Option IncludesNOEXEC/ instead of Option Includes in the
<tt/access.conf/ file. All the
other SSI commands will still work.
For more information see the Apache mod_includes documentation that comes
with the source. It is also available on the website at
<url url="http://www.apache.org/docs/mod/mod&lowbar;include.html">.
For a more detailed discussion of SSI/XSSI implementation see the Apacheweek
feature at <url url="http://www.apacheweek.com/features/ssi">.
For more information on SSI commands see the NCSA documentation at
<url url="http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html">.
For more information on XSSI commands goto
<url url="ftp://pageplus.com/pub/hsf/xssi/xssi-1.1.html">.
<sect1>Module system
<p>
Apache can be extended to support almost anything with modules.
There are allot of modules already in existence. Only the general interest
modules are included with Apache. For links to existing modules goto the
Apache Module Registry at
<url url="http://www.zyzzyva.com/module&lowbar;registry/">.
For module programming information goto
<url url="http://www.zyzzyva.com/module&lowbar;registry/reference/">
<!-- Web Server Add-ons ======================= -->
<sect>Web Server Add-ons
<p>
Sorry this section has not been written yet.
Coming soon: mSQL, PHP/FI, cgiwrap, Fast-cgi, MS frontpage extentions,
and more.
<!-- WWW = FAQ == SECTION ======================================== -->
<sect>Intranet Section
<p>
<p>
In simple terms, the <BF>Intranet</BF> is the descriptive term being used for the implementation of Internet technologies within a corporate organisation, rather than for external connection to the global Internet. This implementation is performed in such a way as to transparently deliver the immense informational resources of an organisation to each individuals desktop with minimal cost, time and effort. This document attempts to explain in simple terms how to setup an Intranet using tools which are readily available and are generally costing little or are free.
<p>
This document assumes that you already know how to install TCP/IP on your Linux server and connect it physically to your LAN using an Ethernet network card. This also assumes you have some basic knowledge of Netware, WinNT and Mac systems. The configuration of the Netware server has been shown using version 3.1x as the basis. You can also use INETCFG to achieve the same result. On the client side the discussion is with respect to Windows 3.1x, Windows for Workgroups and Win95, WinNT and the Apple PowerMac.
<P>
I am using the private network addresses (RFC-1918) of 172.16.0.0 and 172.17.0.0 only as examples. You may choose suitable addresses depending on your configuration.
<quote><verb>
Linux Netware WFWG/WinNT
Server Server Server
172.16.0.1 172.16.0.2 172.16.0.3
| | | 172.16.0.0
------+-----+-----+--------+--+--------------
| | 172.16.0.254
W/S 1 Router
172.16.0.5 | 172.17.0.254
|
----------+-------+--------
172.17.0.0 |
W/S 2
172.17.0.5
</verb></quote>
<sect1>What is required
<p>
You will need the following software before attempting the installation.
<itemize>
<item>the HTTP server software which can be downloaded from OneStep NCSA HTTPd Downloader at <htmlurl url="http://hoohoo.ncsa.uiuc.edu/docs/setup/OneStep.html" name="http://hoohoo.ncsa.uiuc.edu/docs/setup/OneStep.html"> page.
<item>The Novell Netware Client available from
<htmlurl url="HTTP://support.novell.com/" name="HTTP://support.novell.com/"> (The TCP/IP files are included with the client).
<item>The Microsoft TCP/IP client available from
<htmlurl url="HTTP://www.microsoft.com/" name="HTTP://www.microsoft.com/">
<item>The Apple MacTCP client available from
<htmlurl url="HTTP://www.apple.com/" name="HTTP://www.apple.com/">
<item>WWW Browsers like Netscape at <htmlurl url="HTTP://home.netscape.com/" name="HTTP://home.netscape.com/"> or MS Internet Explorer at <htmlurl url="HTTP://www.microsoft.com/" name="HTTP://www.microsoft.com/"> or NCSA Mosaic from <htmlurl url="http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/NCSAMosaicHome.html" name="http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/NCSAMosaicHome.html">
</itemize>
<sect1>New versions of this document
<p>
New versions of the Linux Intranet Server HOWTO will be periodically posted to comp.os.linux.announce and comp.os.linux.help. They will also be uploaded to various Linux FTP sites, including sunsite.unc.edu.
<p>
The Latest version of this document is available in HTML format at
<htmlurl url="http://www.linuxports.com/" name="http://www.linuxports.com/">
<sect1>Feedback
<p>
If you have questions or comments about this document, please feel
free to mail Mr. Poet, at <htmlurl url="mailto:poet@linuxports.com"
name="poet@linuxports.com">. Suggestions, criticism and mail are always welcome. If you find a mistake with this document, please let me know so I can correct it in the next version. Thanx.
<sect>Install the HTTP server
<p>
When you download the server you have two options: To get the source and compile it yourself, or get the precompiled binaries. The precompiled binaries for Linux (ELF) version are available at NCSA but not the older versions.
<sect1>Preparation before downloading
<p>
The server at NCSA will guide you through the steps for configuration options and prepare the various files for you. But before you attempt to download HTTPd be prepared with answers to the following questions
<sect2>The Operating System
<p>
First, you must choose whether to download the source or a pre-compiled version of the software. If your particular system doesn't appear in the menu, then you will have to get the default source, and compile it yourself.
<p>
To check the version of your Linux go to the command prompt on your Linux machine and type
<tscreen><verb>
linux:~$ uname -a
</verb></tscreen>
which will respond with a line which looks similar to this
<tscreen><verb>
linux:~$ uname -a
Linux linux 2.0.29 #4 Tue Sep 13 04:05:51 CDT 1994 i586
linux:~$
</verb></tscreen>
<p>
The version of Linux is 2.0.29.
<p>
The remaining parameters can be specified before downloading or configured later by modifying the file <tt>srm.conf</tt> in the <tt>/usr/local/etc/httpd/conf</tt> directory. The names of the actual directives that appear in the file <tt>httpd.conf</tt> are shown in brackets. The only exception is the directive DocumentRoot which appears in the file <tt>srm.conf</tt>
<sect2>Process type (ServerType)
<p>
This specifies how your machine will run your HTTPd server. The preferred method is &quot;standalone&quot;. This makes the HTTP daemon to be running constantly. If you choose to load HTTPd under &quot;inetd&quot;, the server binary will be reloaded into memory for every request, which may slow your server down.
<sect2>Binding Port (Port)
<p>
This specifies which port of your machine that the HTTPd daemon will bind
to and listen for HTTP requests. If you can login as &quot;root&quot;, use the default setting of 80.
Otherwise choose a setting between 1025 and 65535.
<sect2>Server user identity (User)
<p>
This is the user id the server will change to when answering requests and acting on files.This question needs to be answered only if you are running the server as &quot;standalone&quot;.
If you are someone without root permissions, just use your own login name. If you are system administrator, you might want to create a special user so you can control file permissions.
<sect2>Server group identity (Group)
<p>
This is the group id the server will change to when answering requests and acting on files. This is similar to Server User identity and is applicable only if you are running the server as standalone.
<p>
If you do not have root permissions, just use the name of your primary group. You can find out your group by typing
<bf>groups</bf> at the Linux command prompt.
<sect2>Server administrator email address (ServerAdmin)
<p>
This is the email address that the user should send an email message to when reporting a problem with the server. You can put your personal e-mail address.
<sect2>Location of server directory (ServerRoot)
<p>
This is where the server resides on your system. If you have root permissions leave it in its recommended location <tt>/usr/local/etc/httpd</tt>. If you cannot login as root, choose a subdirectory in your home path. You can find out the path of your home directory with the <bf>pwd</bf> command.
<sect2>Location of HTML files (DocumentRoot)
<p>
This is where the HTML files to be served are located. The default location is <tt>/usr/local/etc/httpd/htdocs</tt>.
You could however set it to be the home directory of the special user you chose in Server user identity, or a subdirectory
in your home directory if you can't login as root.
<P>
When in doubt, use the default settings. Now that you have answers to the above questions you can Download NCSA HTTPd at <htmlurl url="http://hoohoo.ncsa.uiuc.edu/docs/setup/OneStep.html" name="http://hoohoo.ncsa.uiuc.edu/docs/setup/OneStep.html">. You should read the HTTPd Documentation at <htmlurl url="http://hoohoo.ncsa.uiuc.edu/docs/" name="http://hoohoo.ncsa.uiuc.edu/docs/"> before you attempt installation. If you are planning to compile the code then you need to modify the makefiles in each of the th
ree directories <tt>support, src, cgi-src</tt>. If your version of Linux is already supported then you just have to type <bf>make linux</bf> at the top level directory (i.e. <tt>/usr/local/etc/httpd</tt>)
<sect1>Compiling HTTPd
<p>
Compiling is simple, just type <tt>make linux</tt> at the prompt in the server root directory.
<bf>Note:</bf> Users of pre-ELF Linux have to uncomment <tt>#define NO_PASS</tt> in file <tt>portability.h</tt> and set <tt>DBM_LIBS= -ldbm</tt> in the <tt>Makefile</tt> before compiling HTTPd.
<sect>Testing HTTPd
<p>
After you have installed HTTPd, login as root and start it by typing <bf>httpd &amp; </bf>. (assuming you have installed as standalone) You should now be able to see it in the list generated by <bf>ps</bf>. The simplest way to test HTTPd is by Telnet. At the Linux command prompt type
<tscreen><verb>
linux:~$ telnet 172.16.0.1 80
</verb></tscreen>
where 80 is the default port for HTTP. If you have configured &quot;Port&quot; as something different then type that number instead. You should get a response which looks like this
<tscreen><verb>
Trying 172.16.0.1...
Connected to linux.mydomain.
Escape character is '^]'.
</verb></tscreen>
Now if you type in any character and press Enter you should get a response similar to the one shown below.
<tscreen><verb>
HTTP/1.0 400 Bad Request
Date: Wed, 10 Jan 1996 10:24:37 GMT
Server: NCSA/1.5
Content-type: text/html
<HEAD><TITLE>400 Bad Request < /TITLE> < /HEAD>
<BODY><H1>400 Bad Request < /H1>
Your client sent a query that this server could
not understand.<P>
Reason: Invalid or unsupported method.<P>
< /BODY>
</verb></tscreen>
<P>
Now we are ready to connect to this server using another PC and a WWW Browser.
<sect>Connecting to the Linux Server
<p>
Please refer to the diagram shown in the chapter <ref id="Intro" name="Introduction"> for the addressing scheme used. Workstation 1 (W/S1) is on network 172.16.0.0 and can access the Linux server directly whereas Workstation 2 (W/S2) is on network 172.17.0.0 and needs to use the gateway (router) 172.17.0.254 to access the Linux box. This gateway information needs to be provided while configuring the clients only on W/S2. Netware refers to the gateway as 'ip_router'.
<p>
I am using W/S2 to illustrate the client setup. To setup W/S1 just change the address 172.17.0.5 to 172.16.0.5 and ignore all references to the gateway/router.
<p>
If you do not have a router you can skip the next section and proceed to
<itemize>
<item><ref id="SetupNW" name="Setup Netware Server"> if you use a Netware server.
<item><ref id="MSClient" name="Setup MS Windows Client"> if you use the Microsoft Client.
</itemize>
<sect1>Setup the Linux server
<p>
<BF>You may skip this section if you do not have a router.</BF>
<p>
You have to configure the Linux server to recognise the router thus allowing
Workstation 2 to connect to the Web server. In order to setup the Linux server you should login as root. At the server prompt type
<tscreen><verb>
route add gw default 172.16.0.254
</verb></tscreen>
To use this gateway everytime you boot the Linux server edit the file <tt>/etc/rc.d/rc.inet1</tt> and change the line containing the gateway definition to <tt>GATEWAY = "172.16.0.254"</tt>. Make sure the line for adding the gateway is not commented out.
<p>
ALT: You can add routes to the networks on the other side of the router. This would be done as
<tscreen><verb>
route add -net 172.17.0.0 gw 172.16.0.254
</verb></tscreen>
To add this route everytime you boot Linux add the command to your <tt>/etc/rc.d/rc.local</tt> file.
<P>
<sect1>Setup the Netware server<label id="SetupNW">
<p>
In order to setup the Netware server you should have Supervisor permissions or atleast Console operator permissions. If these cannot be got, try asking your Network Administrator to help you with the setup.
At the Server enable the Ethernet_II frame type on the LAN by typing these commands or include them in the AUTOEXEC.ncf file.
<tscreen><verb>
load NE2000 frame=Ethernet_II name=IPNET
load TCPIP
bind IP to IPNET addr=172.16.0.2 mask=FF.FF.FF.0
</verb></tscreen>
<P>
You might have to specify the slot or board number while loading the NE2000 driver depending on your machine configuration. (eg: load NE2000 slot=3 frame=.....)
<sect1>Setup the Netware Client<label id="NWClient">
<p>
On the PC you have the choice of Win3.1,WFWG or Win95. The installation procedure differs between Win95 and the older windows if you are using the 32bit client from Microsoft or Novell. If you are going to use the 16bit client, the procedure is the same and you can refer to the Windows 3.x installation instructions. For installing the 32bit client for Win95 skip to <ref id="NWWin95" name="Windows 95 installation">.
<sect2>Windows 3.x<label id="NWWin">
<p>
If you are using Win3.1 or WFWG you can install the Netware Client (VLMs) and some additional files which are provided with the TCP/IP diskette, namely
<p>
TCPIP.exe, VTCPIP.386, WINSOCK.dll and WLIBSOCK.dll
<P>
Note that the WINSOCK.dll file is different from the ones provided with Win95 and Trumpet. Install the Netware Client with the support for windows. Copy VTCPIP.386, WINSOCK.dll and WLIBSOCK.dll to the SYSTEM directory and TCPIP.exe to the NWCLIENT directory. Now modify the STARTNET.bat in the NWCLIENT directory to
<tscreen><verb>
lsl
ne2000 ---> your network card driver
c:\windows\odihlp.exe ---->if you are using WFWG
ipxodi
tcpip ---> add this line
nwip ---> if you use Netware/IP
vlm
</verb></tscreen>
<P>
Create a subdirectory (say) <tt>&bsol;NET&bsol;TCP</tt> and copy the files HOSTS, NETWORKS, PROTOCOLS and SERVICES from <tt>/etc</tt> on your Linux server or the directory <tt>SYS:ETC</tt> on your Netware server. Edit the copied HOSTS file to add the line for your new Linux server. This will enable you to refer to the Linux server as <tt>http://linux.mydomain/</tt> instead of <tt>http://172.16.0.1/</tt>in your WWW browser
<tscreen><verb>
127.0.0.1 localhost
172.16.0.1 linux.mydomain
</verb></tscreen>
<p>
Edit the NET.cfg file in NWCLIENT directory
<tscreen><verb>
Link Driver NE2000
port 300
int 3
MEM D0000
FRAME Ethernet_802.2
; ---- add these lines ----
FRAME Ethernet_II
Protocol TCPIP
PATH TCP_CFG C:\NET\TCP
ip_address 172.17.0.5
ip_netmask 255.255.255.0
ip_router 172.17.0.254 ---> add the address of your gateway only
---> if you have to use this
---> gateway to reach your HTTP server
Link Support
MemPool 6192 ---> the minimum is 1024. Try with different values
Buffers 10 1580 ---> this again can be fine tuned
;---------------------------------
; You may need to add lines like these if you are using Netware/IP
;
NWIP
NWIP_DOMAIN_NAME mydomain
NSQ_BROADCAST ON
NWIP1_1 COMPATIBILITY OFF
AUTORETRIES 1
AUTORETRY SECS 10
</verb></tscreen>
Edit the SYSTEM.ini file in the WINDOWS directory and add this entry for VTCPIP.386
<tscreen><verb>
[386Enh]
.....
network=*vnetbios, vipx.386, vnetware.386, VTCPIP.386
.....
</verb></tscreen>
<p>
Reboot your PC, run STARTNET.bat and you can now use your favorite WWW browser to access your Web pages. You need not login to Netware and you don't have to run TCPMAN (if you use Trumpet Winsock).
<sect2>Windows 95<label id="NWWin95">
<p>
This section explains how to install the 32bit client on Win95. Firstly you must install the following
<tscreen><verb>
Client for Netware Networks (from Microsoft or Novell)
Microsoft TCP/IP Protocol
Network Adapter
</verb></tscreen>
<p>
To install these items, click on My Computer, Control Panel, Networks. Click Add. You will now be in a window that displays Client, Adapter, Protocol and Service.
To install the Client for Netware Networks:
<tscreen><verb>
1. DoubleClick on Client
2. Click on Microsoft or Novell
3. DoubleClick on Client for Netware Networks
</verb></tscreen>
<p>
To install the TCP/IP Protocol:
<tscreen><verb>
1. DoubleClick on Protocol
2. Click on Microsoft
3. DoubleClick on TCP/IP
</verb></tscreen>
<p>
Windows 95 by default installs several other protocols automatically. Remove
them by clicking on them and clicking the Remove button. Typically Win95 installs the Microsoft NetBeui protocol, and IPX/SPX compatible protocol. You can delete the NetBEUI protocol, but you will need the IPX/SPX protocol if you wish to login to the Netware Server.
<p>
To setup TCP/IP click on TCP/IP, click on Properties, click on the tab IP address
<tscreen><verb>
Enter your IP address in the &quot;Specify an IP address &quot;
box as 172.17.0.5
In the Subnet Mask box enter 255.255.255.0
</verb></tscreen>
select the tab Gateway
<tscreen><verb>
Enter your gateway (router) address in the box New gateway
as 172.17.0.254
Click the Add button
</verb></tscreen>
The gateway address should now appear under the installed gateways box. Now Click OK.
<p>
You should get a message to reboot. Do so. You should now be able to use the Browser to connect to your HTTP Server.
<sect1>Setup Microsoft Client<label id="MSClient">
<p>
If you are using the Microsoft Client for accessing your network, then this section details how to install TCP/IP for
<itemize>
<item><ref id="MSWFWG" name="Windows for Workgroups (WFWG)">
<item><ref id="MSWin95" name="Windows 95">
<item><ref id="MSWinNT" name="Windows NT 4.0">
</itemize>
<BF>Note: </BF>To enable you to refer to the Linux server as <tt>http://linux.mydomain/</tt> instead of <tt>http://172.16.0.1/</tt> in the WWW browser and all your intranet commands you need to edit the <tt>hosts</tt> file. You can add more entries for each of your other hosts (Netware, Unix, WinNT) as well. The Windows family keeps its HOSTS file in <tt>&bsol;WINDOWS</tt> or in <tt>&bsol;WINDOWS&bsol;SYSTEM</tt> depending on the version. Edit this file and add a line for your Linux server as:
<tscreen><verb>
127.0.0.1 localhost
172.16.0.1 linux.mydomain
172.16.0.2 netware.mydomain
172.16.0.3 winNT.mydomain
172.16.0.5 ws_1
</verb></tscreen>
<sect2>Windows for Workgroups<label id="MSWFWG">
<p>
This section explains how to install the 32bit client on WFWG. Firstly you must
download the TCP/IP drivers for Windows from Microsoft. The current version is 3.11b and is available at <htmlurl url="ftp://ftp.microsoft.com" name="ftp://ftp.microsoft.com"> or other sites as <tt>tcp32b.exe</tt>. Make sure that you have load Win32s before trying to load the TCP/IP-32bit driver.
<p>
Having expanded the TCP/IP files into a temporary directory (say <tt>C:&bsol;TEMP</tt>), check your <tt>&bsol;WINDOWS&bsol;SYSTEM</tt> directory for copies of <tt>OEMSETUP.INF</tt>. If there are any, rename them. Now copy the <tt>OEMSETUP.INF</tt> file from the TEMP directory to the <tt>&bsol;WINDOWS&bsol;SYSTEM</tt> directory. If you have loaded any other TCP/IP stacks on your system, please remove them before you proceed.
<p>
Start Network Setup or Windows Setup/Change Network settings
<tscreen><verb>
Click the Networks button
Click Install Microsoft Windows Network.
Choose support for additional networks (if required)
Click OK
</verb></tscreen>
You should be prompted for your network adapter - select the appropriate one. If you are not prompted, then
<tscreen><verb>
Click the Adapter button
select an adapter (say NE2000)
Click OK
Click the Protocol button
select the MS TCP/IP-32 protocol
click OK
</verb></tscreen>
You will now be prompted to configure the TCP/IP protocol stack. You can always reconfigure this by highlighting the TCP/IP protocol shown in the box Adapters
and clicking the Setup button.
<tscreen><verb>
In the IP address box enter 172.17.0.5
In the Subnet Mask box enter 255.255.255.0
Enter your gateway (router) address in the box default gateway
as 172.17.0.254
</verb></tscreen>
Click OK. The computer will ask you to restart. Do so. You should now be able to use the Browser to connect to your HTTP Server.
<sect2>Windows 95<label id="MSWin95">
<p>
This section explains how to install the 32bit client for Microsoft on Win95. Firstly you must install the following
<tscreen><verb>
Client for Microsoft Networks
Microsoft TCP/IP Protocol
Network Adapter
</verb></tscreen>
<p>
To install these items, click on My Computer, Control Panel, Networks. Click Add. You will now be in a window that displays Client, Adapter, Protocol and Service.
To install the Client for Microsoft Networks:
<tscreen><verb>
1. DoubleClick on Client
2. Click on Microsoft
3. DoubleClick on Client for Microsoft Networks
</verb></tscreen>
<p>
To install the TCP/IP Protocol:
<tscreen><verb>
1. DoubleClick on Protocol
2. Click on Microsoft
3. DoubleClick on TCP/IP
</verb></tscreen>
<p>
Windows 95 by default installs several protocols automatically. Remove
them by clicking on them and clicking the Remove button. Typically Win95 installs the Microsoft NetBeui protocol.
<p>
To setup TCP/IP click on TCP/IP, click on Properties, click on the tab IP address
<tscreen><verb>
Enter your IP address in the &quot;Specify an IP address &quot;
box as 172.17.0.5
In the Subnet Mask box enter 255.255.255.0
</verb></tscreen>
select the tab Gateway
<tscreen><verb>
Enter your gateway (router) address in the box New gateway
as 172.17.0.254
Click the Add button
</verb></tscreen>
The gateway address should now appear under the installed gateways box. Now Click OK.
<p>
You should get a message to reboot. Do so. You should now be able to use the Browser to connect to your HTTP Server.
<sect2>Windows NT<label id="MSWinNT">
<p>
This section details how to Install the TCP/IP client for WinNT 4.0.
Start Control Panel/ Network
<tscreen><verb>
Select the Adapter tab.
Click Add to add a new adapter (if you don't have one)
</verb></tscreen>
You should be prompted for your network adapter - select the appropriate one. To add the protocols.
<tscreen><verb>
Select the Protocols tab
Click Add
Select the TCP/IP protocol
Click OK
</verb></tscreen>
You will now be prompted to configure the TCP/IP protocol stack. You can always reconfigure this by highlighting the TCP/IP protocol and clicking the Properties button.
<tscreen><verb>
Select the tab IP Address
Mark the checkbox 'Specify an IP address'
In the IP address box enter 172.17.0.5
In the Subnet Mask box enter 255.255.255.0
Enter your gateway (router) address in the box Default Gateway
as 172.17.0.254
</verb></tscreen>
Click OK. The computer will ask you to restart. You can now use any Browser to connect to your HTTP Server.
<sect1>Setup TCP/IP on Macintosh<label id="MacClient">
<p>
If you are using the Macintosh for accessing your network, then
this section details how to install MacTCP for the PowerMacs.
<BF>Note: </BF>To enable you to refer to the Linux
server as <tt>http://linux.mydomain/</tt> instead of
<tt>http://172.16.0.1/</tt> in the WWW browser and all your intranet
commands you need to edit the <tt>hosts</tt> file. The format of the
hosts file is different from the one used in Unix. The Mac hosts file is
based on RFC-1035. You can add more entries for each of your other hosts
(Netware, Unix, WinNT) as well. The MacOS keeps its HOSTS file in the
<tt>Preferences folder</tt> under the <tt>System folder</tt>. Edit this file and add a line
for your Linux server as:
<tscreen><verb>
linux.mydomain A 172.16.0.1
netware.mydomain A 172.16.0.2
winNT.mydomain A 172.16.0.3
ws_1 A 172.16.0.5
</verb></tscreen>
<sect2>MacTCP<label id="MacTCP">
<p>
This section explains how to install MacTCP. Firstly
you must download the MacTCP files from Apple or install it from the Internet Connection CD.
To configure MacTCP, click the Apple Menu/ Control Panels/ TCP/IP. In the screen change the setting for 'Connect via:' to 'Ethernet'
<p>
Change the 'Configure' setting to 'Manually'
<tscreen><verb>
In the IP address box enter 172.17.0.5
In the Subnet Mask box enter 255.255.255.0
Enter your gateway (router) address in the box
Router address as 172.17.0.254
</verb></tscreen>
Click OK. You should now be able to use the Browser to connect to your HTTP Server.
<sect>Setting up the Intranet
<p>
An Intranet cannot be complete without sharing the resources on the different platforms. You will need support for other filesystems, so that you can access the data available on them. This document provides instructions to connect Linux to the following popular filesystems.
<itemize>
<item><ref id="NCPFS" name="NCP filesystem for Netware">
<item><ref id="SMBFS" name="SMB filesystem for Windows">
<item><ref id="NFS" name="NFS filesystem for Unix">
</itemize>
<p>
These filesystems can be compiled into the Linux kernel or added as modules, depending on the version of Linux. If you are not familiar with compiling the kernel you can refer to the Kernel HOWTO <htmlurl url="http://sunsite.unc.edu/mdw/HOWTO/Kernel-HOWTO.html" name="http://sunsite.unc.edu/mdw/HOWTO/Kernel-HOWTO.html"> and the Module HOWTO <htmlurl url="http://sunsite.unc.edu/mdw/HOWTO/Module-HOWTO.html" name="http://sunsite.unc.edu/mdw/HOWTO/Module-HOWTO.html"> for compiling the kernel with modules.
<p>
<sect1>NCPFS<label id="NCPFS">
<p>
To share the files on the Netware server you will need support for NCP (ncpfs). NCPFS works with kernel version 1.2.x and 1.3.71 upwards. It does not work with any earlier 1.3.x kernel. It cannot access the NDS database in Netware 4.x, but can make use of the bindery. If you are using Netware 4.x you can enable bindery support for specific containers using the command <tt>Set Bindery Context</tt> at the console as:
<tscreen><verb>
set Bindery Context = CORP.MYDOM;WEBUSER.MYDOM
</verb></tscreen>
In the above example two containers have bindery support enabled.
<p>
You will need to download the NCP filesystem utilities using the URL <htmlurl url="ftp://sunsite.unc.edu/pub/Linux/system/filesystems/ncpfs/ncpfs.tgz" name="ftp://sunsite.unc.edu/pub/Linux/system/filesystems/ncpfs/ncpfs.tgz"> (currently ncpfs-2.0.10) from Sunsite.
<p>
<sect2>Installation
<p>
To install the ncpfs utilities, type
<tscreen><verb>
zcat ncpfs.tgz | tar xvf -
</verb></tscreen>
to expand the files into its own directory. In this case you will get a directory <tt>ncpfs-2.0.10</tt> Change your directory to this ncpfs directory before proceeding with the installation. Read the README and edit the Makefile if necessary.
<p>
The installation of ncpfs depends on the kernel version you are
using. For kernel 1.2, you should simply type 'make'. Subsequently typing 'make install' will install the executables and man pages.
<p>
If you use Kernel 1.3.71 or later, you might have to recompile your
kernel. With these kernels, the kernel part of ncpfs is already
included in the main source tree. To check if the kernel needs to be recompiled type
<tscreen><verb>
cat /proc/filesystems
</verb></tscreen>
It should show you a line saying that the kernel knows ncpfs.
<p>
If ncpfs is not there, you can either recompile the kernel or add ncpfs as a module. For recompiling the kernel you should type 'make config' and when it asks you for
<p>
<tt>The IPX protocol (CONFIG_IPX) [N/y/?]</tt>
<p>
simply answer 'y'. Probably you do not need the full internal net that
you are asked for next. Once the kernel is successfully installed, reboot, check <tt>/proc/filesystems</tt> and if everything is OK proceed with the installation of the ncpfs utilities. Change directory to the location holding your downloaded ncpfs files, and type 'make'. After the compilation is finished type 'make install' to install the various utilities and man pages.
<p>
<sect2>Mounting NCPFS
<p>
To check the installation type
<tscreen><verb>
ipx_configure --auto_interface=on --auto_primary=on
....wait for 10 seconds and type
slist
</verb></tscreen>
You should be able to see a list of your Netware servers. Now we are ready to share files from the Netware server.
<p>
Suppose we need to access HTML files from directory <tt>&bsol;home&bsol;htmldocs</tt> on volume VOL1: on the server MYDOM_NW, I recommend that you create a new user (say) 'EXPORT' with password 'EXP123' on this server to whom you grant appropriate access rights to this directory using SYSCON or NWADMIN.
<p>
On the Linux machine create a new directory <tt>/mnt/MYDOM_NW</tt>. Now type the command
<tscreen><verb>
ncpmount -S MYDOM_NW -U EXPORT -P EXP123 /mnt/MYDOM_NW
</verb></tscreen>
to mount the netware file system. Typing the command
<tscreen><verb>
ls /mnt/MYDOM_NW/vol1/home/htmldocs
</verb></tscreen>
will show you a list of all the files in <tt>MYDOM_NW/VOL1:&bsol;HOME&bsol;HTMLDOCS</tt> (using Netware file notation). If you have any problems please read the IPX HOWTO at <htmlurl url="http://sunsite.unc.edu/mdw/HOWTO/IPX-HOWTO.html" name="http://sunsite.unc.edu/mdw/HOWTO/IPX-HOWTO.html"> for more insights into the IPX system.
<sect1>SMBFS<label id="SMBFS">
<p>
To share the files on the Windows server you will need support for SMB (smbfs).
<p>
You will need to download the SMB filesystem utilities from <htmlurl url="ftp://sunsite.unc.edu/pub/Linux/system/filesystems/smbfs/smbfs.tgz" name="ftp://sunsite.unc.edu/pub/Linux/system/filesystems/smbfs/smbfs.tgz"> (currently smbfs-2.0.1) from Sunsite.
<p>
<sect2>Installation
<p>
To install the smbfs utilities, type
<tscreen><verb>
zcat smbfs.tgz | tar xvf -
</verb></tscreen>
to expand the files into its own directory. In this case you will get a directory <tt>smbfs-2.0.1</tt> Change your directory to this smbfs directory before proceeding with the installation. Read the README and edit the Makefile if necessary.
<p>
The installation of smbfs depends on the kernel version you are
using. For kernel 1.2, you should simply type 'make'. Subsequently typing 'make install' will install the executables and man pages.
<p>
If you use Kernel 2.0 or later, you might have to recompile your
kernel. With these kernels, the kernel part of smbfs is already
included in the main source tree. To check if the kernel needs to be recompiled type
<tscreen><verb>
cat /proc/filesystems
</verb></tscreen>
It should show you a line saying that the kernel knows smbfs.
<p>
If smbfs is not there, you can either recompile the kernel or add smbfs as a module. For recompiling the kernel you should type 'make config' and when it asks you for
adding SMB filesystem support
simply answer yes. Once the kernel is successfully installed, reboot, check <tt>/proc/filesystems</tt> and if everything is OK proceed with the installation of the smbfs utilities. Change directory to the location holding your downloaded smbfs files, and type 'make'. After the compilation is finished type 'make install' to install the various utilities and man pages.
<p>
<sect2>Mounting SMBFS
<p>
In our example let us assume that the WinNT server is called 'MYDOM_NT' and is sharing its directory <tt>C:&bsol;PUB&bsol;HTMLDOCS</tt> with a share name of 'HTMLDOCS' without a password. On the Linux machine create a new directory <tt>/mnt/MYDOM_NT</tt>. Now type the command
<tscreen><verb>
smbmount //MYDOM_NT/HTMLDOCS /mnt/MYDOM_NT -n
</verb></tscreen>
<p>
to mount the SMB (windows share) file system. If this does not work try
<tscreen><verb>
smbmount //MYDOM_NT/COMMON /mnt/MYDOM_NT -n -I 172.16.0.3
</verb></tscreen>
Typing the command
<tscreen><verb>
ls /mnt/MYDOM_NT
</verb></tscreen>
will show you a list of all the files in <tt>bsol;bsol;MYDOM_NT&bsol;PUB&bsol;HTMLDOCS</tt> (using Windows file notation).
<p>
<sect1>NFS<label id="NFS">
<p>
First you will need a kernel with the NFS file system either compiled in or available as a module.
<p>
Suppose you have a Unix host running NFS with the name MYDOM_UNIX and an IP address of 172.16.0.4. You can check the directories that are being exported (shared) by this host by typing the command
<tscreen><verb>
showmount -e 172.16.0.4
</verb></tscreen>
Once we know the exported directories you can mount them by entering a appropriate mount command. I recommend that you create a subdirectory under '/mnt' (say) 'MYDOM_UNIX' and use that as your mount point.
<tscreen><verb>
mount -o rsize=1024,wsize=1024 172.16.0.4:/pub/htmldocs /mnt/MYDOM_UNIX
</verb></tscreen>
The rsize and wsize may have to be changed depending on your environment.
<p>
If you have any problems please read the NFS HOWTO at <htmlurl url="http://sunsite.unc.edu/mdw/HOWTO/NFS-HOWTO.html" name="http://sunsite.unc.edu/mdw/HOWTO/NFS-HOWTO.html"> for more insights into the NFS system.
<p>
<sect>Accessing the Web<label id="AccessHTML">
<p>
Now that we have setup the HTTP server, the clients and interconnected the Linux server with the other servers, we need to make some small adjustments on the Linux server to be able to access these mounted filesystems from the Web Browser.
<sect1>Accessing the mounted filesystems
<p>
To access the mounted directories in your HTML pages you have two methods:
<itemize>
<item>Create a link in DocumentRoot (<tt>/usr/local/etc/httpd/htdocs</tt>) to refer to the mounted directory as
<tscreen><verb>
ln -s /mnt/MYDOM_NW/vol1/home/htmldocs netware
or
ln -s /mnt/MYDOM_NT winNT
or
ln -s /mnt/MYDOM_UNIX unix
</verb></tscreen>
<item>to edit the file <tt>srm.conf</tt> in your <tt>/usr/local/etc/httpd/conf</tt> directory and add a new alias.
</itemize>
<tscreen><verb>
# Alias fakename realname
Alias /icons/ /usr/local/etc/httpd/icons/
# alias for netware server
Alias /netware/ /mnt/MYDOM_NW/vol1/home/htmldocs/
Alias /winNT/ /mnt/MYDOM_NT/
Alias /unix/ /mnt/MYDOM_UNIX
</verb></tscreen>
And restart your HTTPd. You can access the documents on the netware server by referring to them as <tt>http://linux.mydomain/netware/index.htm</tt> for the netware files and similar notations for the others.
<sect1>Connecting to the Internet
<p>
You can finally connect your Intranet to the Internet to access E-Mail and all the wonderful information out there. I propose to write a brief note on how to do this in a future revision. Detailed explanations are available in the ISP Hookup HOWTO from <htmlurl url="http://sunsite.unc.edu/mdw/HOWTO/ISP-Hookup-HOWTO.html" name="http://sunsite.unc.edu/mdw/HOWTO/ISP-Hookup-HOWTO.html"> and Diald mini HOWTO at <htmlurl url="http://sunsite.unc.edu/mdw/HOWTO/mini/Diald" name="http://sunsite.unc.edu/mdw/HOWTO/mini/Diald"> for setting up these connections.
<sect1>Other uses
<p>
The HTTP server can be used in the office to provide transparent access to information residing on different servers, at several locations and directories. The data can be simple documents in Word, Lotus spreadsheets, or complex databases.
<p>
The application of this technology is being typically used as follows:-
<P>
<itemize>
<item>Publishing corporate documents<p>
These documents can include newsletters, annual reports, maps, company facilities, price lists, product information literature, and any document which is of value within the corporate entity.
<item>Access into searchable directories<p>
Rapid access to corporate phone books and the like. This data can be mirrored at a Web site or, via CGI scripts, the Web server can serve as a gateway to back-end pre-existing or new applications. This means that, using the same standard access mechanisms, information can be made more widely available and in a simpler manner.
This means that it can be used to create an interface with RDBMS like ORACLE and SYBASE for generating real-time information. Here is a list of links to such sites on the Web.
<p>
- Web Access - <htmlurl url="http://cscsun1.larc.nasa.gov/~beowulf/db/web&lowbar;access.html" name="http://cscsun1.larc.nasa.gov/~beowulf/db/web&lowbar;access.html">
- CGI gateways - <htmlurl url="HTTP://www.w3.org/hypertext/WWW/RDBGate/Overview.html" name="HTTP://www.w3.org/hypertext/WWW/RDBGate/Overview.html">
<item>Corporate/Department/Individual pages<p>
As cultures change within organistions to the point where even each department moves towards their own individual mission statements, the Intranet technology provides the ideal medium to communicate current information to the Department or Individual. Powerful search engines provide the means for people to find the group or individual who has the answers to the continuous questions which arise in the normal day-to-day course of doing business.
<item>Simple Groupware applications<p>
With HTML forms support, sites can provide sign-up sheets, surveys and simple scheduling.
<item>Software distribution<p>
Administrators can use the Intranet to deliver software and up-dates on-demand to users across the corporate network . This can be done with 'Java' which allows the creation and transparent distribution of objects on-demand rather than just data or applications. This is indeed possible more easily with the newer versions of Linux which has builtin support for Java.
<item>Mail<p>
With the move to the use of Intranet mail products with standard and simple methods for attachment of documents, sound, vision and other multimedia between individuals, mail is being pushed further forward as a simple, de facto communications method. Mail is essentially individual to individual, or individual to small group, communication. Several utilities are available on the Linux platform to setup an E-mail system like <bf>sendmail, pop3d, imapd</bf>.
<item>User Interface<p>
The Intranet technology is evolving so rapidly that the tools available, in particular HTML, can be used to dramatically change the way we interface with systems. With HTML you can build an Interface which is only limited by the creators imagination. The beauty about using Intranet technologies for this is that it is so simple. Clicking a hyperlink from HTML can take you to another page, it could ring an alarm, run a yearend procedure or anything else that a computer program can do.
</itemize>
<sect>More things to do
<P>
Here is a list of other interesting things to do with your Linux Intranet server. All the software mentioned below is freeware or shareware.
<itemize>
<item>Browse the Linux server using Network Neighbourhood in Win95/ NT; Setup a WINS like NBT server. Check out the SAMBA Web page at <htmlurl url="http://lake.canberra.edu.au/pub/samba/samba.html" name="http://lake.canberra.edu.au/pub/samba/samba.html">
<item>Implement a search engine on your Intranet. Connect to ht://Dig at <htmlurl url="http://htdig.sdsu.edu/" name="http://htdig.sdsu.edu/">
<item>Use CUSeeMe by setting up a local reflector. Refer to their page at Cornell <htmlurl url="http://cu-seeme.cornell.edu/" name="http://cu-seeme.cornell.edu/">
<item>Setup Web Conferencing. Use COW from <htmlurl url="http://thecity.sfsu.edu/COW/" name="http://thecity.sfsu.edu/COW/">
<item>Deploy a SQL database. Refer to the mSQL Home page at <htmlurl url="http://Hughes.com.au/" name="http://Hughes.com.au/">
<item>Setup FTP,Gopher,Finger,Bootp servers on the Netware server. Get them at <htmlurl url="http://mft.ucs.ed.ac.uk/" name="http://mft.ucs.ed.ac.uk/">
<item>Emulate a Netware server. Check out the NCP Utilities at <htmlurl url="ftp://sunsite.unc.edu/pub/Linux/system/filesystems/ncpfs/" name="ftp://sunsite.unc.edu/pub/Linux/system/filesystems/ncpfs/">
</itemize>
If you find other interesting things to do with your Linux Intranet server, please feel free to mail me.
<sect>Credits and Legalities
<p>
<sect1>Thanks
<p>
Thanks to the people at NCSA for providing such excellent documentation,
David Anderson and all others for trying out this HOWTO and sending in their comments. The details on Netware/IP are courtesy Romel Flores (rom@mnl.sequel.net).
<p>
<sect1>Copyright information
<P>
This document is copyrighted &copy; 1999 {Poet} and LinuxPorts, it is distributed under the following terms:
<P>
<itemize>
<item>Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author
would like to be notified of any such distributions.
<item> All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its
distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below.
<item> If you have questions, please contact Tim Bynum, the Linux HOWTO coordinator, at <htmlurl url="mailto:linux-howto@sunsite.unc.edu" name="linux-howto@sunsite.unc.edu"> Finger for phone number and snail mail address.
</itemize>
<P>
</article>
<!-- For further reading SECTION ================================= -->
<sect>For further reading
<p>
<sect1>O'Reilly &amp; Associates Books
<p>
In my humble opinion O'Reilly &amp; Associates make the best technical books
on the planet. They focus mainly on Internet, Unix and programming related
topics. They start off
slow with plenty of examples and when you finish the book your an expert. I
think you could get by if you only read half of the book. They also add
some humor to otherwise boring subjects.
They have great books on HTML, PERL, CGI Programming, Java, JavaScript,
C/C++, Sendmail, Linux and
much much more. And the fast moving topics (like HTML) are updated
and revised about every 6 months or so. So visit the
<url url="http://www.ora.com/" name="O'Reilly &amp; Associates">
web site or stop by your local book store for more info.
And remember if it doesn't say O'Reilly &amp; Associates on the cover,
someone else probably wrote it.
<sect1>Internet Request For Comments (RFC)
<p>
<itemize>
<item>RFC1866 written by T. Berners-Lee and D. Connolly,
"Hypertext Markup Language - 2.0", 11/03/1995
<item>RFC1867 writtenm by E. Nebel and L. Masinter,
"Form-based File Upload in HTML", 11/07/1995
<item>RFC1942 written by D. Raggett,
"HTML Tables", 05/15/1996
<item>RFC1945 by T. Berners-Lee, R. Fielding, H. Nielsen,
"Hypertext Transfer Protocol -- HTTP/1.0", 05/17/1996.
<item>RFC1630 by T. Berners-Lee,
"Universal Resource Identifiers in WWW: A Unifying Syntax for the
Expression of Names and Addresses of Objects on the Network as used
in the World-Wide Web", 06/09/1994
<item>RFC1959 by T. Howes, M. Smith, "An LDAP URL Format", 06/19/1996
</itemize>
</article>