Meeting 3: Advanced Apache Topics - PowerPoint PPT Presentation

About This Presentation
Title:

Meeting 3: Advanced Apache Topics

Description:

General term used when you run more than one website on a single system. ... www.yahoo.com. sports.yahoo.com. 216.32.74.52. 216.115.105.243. SERVER. NIC ... – PowerPoint PPT presentation

Number of Views:128
Avg rating:3.0/5.0
Slides: 28
Provided by: cjuri
Category:

less

Transcript and Presenter's Notes

Title: Meeting 3: Advanced Apache Topics


1
Meeting 3 Advanced Apache Topics
  • Rutgers University Internet Institute
  • Instructor Chris Uriarte
  • (non IPVH exc)

2
Virtual Hosting
  • General term used when you run more than one
    website on a single system.
  • Allows ISPs and hosting providers to make money
    by sharing resources among clients. Allows
    companies and individuals to save time and money
    - a single machine can host many websites.

3
Options for Hosting More than One Website on a
Single System
  • Run separate instances of httpd servers httpd f
    /usr/local/apache/conf/httpd-virtual.conf
  • Run a server that will listen on multiple ports
    and serve different content depending on the
    port.
  • True Virtual Hosting - Allows multiple IP address
    and/or host names to be served through a single
    Apache server.
  • IP-Based
  • Name-Based (not supported by very early Web
    browsersNetscape 2.0/IE 3.0)

4
Virtual Hosting IP Based
  • You must configure your machine to listen for
    multiple IP addresses. One NIC binds to multiple
    IP addresses
  • One hostname is associated with each IP address

SERVER
www.yahoo.com
216.32.74.52
NIC
216.115.105.243
sports.yahoo.com
5
Virtual Hosting Name Based
  • A machine can host multiple websites using only 1
    IP address
  • All hostnames have the same IP address
  • Becoming more and more popular.

SERVER
some.mydomain.com
165.145.26.110
NIC
www.hisdomain.com
6
Setting-Up IP-Based Virtual Hosting An Overview
  • Once you have secured the domain names/hostnames
    you want to use for your website, you need to
    assign each of them a unique IP address.
  • Some ISPs can assign you additional IP addresses.
  • Blocks of IP addresses are usually assigned with
    business T1s or DSL lines.

7
Setting-Up IP-Based Virtual Hosting, Cont.
  • You need to have DNS properly configured for your
    domains, e.g. The world needs to know that
    www.yourdomain.com is at the IP address
    123.23.34.56.
  • Remember, your ISP can usually provide DNS
    service for your domains.

8
IP-Based Virtual Hosting Setting Up Your Machine
  • Your web server needs to be configured to listen
    for the IP addresses related to your websites
  • UNIX-based OSs allow you to configure multiple IP
    addresses using the ifconfig command (must be run
    as root)
  • Usage ifconfig interfaceltsub-numbergt IP
  • e.g ifconfig eth00 165.230.30.71
  • ifconfig eth01 165.230.30.72
  • WinNT IP setup through Network control panel.

9
Configuring Apache for IP-Based Virtual Hosting
  • Configuring Apache for Virtual Hosting is quite
    simple Simply add a ltVirtualHostgt block within
    the httpd.conf file.
  • Format
  • ltVirtualHost IP-or-HOSTNAMEPortgt
  • Any Valid httpd.conf directives
  • lt/VirtualHostgt
  • Required for each Virtual Host website your are
    usingtherefore your httpd.conf can have multiple
    ltVirtualHostgt blocks.

10
IP-Based VH Configuration cont.
  • Typical ltVirtualHostgt block in httpd.conf
  • ltVirtualHost www.bearsnest.orggt
  • DocumentRoot /home/www/bearsnest/htdocs
  • ServerAdmin chrisjur_at_cju.com
  • ServerName www.bearsnest.org
  • ErrorLog logs/bears-error_log
  • TransferLog logs/bears-access_log
  • Redirect /adprotech http//www.adprotech.com
  • Alias /staff /home/chrisjur/htdocs/bn/staff
  • lt/VirtualHostgt
  • The key Vitual hosts will have their own unique
    DocumentRoot different content for different
    sties.

11
Steps for Setting-Up Name-Based Virtual Hosting
  • When setting up Name-based virtual hosts, you
    need to add the special NameVirtialHost Directive
    to your httpd.conf
  • NameVirtualHost ltYour IP Addressgt
  • Which tells Apache the single IP address you will
    use for all your websites.
  • Now simply add ltVirtualHostgt blocks for each of
    your website domains.

12
Name-Based VH Examples
  • NameVirtualHost 165.230.30.68
  • ltVirtualHost www.yoursite.orggt
  • DocumentRoot /home/www/yoursite/htdocs
  • ServerAdmin you_at_yoursite.com
  • ServerName www.yoursite.com
  • ErrorLog logs/yoursite-error_log
  • lt/VirtualHostgt
  • ltVirtualHost www.mysite.comgt
  • DocumentRoot /home/www/mysite/htdocs
  • ServerAdmin me_at_mysite.com
  • ServerName www.mysite.org
  • ErrorLog logs/mysite-error_log
  • lt/VirtualHostgt

13
Virtual Hosting Recap
  • Get your DNS configured for each domain
  • IP-based Virtual Hosting vs. Name-based Virtual
    Hosting
  • Configure your server for multiple IP addresses
    if using IP-based Virtual Hosting
  • Create new directories for new Document Roots
  • Add ltVirtualHostgt blocks to your httpd.conf

