apache web server setup 3

27
Web Technology – Web Server Setup : Chris Uriarte Meeting 3: Advanced Apache Topics Rutgers University Internet Institute Instructor: Chris Uriarte (non IPVH exc)

Upload: information-technology

Post on 19-May-2015

3.881 views

Category:

Technology


0 download

DESCRIPTION

http://www.cju.com/classes/2002/WMB-520/

TRANSCRIPT

Page 1: Apache Web Server Setup 3

Web Technology – Web Server Setup : Chris Uriarte

Meeting 3: Advanced Apache Topics

Rutgers University Internet Institute

Instructor: Chris Uriarte(non IPVH exc)

Page 2: Apache Web Server Setup 3

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.

Page 3: Apache Web Server Setup 3

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

browsers…Netscape 2.0/IE 3.0)

Page 4: Apache Web Server Setup 3

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

Page 5: Apache Web Server Setup 3

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

www.hisdomain.com

165.145.26.110

SERVER

NIC

Page 6: Apache Web Server Setup 3

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.

Page 7: Apache Web Server Setup 3

Web Technology – Web Server Setup : Chris Uriarte

Setting-Up IP-Based Virtual Hosting, Con’t.

• 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.

Page 8: Apache Web Server Setup 3

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.

Page 9: Apache Web Server Setup 3

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 using…therefore your httpd.conf can have multiple <VirtualHost> blocks.

Page 10: Apache Web Server Setup 3

Web Technology – Web Server Setup : Chris Uriarte

IP-Based VH Configuration con’t.• Typical <VirtualHost> block in httpd.conf:<VirtualHost www.bearsnest.org>

DocumentRoot /home/www/bearsnest/htdocsServerAdmin [email protected] www.bearsnest.orgErrorLog logs/bears-error_logTransferLog logs/bears-access_logRedirect /adprotech http://www.adprotech.comAlias /staff /home/staff/chrisjur/htdocs/bn/staff

</VirtualHost>

• The key: Vitual hosts will have their own unique DocumentRoot – different content for different sties.

Page 11: Apache Web Server Setup 3

Web Technology – Web Server Setup : Chris Uriarte

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 <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.

Page 12: Apache Web Server Setup 3

Web Technology – Web Server Setup : Chris Uriarte

Name-Based VH ExamplesNameVirtualHost 165.230.30.68<VirtualHost www.yoursite.org>

DocumentRoot /home/www/yoursite/htdocsServerAdmin [email protected] www.yoursite.comErrorLog logs/yoursite-error_log

</VirtualHost><VirtualHost www.mysite.com>

DocumentRoot /home/www/mysite/htdocsServerAdmin [email protected] www.mysite.orgErrorLog logs/mysite-error_log

</VirtualHost>

Page 13: Apache Web Server Setup 3

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

Page 14: Apache Web Server Setup 3

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 client’s system.

– Examples: JavaScript, Java Applets, client-side image maps.

– Web server administrator needs to see that MIME types are set correctly.

Page 15: Apache Web Server Setup 3

Web Technology – Web Server Setup : Chris Uriarte

Dynamic Content, con’t.• 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.

Page 16: Apache Web Server Setup 3

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.

Page 17: Apache Web Server Setup 3

Web Technology – Web Server Setup : Chris Uriarte

Enabling Server Side Includes, con’t…

• 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 SSI’s.

Page 18: Apache Web Server Setup 3

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 client’s browser.

<!—echo var=“LAST_MODIFIED”-->

Prints the last time your HTML file was modified.

Page 19: Apache Web Server Setup 3

Web Technology – Web Server Setup : Chris Uriarte

Server Side Includes, con’t.

• 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)

Page 20: Apache Web Server Setup 3

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.

Page 21: Apache Web Server Setup 3

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/cgi-bin/”

– 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

Page 22: Apache Web Server Setup 3

Web Technology – Web Server Setup : Chris Uriarte

Enabling CGI: Example 1

• Sometimes it’s 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/”

Page 23: Apache Web Server Setup 3

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>

Page 24: Apache Web Server Setup 3

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)

Page 25: Apache Web Server Setup 3

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-user’s browser type (source at /home/staff/chrisjur/public_html/cgi-bin/test.cgi)

• http://blender.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/staff/chrisjur/public_html/cgi-bin/shell.cgi)

Page 26: Apache Web Server Setup 3

Web Technology – Web Server Setup : Chris Uriarte

More CGI Examples…

• http://blender.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/staff/chrisjur/public_html/cgi-bin/feedback.cgi) which emails form contents to a recipient and performs some validation logic.

Page 27: Apache Web Server Setup 3

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