Title: WMB520: Web Technology Web Server Setup
1WMB-520 Web TechnologyWeb Server Setup
- Meeting 2 Apache Installation and Initial
Configuration - Rutgers University Center for Applied Computing
Technology - Instructor Chris Uriarte
2Apache
- The worlds leading web server software (powers
65 of all web sites in the world) - Runs on UNIX and Windows platforms. UNIX version
is the most stable and most widely used. - Configuration is the same on all UNIX platforms,
varies slightly on Windows systems.
3How Do I Get Apache?
- There are currently two supported releases of
Apache v1.3 and v2.0. Version 1.3 is the most
widely used (95 of all Apache installation), but
version 2.0 will become more popular over the
next 12-18 months. - There are many subversions released throughout
the lifetime of a major version (i.e. 1.3.10) - You can download it from the Apache Website
http//www.apache.org/dist/ - Binary Versions software that is ready-to-use
for your specific operating system platform - Source Code the computer code used to build
Apache. You must use a compiler to build the
code. - You can buy a Unix distribution that comes
bundled with Apache pre-built (most Linux
distributions include Apache by default).
4Installing Apache from Source
- Allows you to build the Apache binaries from
scratch. - Optimizes Apache for the platform on which it
will run. - Allows you to specify special server features at
build-time. - You need a C compiler (i.e. gcc) installed on
your system to compile source code, which is
included in most UNIX distributions.
5Apache Modules
- Apache has a modular structure. Only a core set
of features exists within the main Apache
executable. - Apache Modules provide additional functionalityto
Apache. - Example Module mod_speling The Speling module
attempts to correct misspellings of URLs that
users might have entered, namely by checking
capitalization or by allowing up to one
misspelling (character insertion, omission,
transposition, typo).
6Apache Static vs. Dynamic Servers
- Static Servers
- Must decide at build time what modules to
include. Recompiling will be necessary to add
modules later. - Dynamic Servers
- Allows you to utilize new modules without
re-compiling apache.
7Static vs. Dynamic Apache
- Building a static (standard) Apache distribution
limits you to the modules you choose when you
compile the server. - However, using Apache with dynamic modules makes
apache more difficult to administer, perform
slower and increases its memory requirements. - Consider building a static server, as the need to
add new modules is not very common and
re-compiling Apache is simple.
8Installing Apache Source
- Create a directory under your blender.rutgers.edu
home directory called apache - mkdir apache
- You now need to obtain the Apache source file
(which youd usually do from http//www.apache.org
/dist). You can copy the source that is
contained locally on the blender.rutgers.edu
server - cd apache
- cp chrisjur/apache_1.3.27.tar.gz .
- You should now have the Apache source file under
your home directory in /home/ltusernamegt/apache.
9Unzipping and Untaring the Source File
- You now have the Apache source distribution under
your home directory in /home/ltusernamegt/apache. - The source file is actually a group of tared
files and directories, which is then zipped using
the gzip utility. - You can untar and unzip the source distribution
by issuing - tar xvzf apache_1.3.27.tar.gz
10Unzipping and Untaring the Source File cont.
- Unpacking the distribution file will create
another directory under /home/ltusernamegt/apache
called apache_1.3.27 (/home/ltusernamegt/apache/ap
ache_1.3.27). - cd to the apache_1.3.27 to view the files and
directories that are included in the distribution.
11Sample Directory Listing from Source Distribution
- iti cd apache_1.3.27
- iti ls
- ABOUT_APACHE LICENSE README.NT
conf htdocs - Announcement Makefile README.configure
config.layout icons - INSTALL Makefile.tmpl WARNING-NT.TXT
config.status logs - KEYS README cgi-bin
configure src - iti ls -al
- total 272
- drwx------ 8 chrisjur users 4096 Oct 15
2021 . - drwx------ 13 chrisjur users 4096 Oct 15
2110 .. - -rw------- 1 chrisjur users 12957 Mar 31
1999 ABOUT_APACHE - -rw------- 1 chrisjur users 2922 Feb 23
2000 Announcement - -rw------- 1 chrisjur users 27964 Dec 21
1999 INSTALL - -rw------- 1 chrisjur users 35773 Aug 20
1999 KEYS - -rw------- 1 chrisjur users 2848 Jan 1
1999 LICENSE - -rw------- 1 chrisjur users 26929 Oct 15
2020 Makefile - -rw------- 1 chrisjur users 26758 Jan 11
2000 Makefile.tmpl - -rw------- 1 chrisjur users 2046 Apr 1
1998 README - -rw------- 1 chrisjur users 3132 Mar 19
1999 README.NT
12Apache Installation Step 1
- Before actually building the Apache binaries, you
must run a configure utility, which inspects your
system and prepares the distribution for
compiling. - The configure script is located in the directory
that was created when you unpacked the Apache
source distribution (i.e. /home/itiXXX/apache/apac
he_1.3.27) - The included INSTALL file has instructions on how
to configure and compile Apache.
13Apache Installation Step 1 cont.
- Run the configure script like this
- ./configure --prefix/home/itiXXX/apache
- The prefix flag tells Apache where you actually
want to install the software and configuration
files. - It also builds the Apache software so it knows
where to look for configuration files
14Apache Installation Step 2
- After the configure script runs successfully, you
now need to compile the software code into the
actual binaries. - You can start the compile by issuing the make
command in the Apache distribution directory,
i.e - cd /home/itiXXX/apache/apache_1.3.27
- make
- The compile process will take 2-10 minutes,
depending on the speed of your system.
15Apache Installation Step 3
- When the compile is complete, you can install the
software and configuration files by issuing the
make install command. - This will copy the built binaries and
configuration files into the /home/ltusernamegt/apac
he directory you specified when you ran the
configuration script. We will now refer to this
directory as the Server Root directory.
16The Server Root Directory
- Examine the contents of the Server Root
directory. You now have a group of directories
Apache uses - bin the location of the actual apache program
and other utilities - conf location of the configuration files
- htdocs the directory where web pages and and
associated files are kept - logs where apache keeps log files
- man UNIX man pages for apache
- cgi-bin the directory where CGI scripts are kept
17Apache and Privileged Ports
- Any TCP/IP port lt1024 is considered a privileged
port. - Privileged Ports can only be accessed by
applications started by the root (system admin)
user. - Therefore, since you are not the root user on
this system, you must configure Apache to use a
port gt1024.
18Quickstart Change the Port Number your Apache
Server Uses
- cd to the Apache conf directory
(/home/itiXXX/apache/conf) - Use a text editor to open the httpd.conf file,
which is the main Apache configuration file. - Find the line that says Port XX. Your file may
say Port 8080 or some other number.
19Change your Apache Port, cont.
- Replace the number next to the Port directive
to a number that corresponds to you. - Use the numeric portion of your
blender.rutgers.edu username. For example, if
your username is iti2345, use port 2345 as your
port number. - Exit your editor and save the file.
20Getting Ready to Run Apache for the First Time
- Apache is configured to look for web documents in
the htdocs directory under the server root
(/home/itiXXX/apache/htdocs). - This directory is known as the Document Root
- Be default, a page called index.html is the
first page of a the website returned to clients.
- Create an index.html file in your htdocs
directory that contains the text Hello World.
My name is ltYour Namegt
21Starting Apache The Hard Way
- The actual Apache binary is called httpd and it
resides in the Apache /bin directory. - You can start Apache by simply executing the
httpd command - cd apache/bin
- ./httpd
- Apache is now started!
22Verify that Your Instance of Apache is Working
- Point a web browser to http//blender.rutgers.edu
ltPORTgt - (recall, you configured the port number in the
httpd.conf file to be the numeric portion of your
iti username) - You should see your default web page appear (the
contents of the htdocs/index.html document we
created at earlier)
23Stopping Apache The Hard Way
- Remember, every time you execute a program on a
UNIX operating system, a process is created - Apache creates a file called httpd.pid in its
logs directory. This file contains the parent
process ID of the Apache process. - You can kill the process by using the kill
command - You can kill Apache by issuing the following
commend - kill TERM cat /home/ltusernamegt/apache/logs/httpd
.pid -
24Starting and Stopping Apache The Easy Way
with apachectl
- A script called apachectl is included in the
apache/bin directory. - You can use apachectl to start, stop and restart
the Apache server very simple to use - cd /home/ltusernamegt/apache/bin/
- ./apachectl startstoprestart
25Apache Configuration Files
- Configuration files are placed in the conf/
directory and include - httpd.conf master configuration file
- access.conf and srm.conf no longer used
- Since version 1.3.4, all you configuration is
done in the httpd.conf file the srm.conf and
access.conf files are no longer needed. - Apache needs to know location of httpd.conf file
to start. If httpd.conf needs to move after
initial install need to specify location with f
option when starting server. - httpd f /path/to/httpd/.conf
26httpd.conf IP address and Port
- The BindAddress and Port directives in the
httpd.conf tell Apache which IP addresses and
ports to listen on. Usage - Tells Apache to use the default IP address for
this system - BindAddress
- Tells Apache to listen for web requests on Port
80 - Port 80
27Tell Apache to Listen To Additional Ports and IP
addresses
- The Listen directive in the httpd.conf tells
Apache to listen to additional Ports and/or
Port/IP address combinations. - Usage
- Listen ltPort Numbergt or
- Listen ltIPgtltPort Numbergt
- These IP/Ports are used in addition to the IP and
Port specified in the BindAddress and Port
directive described earlier.
28httpd.conf Basic Configuration Directives
- ServerName blender.rutgers.edu The name of this
server we use to respond to web clients with. If
the server does not have a real internet name,
use the IP address instead. - ServerType standalone - We always set this to
standalone.
29httpd.conf Basic Configuration Directives
- User nobody, Group nobody - For security reasons,
we usually run Apache assumes the identity of a
non-root user and group on the system. A lot of
times we run Apache as the nobody user/group. - ServerAdmin itiXXX_at_blender.rutgers.edu - A
contact address to report problems returned to
the web client when an error occurs.
30httpd.conf Basic Configuration
- ServerRoot /home/ltusernamegt/apache - Where Apache
keeps all its essential files. - DocumentRoot /usr/local/apache/htdocs - Where
the actual Web pages reside. - ErrorLog /home/ltusernamegt/apache/logs/error_log
The location of the Apache error log - PidFile /home/ltusernamegt/apache/logs/httpd.pid
-Process id for the Apache parent process. Used
with the kill command to stop Apache.
31httpd.conf Virtual Directories
- Sometime you want to create a Virtual Directory,
where a document directory may not exist under
your htdocs directory, but you want web clients
to have access to it. - This is configured using the Alias directive in
the httpd.conf, usage - Alias ltvirtualdirectorygt ltreal directorygt
32Virtual Directories, cont.
- For example, if your Document Root is the default
htdocs directory and you want web client to
access a directory that contains Icons
(/home/ltusernamegt/apache/icons), you can create a
Virtual Virtual Directory called myicons like
this - Alias /myicons /home/ltusernamegt/apache/icons
- Now web clients can access this virtual directory
by going to http//blender.rutgers.eduXXXX/myicon
s to view the files in the icons directory.
33httpd.conf Redirects
- The Redirect directive allows web clients to
access a URL on your system and be re-directed to
a remote URL somewhere else. - Usage
- Redirect /localpath http//remote-url
- Example
- Redirect /photos http//members.yahoo.com/user/pho
tos - Redirects all request to http//yoursite.com/photo
s to http//members.yahoo.com/user/photos - Useful when you move portions of a webpage
34Giving Web Access to Users on the System
- Individual users on your system may wan the
ability to post web content. - The UserDir Apache directive, allows each user on
the system to create an special directory used to
contain web content. - Usage UserDir public_html
- Now system users can place all of their web
documents in a directory called public_html under
their home directory. These documents can be
accessed via the URL http//systemname/username.
35Access Control Files
- Per directory configuration files can be used to
supplement or override settings set on the server
level. Most commonly used to password-protect a
directory. - Allows for on-the-fly changes. No need to
restart the server. - Generally referred to as .htaccess files even
though the actual name of the file can be set in
httpd.conf AccessFileName .htaccess
36Access Control Files, cont.
- Level of overrides allowed should also be set in
httpd.conf - AllowOverride NoneAllOptionsIndexes
FileInfoAuthConfigLimit - Default is All.
- Access control file is placed in root of
directory for which configuration is being
modified.
37Access Restrictions by Location
- Access to directory contents can be granted or
denied by IP address, network, hostname or name. - ltDirectory /home/apache/apache/htdocs/restrictedgt
- order deny,allow deny from all allow from
165.230.30.68 .rutgers.edu internet.rutgers.edu - lt/Directorygt
- Best to control access by IP address rather than
hostname to avoid require DNS lookups for every
attempted connection. - You can place these blocks access control blocks
in the httpd.conf file or in an .htaccess file.
38The Index File
- When a web browser points to a directory, rather
than a particular file (e.g. http//www.internet.r
utgers.edu/II/ITI520 vs. http//www.internet.rutge
rs.edu/II/ITI520/index.html), Apache looks for an
index file, which is the default web page for a
particular directory. - You can specify the name of acceptable index
files by using the DirectoryIndex directive in
the httpd.conf file. - Usage DirectoryIndex filename filename
- Apache will look for the index file names
specified when a request is made to a directory.
39Indexing
- What happens if you type a URL into a browser
that points to a directory rather than a specific
file? - Will load the index file if directory includes
any of the files specified with DirectoryIndex in
httpd.conf DirectoryIndex index.html index.htm - If no index file exists and indexing has been
enabled, will get a directory listing. - If no index file exists and indexing has been
disabled, will get an error message. - Advisable to leave indexing disabled for security
reasons unless there is a specific need for it.
40Indexing, cont.
- To enable indexing in httpd.conf
- Options Indexes
- Fancy indexing generates listing that includes
representative icon, name, last modified, size,
and description - IndexOptions FancyIndexing
- Indexing requires module mod_autoindex, which is
installed by default.