14
Delivering Dynamic Content
  • Two ways of delivering dynamic content for the
    Web client-side or server-side technologies
  • Client-Side
  • Elements are downloaded to the browser and
    execute on the clients system.
  • Examples JavaScript, Java Applets, client-side
    image maps.
  • Web server administrator needs to see that MIME
    types are set correctly.

15
Dynamic Content, cont.
  • Server-Side
  • Server processes on-the-fly content that is
    passed to client browser.
  • Examples server-side includes, CGI (Common
    Gateway Interface), server-side image maps, ASP
    (Active Server Pages), Java Servlets. PHP
  • Server-side technologies generally require
    additional configuration of the Web server in
    order to function properly. Usually require
    specific Apache modules.
  • Enabling server-side technologies generally has
    security implications.

16
Server-Side Includes
  • Server-side includes are directives that can be
    placed in HTML documents to execute other
    programs or to output data.
  • Requires mod_include.
  • To enable SSI, make the following modifications
    to httpd.conf
  • Options Includes (or IncludesNOEXEC)
  • The options directive only works within a
    specific Directory or VirtualHost container.

17
Enabling Server Side Includes, cont
  • To tell Apache how to interpret SSI documents,
    add the following to httpd.conf
  • AddType text/html .shtml
  • AddHandler server-parsed .shtml
  • These lines are usually commented out by default,
    so you just need to uncomment them.
  • All files with indicated extension(s) will be
    parsed by Apache server prior to being
    transmitted to the client, e.g. web page files
    that end with .shtml can contain SSIs.

18
Server-Side Includes Examples
  • The general form of the SSI directive is
    lt!--command parametervalue--gt For example
  • lt!include fileinclude.html--gt
  • Will insert the contents of the file file
    include.html when displayed in the clients
    browser.
  • lt!echo varLAST_MODIFIED--gt
  • Prints the last time your HTML file was modified.

19
Server Side Includes, cont.
  • The Server Side Include in the .html file is
    evaluated by Apache and the output is displayed
    to the client.
  • See Appendix E in Professional Apache for a guide
    to includes that Apache understands.
  • Check out http//iti.rutgers.edu/chrisjur/ssi.sht
    ml for an example ( source file is
    /home/chrisjur/public_hthml/ssi.html on
    iti.rutgers.edu server)

20
CGI
  • CGI (Common Gateway Interface) is a protocol for
    getting, processing, and returning information
    through Web pages.
  • CGI programs or scripts can be written in a
    variety of languages including Perl, Python, VB
    Script, JavaScript, and C.
  • CGI scripts are generally triggered by data
    supplied by the client.

21
Enabling CGI
  • There are two ways to enable Apache to recognize
    CGI scripts
  • To allow CGI scripts in one system-wide directory
    outside of the document root (All CGI programs
    must be placed in one directory)
  • ScriptAlias /cgi-bin /home/itiXXXX/apache/cgi-bin
    /
  • Within a container
  • Options ExecCGI ltother optionsgt
  • SetHandler cgi-script
  • To enable files with only specific extensions as
    CGI scripts use AddHandler instead of
  • SetHandler AddHandler cgi-script .cgi

22
Enabling CGI Example 1
  • Sometimes its convenient to have one
    centrialized cgi-bin directory where all CGI
    programs are kept.
  • You can access all the scripts through
    http//www.domain.com/cgi-bin/scriptname
  • To do this at the following line to httpd.conf
  • ScriptAlias /cgi-bin /home/itiXXXX/apache/cgi-bin
    /

23
Enabling CGI Example 2
  • You can enable CGI scripts to be placed in any
    directory by specifying some CGI directives in a
    directory container within the httpd.conf or an
    .htaccess file. This allows CGI execution in the
    directory specified
  • ltDirectory /home/user/htdocsgt
  • Options ExecCGI (other options)
  • SetHandler cgi-script
  • lt/Directorygt

24
Limiting CGI Access
  • If you do not have Options ExecCGI or a
    ScriptAlias directive, the execution of CGI
    programs will be denied.
  • You can limit CGI access to only programs that
    end with a specific extension
  • SetHandler AddHandler cgi-script .cgi
  • (limits CGI execution to programs that only end
    in .cgi)

25
CGI Examples
  • http//iti.rutgers.edu/chrisjur/cgi-bin/test.cgi
    - CGI script written in Perl, simply outputs
    current time and the end-users browser type
    (source at /home/chrisjur/public_html/cgi-bin/test
    .cgi)
  • http//iti.rutgers.edu/chrisjur/cgi-bin/shell.cgi
    - Written as a shell script in, prints current
    date/time and lists files in its directories
    (source at /home/chrisjur/public_html/cgi-bin/shel
    l.cgi)

26
More CGI Examples
  • http//iti.rutgers.edu/chrisjur/feedback.html -
    More traditional example of what CGI is used for.
    An HTML form posts to a CGI script written in
    Perl (/home/chrisjur/public_html/cgi-bin/feedback.
    cgi) which emails form contents to a recipient
    and performs some validation logic.

27
Exercise Enabling CGI
  • Enable CGI via the ScriptAlias directive in your
    httpd.conf. Specify a cgi-bin directory to place
    all your CGI scripts.
  • Copy /home/chrisjur/test.cgi script to your
    cgi-bin directory. Make the test.cgi script
    executeable (chmod ax test.cgi)
  • Access the script via http//iti.rutgers.eduYourP
    ort/cgi-bin/test.cgi
Write a Comment
User Comments (0)
About PowerShow.com