Meeting 3: Advanced Apache Topics: Rutgers University Internet Institute Instructor: Chris Uriarte

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 27

Meeting 3: Advanced Apache Topics

Rutgers University Internet Institute Instructor: Chris Uriarte


(non IPVH exc)

Web Technology Web Server Setup : Chris Uriarte

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.

Web Technology Web Server Setup : Chris Uriarte

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)
Web Technology Web Server Setup : Chris Uriarte

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
www.yahoo.com sports.yahoo.com 216.32.74.52 216.115.105.243 SERVER NIC

Web Technology Web Server Setup : Chris Uriarte

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.
some.mydomain.com 165.145.26.110 www.hisdomain.com SERVER

NIC

Web Technology Web Server Setup : Chris Uriarte

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.
Web Technology Web Server Setup : Chris Uriarte

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.

Web Technology Web Server Setup : Chris Uriarte

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 interface:<sub-number> IP
e.g: ifconfig eth0:0 165.230.30.71 ifconfig eth0:1 165.230.30.72

WinNT IP setup through Network control panel.


Web Technology Web Server Setup : Chris Uriarte

Configuring Apache for IP-Based Virtual Hosting


Configuring Apache for Virtual Hosting is quite simple: Simply add a <VirtualHost> block within the httpd.conf file. Format:
<VirtualHost IP-or-HOSTNAME:Port> #Any Valid httpd.conf directives </VirtualHost>

Required for each Virtual Host website your are usingtherefore your httpd.conf can have multiple <VirtualHost> blocks.
Web Technology Web Server Setup : Chris Uriarte

IP-Based VH Configuration cont.


Typical <VirtualHost> block in httpd.conf:
<VirtualHost www.bearsnest.org> DocumentRoot /home/www/bearsnest/htdocs ServerAdmin chrisjur@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/staff/chrisjur/htdocs/bn/staff </VirtualHost>

The key: Vitual hosts will have their own unique DocumentRoot different content for different sties.
Web Technology Web Server Setup : Chris Uriarte

Steps for Setting-Up NameBased Virtual Hosting


When setting up Name-based virtual hosts, you need to add the special NameVirtialHost Directive to your httpd.conf:
NameVirtualHost <Your IP Address>

Which tells Apache the single IP address you will use for all your websites. Now simply add <VirtualHost> blocks for each of your website domains.

Web Technology Web Server Setup : Chris Uriarte

Name-Based VH Examples
NameVirtualHost 165.230.30.68 <VirtualHost www.yoursite.org> DocumentRoot /home/www/yoursite/htdocs ServerAdmin you@yoursite.com ServerName www.yoursite.com ErrorLog logs/yoursite-error_log </VirtualHost> <VirtualHost www.mysite.com> DocumentRoot /home/www/mysite/htdocs ServerAdmin me@mysite.com ServerName www.mysite.org ErrorLog logs/mysite-error_log </VirtualHost>

Web Technology Web Server Setup : Chris Uriarte

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 <VirtualHost> blocks to your httpd.conf

Web Technology Web Server Setup : Chris Uriarte

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.

Web Technology Web Server Setup : Chris Uriarte

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.

Web Technology Web Server Setup : Chris Uriarte

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.

Web Technology Web Server Setup : Chris Uriarte

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.

Web Technology Web Server Setup : Chris Uriarte

Server-Side Includes Examples


The general form of the SSI directive is: <!-#command parameter=value--> For example:
<!include file=include.html--> Will insert the contents of the file file include.html when displayed in the clients browser.

<!echo var=LAST_MODIFIED-->
Prints the last time your HTML file was modified.

Web Technology Web Server Setup : Chris Uriarte

Server Side Includes, cont.


The Server Side Include in the .html file is evaluated by Apache and the output is displayed to the client. Check out http://blender.rutgers.edu/~chrisjur/ssi.shtml for an example ( source file is /home/staff/chrisjur/public_html/ssi.shtml on blender.rutgers.edu server)

Web Technology Web Server Setup : Chris Uriarte

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.

Web Technology Web Server Setup : Chris Uriarte

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/students/<username>/apache/cgibin/

Within a container:
Options ExecCGI <other options> SetHandler cgi-script

To enable files with only specific extensions as CGI scripts use AddHandler instead of
SetHandler: AddHandler cgi-script .cgi
Web Technology Web Server Setup : Chris Uriarte

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/students/<username>/apache/cgi-bin/

Web Technology Web Server Setup : Chris Uriarte

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:
<Directory /home/user/htdocs> Options ExecCGI (other options) SetHandler cgi-script </Directory>
Web Technology Web Server Setup : Chris Uriarte

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)


Web Technology Web Server Setup : Chris Uriarte

CGI: Examples
http://blender.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/staff/chrisjur/public_html/cgi-bin/test.cgi) http://blender.rutgers.edu/~chrisjur/cgibin/shell.cgi - Written as a shell script in, prints current date/time and lists files in its directories (source at /home/staff/chrisjur/public_html/cgibin/shell.cgi)
Web Technology Web Server Setup : Chris Uriarte

More CGI Examples


http://blender.rutgers.edu/~chrisjur/feedbac k.html - More traditional example of what CGI is used for. An HTML form posts to a CGI script written in Perl (/home/staff/chrisjur/public_html/cgibin/feedback.cgi) which emails form contents to a recipient and performs some validation logic.
Web Technology Web Server Setup : Chris Uriarte

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/staff/chrisjur/test.cgi script to your cgi-bin directory. Make the test.cgi script executeable (chmod a+x test.cgi) Access the script via http://blender.rutgers.edu:YourPort/cgi-bin/test.cgi

Web Technology Web Server Setup : Chris Uriarte

You might also like