CS 268 IP addressing Domain names Domain name servers Host configuration file URLs IPv4 address space 232 = 4.2 * 109 ◦ 32 bit address ◦ four 0-255 sections (in base 10): xxx.xxx.xxx.xxx 137.28.40.1 -> address currently assigned to my laptop in binary the above 32 bit address is: 10001001 00011100 00101010 00000001 IPv6 address space 2128 = 3.4 * 1038 ◦ ◦ ◦ ◦ ◦ fe80::e510:9de4:c9d:a9ee -> IPv6 address currently assigned to my laptop 340,282,366,920,938,463,463,374,607,431,768,211,456 It's enough addresses for many trillions of addresses to be assigned to every human being on the planet. The earth is about 4.5 billion years old. If we had been assigning IPv6 addresses at a rate of 1 billion per second since the earth was formed, we would have by now used up less than one trillionth of the address space. The earth's surface area is about 510 trillion square meters. If a typical computer has a footprint of about a tenth of a square meter, we would have to stack computers 10 billion high blanketing the entire surface of the earth to use up that same trillionth of the address space. http://www.google.com/intl/en/ipv6/statistics/ http://en.wikipedia.org/wiki/IPv4 http://en.wikipedia.org/wiki/IPv6 IPv6 addresses are eight groups of four hexadecimal digits; each group is separated by a colon (:) ◦ ◦ In binary: 0010000111011010 0000000011010011 0000000000000000 0010111100111011 0000001010101010 0000000011111111 1111111000101000 1001110001011010 In hex: 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A In 2012, despite celebrating its 14-year anniversary as a Standards Track protocol, IPv6 is still in its infancy in terms of general world-wide deployment. ◦ In April 2011 2 of the 5 Regional Internet Registries (RIRs) ran out A recent study by Google indicates that penetration is still less than one percent of Internet traffic in any country ◦ Found a study from 6/2013 showing it has increased to about 1.5% ◦ Found another from 12/2013 showing it up to 5% http://arstechnica.com/business/2013/01/ipv6-takes-one-step-forward-ipv4-two-steps-back-in-2012/ Symbolic representations ◦ Recognizable names, to numerically addressed internet resources www.uwec.edu ◦ corresponds to: 137.28.3.13 Use nslookup utility to verify this (now blocked on this campus) Try this: http://centralops.net/co/ Each label to the left specifies a subdivision (sub domain) of the domain to the right of it. ◦ Note: “sub domain” expresses relative dependence ◦ For example: uwec is a sub domain of the edu domain, and www is a sub domain of the domain uwec.edu. ◦ In theory, this subdivision can go down 127 levels. A hostname refers to a domain name that has one or more associated IP addresses ◦ 'www.uwec.edu' and uwec.edu' domains are both hostnames ◦ the 'edu' domain is not. Map domain names to ip addresses Required by class B domains and above Hierarchy of domain name servers If not found in local server, request moves to server higher in hierarchy. ◦ the term "root name server" is generally used to describe the thirteen well-known root name servers that implement the root namespace domain for the Internet's official global implementation of the Domain Name System Alternate way to resolve domain names without using the Domain Name System Text file that contains IP addresses separated by at least once space and then a domain name, with each entry on its own line Example: # The localhost entry should be in every HOSTS file and is used # to point back to yourself. No longer needed for Windows 7 127.0.0.1 localhost # Test server for the website 192.168.1.2 test.beepingcomputer.com # Block known malicious sites 127.0.0.1 admin.abcsearch.com 127.0.0.1 www3.abcsearch.com 127.0.0.1 www.abcsearch.com For MS Windows OS it is found here: C:\WINDOWS\system32\drivers\etc For Linux it is usually found here: /etc/hosts Uniform Resource Locator ◦ Or "Web Address" ◦ Example: http://cs.uwec.edu/~morriscm/priv/Spr14/CS268/268S14_syllabus.htm Consists of: ◦ protocol identifier – http:// or ftp:// etc. ◦ domain (and host) name cs.uwec.edu ◦ path and file to access ~morriscm/priv/Spr14/CS268/268S14_syllabus.htm http://cs.uwec.edu/~morriscm/ A. default.htm B. home.htm C. index.htm D. impossible to tell E. This is an error – no file is specified Almost all web sites could be handled reliably by most of the web servers on the market today. For most of these sites the choice of which web server to use is irrelevant. The choice of a web server is really only important for the largest sites and those that plan to have some type of application or service. In fact, most of these application sites will be extremely simple. Changing between platforms would be a small task. In these cases the choice of server is not particularly important. We are left with complex, large mission critical sites where server choice is important. First, there is a large investment of time and development resources into creating the site. Here the choice of web server is important to reduce the development time and select a solution which will exist in the long term. These sites place a high priority on reliability and scalability. The investment in hardware and operational resources will be large and difficult to change (eg: Unix vs Windows). *http://www.e-gineer.com/v1/articles/web-server-popularity.htm Note: an Active site can have many hostnames associated with it from: http://news.netcraft.com/ http://news.netcraft.com/active-sites/ http://news.netcraft.com/archives/2014/04/02/april-2014-web-server-survey.html Sites actively altered/modified by site developers ◦ Only sites with distinct content are counted Why does this matter? ◦ A considerable number of sites are generated automatically ◦ Happens when a customer purchases a domain name ◦ Or when an ISP like GoDaddy locks up a number of domain names (owns17million hostnames – not all currently used) http://news.netcraft.com/archives/2014/04/02/april-2014-web-server-survey.html http://news.netcraft.com/archives/2014/04/02/april-2014-web-server-survey.html http://news.netcraft.com/archives/2014/04/02/april-2014-web-server-survey.html http://news.netcraft.com/archives/2014/04/03/most-reliable-hosting-company-sites-in-march-2014-2.html ... http://searchdns.netcraft.com/?host=uwec.edu&x=0&y=0 Using your VM Ware server Web Servers ◦ Apache 2.2.x ◦ Tomcat 6.x ◦ Internet Information Services Administering a Web Server ◦ ◦ ◦ ◦ ◦ Aliases/Contexts/Virtual Directories Home folder Default files Application folders Security issues Start the VMware Vsphere Client application Enter UWEC\yourUsername Enter your UWEC password Ignore the Certificate Warnings dialog (if displayed) First time in – click the Inventory icon in the Inventory tab (upper left of the screen). Then open the bubbles.cs.uwec.edu entry (click + to left of this). Right click your username entry, select Power and Power On Next, right click your username again and select Open Console (If you see a message that the virtual machine might have been moved or copied. Keep the default "copied" choice and click OK) When prompted to press Ctrl-Alt-Del to begin, first click in the Player window to direct input to the virtual pc, then , press Ctrl-Alt-Insert (instead of Ctrl-Alt-Del). Login as Administrator with the password RedBluegreen115 (don't change this password – I want to be able to login and check your work if needed). If/when asked to activate windows click "Ask me later." To move the mouse out of your virtual server press Ctrl-Alt at the same time. To return, just click in the server's window. Once you have logged in, you can start making changes to your server. However, please be aware that although this is a virtual machine, it still acts as a real one, so it does need to be shut down properly. Loss of Once you have logged in, you can start making changes to your server. However, please be aware that although this is a virtual machine, it still acts as a real one, so it needs to be shut down properly. Loss of data can occur from a server crash, so don’t shut down improperly unless you absolutely have to. To shut down your server, go to the start menu and click shut down. It will ask you why you are shutting down your server. You can choose one of the options from the list and/or put in a comment. Note you have to do at least one of the two. After the VM has been properly shut down, you can close the VMware Player. Last year due to bandwidth issues, you could only run your server on campus from a CS lab. Don't know if this is the same this year (a different server is hosting the virtual servers this year). Later in this slideshow you will learn how to set up web servers. When it is time to test connecting to your server from another computer – your server has to be running. You can do this testing from the "same" computer since the VM Ware computer is a different "virtual" computer running in your current computer. (Different IP address, operating system, everything…) Respond to requests for Web pages by sending the result of processing those pages to the viewer For a dynamic Web page, this involves executing all of the code on the page and returning the result to the viewer URL identifies a specific page ◦ The first part of the URL names the server and port number. The default port number, if none is specified in the URL, is 80 ◦ There can be more than one Web server running on a given machine, each on a different port Usually, a Web server will host more than one site ◦ Files of all Web sites can be stored in folders in the Web root folder of the server ◦ Or, the folders can be placed in other locations in the server's file system And pointers are created in the Web server configuration that point to the actual folders containing the sites. These pointers are referred to by different names aliases (Apache) contexts (Apache-Tomcat). virtual directories (Microsoft IIS) Number one server in the world (NGINX gaining ground) HTTP webserver – 57-65% of web sites in the world Current version 2.4.9 (as of 4/28/2014) Name ‘Apache’ was chosen from ... ◦ The name 'Apache' was chosen for the Native American Indian tribe of the Apache, well-known for their superior skills in warfare strategy and their inexhaustible endurance. Probably not… It makes a cute pun on "a patchy web server" -- a server made from a series of patches -but this was not its origin (according to Apache - really??). Why so popular? ◦ ◦ ◦ free highly configurable implements many features security/access control, virtual hosting, CGI script execution extensible with third-party modules servlet engine, security, … ◦ platform independent (support all kinds of machines) ◦ Windows, Unix, Linux, Solaris, Mac, etc. 27 - Apache Software Foundation non profit organization maintains and develops open source programs protects ‘apache’ brand For more information go to: - http://www.apache.org 28 Java-based Servlet container with JSP environment How many in use? ◦ Hard to say – most operate behind an Apache front end ◦ But – "lots" Apache Foundation's reference implementation of the JavaServer Pages and Servlet technologies Two modes - standalone: default mode for Tomcat - add-on: works as delegator Official Website - http://jakarta.apache.org/tomcat/ 29 From* Tomcat is now much improved over earlier versions Is suitable as primary web server (ETrade, Webshots, etc.) Doesn't handle load balancing, failover, etc. ◦ ◦ ◦ Apache best used as front end handling this All pages, however served up by Tomcat servers Security is still better handled by Apache A number of commercial Web application servers are built on Tomcat: ◦ IBM's WebSphere JBoss and many others *What an idea - reading! - Professional Apache Tomcat 6 by Chopra Li, and Genender – Wrox 2007 Tomcat has a lot of pros But there are cons as a standalone server. ◦ ◦ ◦ ◦ ◦ not as fast as Apache for static pages (I found conflicting data on this) not as configurable as Apache not as robust as Apache (no longer true?) load balancing is done by Apache or other product Apache servers implement FAILOVER via clustering (one server fails another takes over transparently) 31 Often installed under the <tomcat home>/webapps directory In a subfolder named after the Web Application ◦ This name also used in URL accessing the application ◦ Example folder structure: webapps/ Notice that packages are Assignment1/ CSS/ expanded into subfolders Images/ (edu.uwec.cs.morrism) ◦ Url accessing home.htm: http://address/Assignment1/home.htm ◦ Url accessing Courses servlet: http://address/Assignment1/Courses JSLibrary/ META-INF/ WEB-INF/ web.xml classes/ edu/ uwec/ cs/ morriscm/ Courses.class Directory.class lib/ mysql-connector-java-5.0.5-bin.jar tags/ home.htm StudentDirectory.htm Public Resources ◦ Everything outside the WEB-INF and META-INF folders ◦ jsp, html, css, graphics, subfolders, etc. Private Resources (accessible from server-side programs) ◦ WEB-INF directory Classes servlets and utility classes, including JavaBeans lib libraries – jar files tags optional – if present contains configuration files for tag libraries configuration files have .tld file extensions ◦ META-INF directory Optional – if present contains deployment info for tools that create war files and resources applications may depend on MANIFEST.MF list of jar files application relies upon (used to verify they are all there) context.xml configures web apps "context" (can also be done in other places) http://www.webtide.com/choose/jetty.jsp Java application server Implementations of the 2.5 servlet specification Optional extras giving many JEE features (same as Tomcat) ◦ But - Tomcat is first and foremost an application server ◦ Jetty - first and foremost a set of software components that offer HTTP and servlet services Jetty can be invoked and installed as a stand alone application server or it can be easily embedded in an application or framework as a HTTP component, as a simple servlet engine, as a feature rich servlet engine or as part of a full JEE environment. https://www.webtide.com/choose/jetty.jsp Sun Microsystem's (now Oracle's) Tomcat derivative Well integrated with Netbeans Not clear that there is any substantive advantage for Tomcat or Glassfish ◦ Probably best to develop with whatever you will ultimately deploy to The dominant market share once held by Tomcat is in decline, while Jetty's market share has been steadily increasing over the last 18 months to the point where it now has 80% of Tomcat's market share as reported in the Netcraft server surveys (which can't detect Tomcat running behind Apache): http://www.infoq.com/news/2009/08/google-chose-jetty http://news.netcraft.com/archives/2003/04/10/java_servlet_engines.html http://www.servlets.com/engines/ http://www.netwhisperer.com/2011/07/18/introducing-winstone-an-ultra-lightweight-alternative-to-tomcat-and-jetty/ Interesting link to web server comparisons: http://en.wikipedia.org/wiki/Comparison_of_ web_server_software Apache for load balancing, fault tolerance + Tomcat for everything else. (Many say Tomcat should be used only for dynamic content) Main idea: -let Tomcat listen to Apache - let Apache to talk to Tomcat - apache delegates processing of JSPs, and servlets to Tomcat Problem -how do they communicate? Apache was written in C but Tomcat is written 100% Java -> we need something between them 39 Communication mechanism between Tomcat and Apache: ◦ termed “web server adapter” or “connector” ◦ implemented as library (e.g., mod_jk.so) ◦ uses/manages TCP connections ◦ uses the ajp13 communication protocol (specified in server.xml file in tomcat subdirectory) 40 AND 1 http://port 80 Apache Client resource 5 adapter Tomcat 3 2 ajp13 TCP/8009 1. 2. 3. 4. 5. 4 Request Apache delegates Tomcat servicing of JSPs, and servlets Tomcat performs JSPs, and Servlets services Tomcat sends results to Apache Apache sends response to client http://blog.search-computing.net/2010/04/load-balancing-with-apache-a-tutorial-on-mod_proxy_balancer-installation-and-configuration/ 41 1. 2. 3. 4. 5. 6. Install Java SDK Install Apache server Install Tomcat Install connector (mod_jk.so) Configure Test 42 Download and install the latest version of SDK 1. Select Control Panel - http://java.sun.com/javaee/downloads/index.jsp Set the JAVA_HOME environment variable 2. Select System 4. Click Environment Variables… 3. Select Advanced system settings 6 7 8 5 Result First step is to stop the IIS web server (to avoid port 80 conflicts) if it is installed (it isn't on our vmware servers – so you won't have to do this). 1. Start/Administrative Tools/Services 2. Find Internet Information Services Then right click it. select Properties, and set Startup type to Manual (and stop the service if it is running). 45 Current Version - Apache 2.4.2 (2.2 on lab virtual servers) - known as the current stable release - a full setup package is available as .exe file Download an Apache file for Windows at http://httpd.apache.org/download.cgi (e.g., httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi) If installing on a Windows Server – stop IIS using the Services manager first. Follow the instructions provided by installation wizard 46 Specify: - network Domain as “uwec.edu” - server Name as accept default (and record it) - your e-mail address - for All Users, “on Port 80” 47 A. B. C. D. E. File access problems were caused by running the install program from \\cass1\deptdir A previous installation of Apache2.2 is running A different Web server is already running on Port 80 Windows Server 2008's Firewall needs to be disabled No Idea To test successful installation open your webrowser and type http://localhost/ You should see the default Apache webpage running on the port 80 localhost. 49 The latest version is Tomcat 7.x.x Grab the Windows EXE distribution for Tomcat at http://tomcat.apache.org/download-70.cgi Note: already installed on your VMWare Windows 2008 Server (no need to do this again) For Windows 7 use 64 bit Extract the zipped files into the folder you want to run tomcat from ◦ Doesn't have to be in c:\Program Files Start a cmd session as an Administrator Go to the tomcat bin folder cd "C:\Wherever\Tomcat 7.0\bin" Run service.bat Right click Start the Services utility ◦ Start/Control Panel/Administrative Tools/Services To test successful installation open your web browser and type http://localhost:8080 If you can see the default Tomcat webpage running on the port 8080 localhost, bingo! 53 Download the connector binary at: ◦ http://jakarta.apache.org/site/downloads/index.html ◦ for Windows from a Jakarta mirror site Rename the file to mod_jk.so (.so stands for shared object) ◦ e.g., mod_jk-1.2.27-httpd-2.2.10.so - or whatever latest version is - to mod_jk.so) Save the rename file in the “modules” directory under where the Apache is installed (e.g., C:\Program Files\Apache Group\modules\mod_jk.so ) Story of origins of Tomcat and Apache and the connector: http://www.wellho.net/solutions/java-the-proxy-jserv-jk-jk2-warp-and-jk-story.html 54 Configure the Connector In the Apache2.2/conf folder open httpd.conf Not seeing the .conf file extension? ◦ From the top Windows Explorer Tools menu Select Folder Options Select the View tab Uncheck "Hide extensions for known file types" Add the at the end of the file: # Include TOMCAT Include conf/extra/httpd-tomcat.conf In Apache2.2/conf/extra folder Create a file named httpd-tomcat.conf Add this to it: # Load mod_jk module LoadModule jk_module modules/mod_jk.so # Where to find workers.properties JkWorkersFile conf/workers.properties # Sample mount JkMount /Hello/* ajp13 JkMount /examples/* ajp13 In Apache2.2/conf Create a file named workers.properties Add this to it: # Definition for Ajp13 worker worker.list=ajp13 worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13 Create a folder in Apache_Tomcat_7\webapps\ named: Hello (case sensitive) Apache_Tomcat_7\webapps\Hello Place jsp files there For example, create hello.jsp with the following code in the Hello folder: <%@ page import="java.util.*" %> <html> <body> <% Date date = new Date(); %> Hello! The time is now <%= date %> </body> </html> Open the Services utility Note: the order of the following steps matters! ◦ ◦ ◦ ◦ ◦ Right click Apache2.2 and select Stop Right click Apache Tomcat and select Stop Right click Apache Tomcat and select Start Right click Apache2.2 and select Start If Apache2.2 won't start recheck previous steps – make sure you copied and renamed mod_jk.so correctly (Windows Explorer doesn't show the file extension and it is easy to accidentally name this mod_jk.so.so. Run hello.jsp with either: http://localhost:8080/Hello/hello.jsp http://localhost/Hello/hello.jsp -- this forwards from apache to tomcat Both should work and display: Hello! The time is now Sat Apr 30 15:57:37 CDT 2012 your day and time will vary depending on when you do this Windows Server 2008 Firewall blocks outside access to server processes unless you make the following changes (your apache/tomcat will work from localhost – but not from other computers until you do this) ◦ Start the Windows Firewall utility (Start/Control Panel/Windows Firewall ◦ Select Allow a program… Click the Allow another program… button ◦ Click Browse and add the httpd.exe program Found in the Apache2.2/bin folder Adds this entry Do this again for: ◦ Tomcat7.exe Found here: Adds this entry If you followed along, you've tested from localhost Testing requires knowing the IP address of your server ◦ At least in this class – in the "real" world you would register a domain name corresponding to the IP address of your server Open a cmd window (Start/Run/cmd) Type ipconfig Your ip address is: ◦ this example shows the ip address for your instructor's vm ware server – not your server's address After finding your server's ip address, try connecting to it like this (from your lab pc, not your vm ware window): The vmware server's address doesn't begin with 192.168 (at least testing this from my office laptop computer it isn't) – this means it is visible to the entire Internet! Probably not a good idea to leave these running for long periods – no telling who/what might infect/attack them (Web server security is a big topic). If your server's address "does" begin with 192.168 you can only test accessing it from other lab computers on the same router. Locate the conf/httpd.conf file in the Apache install directory. Add an entry near the end of the file that looks like this. Be careful that it is not in the middle of some other entry: Alias /site_name "C:\pathname_to_site\your_site_directory" <Directory "C:\pathname_to_site\your_site_directory"> Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> In the entry added above, replace site_name with the alias for your site and replace C:\pathname_to_site\your_site_directory with the actual file path name to your site's root directory. If the server is running on Linux, the format of the path name would be a UNIX path name rather than the Windows-style pathname shown in the example. Restart the Apache server to have the change take effect. File to display if URL doesn't include a filename Specified in conf/httpd.conf file find this code: # DirectoryIndex: sets the file that Apache will serve if a directory # is requested. <IfModule dir_module> DirectoryIndex index.html </IfModule> Make changes (add more than one file if needed): DirectoryIndex home.htm default.htm index.html Restart Apache Note a file isn't specified Assumption – default files like index.html not present – or they will be displayed Example of an alias I created ◦ To disable directory browsing delete Indexes from Options line in alias: Alias /MyTemp "C:\Web\Examples" <Directory "C:\ Web\Examples "> Options FollowSymLinks MultiViews ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> Locate the conf/server.xml file in the Tomcat install directory. Open it with wordpad (notepad doesn't handle single carriage returns correctly – right click/open with and select Wordpad) . Add the following entry in the part of the file where other similar entries are located. The server.xml file is an XML file, so be careful to place the addition at the proper location (nested within the <Host> element tags – don't break any XML tags). <Host …> …. <Context path="/site_name" docBase="C:\pathname_to_site\site_directory" debug="1" reloadable="true"> </Context> </Host> In the entry added in step 2, replace site_name with the alias for your site and replace C:\pathname_to_site\site_directory with the actual file path name to your site's root directory. Note: If you mis-edit the file or have unbalanced angle brackets or quotes, Tomcat cannot start properly. http://www3.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_More.html After adding <Context…> to server.xml (previous slide) In docbase: ◦ Put JSPs, HTMLs, CSSs, folder structure, etc. (Public area) directly within docbase. ◦ Create a WEB-INF folder ◦ Add web.xml ◦ Create a classes subfolder – servlets go here Add to server.xml Copy to c:\Web\JSPApps Stop/Restart Tomcat Access like Set false for production site true for development - auto reloads app if changes detected Allows running Servlets Open conf/web.xml (this is the main configuration for the entire Tomcat site) Change false to true Restart Tomcat Any folder without a default page will display a directory listing The easiest way is to copy a war file into the webapps folder ◦ This will expand the war into its original folders ◦ If you want to update the Servlet, delete the war and the expanded folders. Then copy new war ◦ You don't have to restart Tomcat if this is in server.xml: (which is the default) ◦ Also works for JSPs and entire web app ◦ Accessing Hello.war (copied to webapps) ◦ http://localhost:8080/Hello/hello.htm If autoDeploy="true" (previous slide) ◦ Will also track web applications for the following changes: An update to the WEB-INF/web.xml file will trigger a reload of the web application An update to a WAR which has been expanded will trigger an undeploy (with a removal of the expanded webapp), followed by a deployment An update to a XML configuration file will trigger an undeploy (without the removal of any expanded directory), followed by a deployment of the associated web application When using automatic deployment, the docBase defined by an XML Context file should be outside of the appBase directory. ◦ If this is not the case difficulties may be experienced deploying the web application or the application may be deployed twice. Or Use Tomcat Manager to deploy a war http://localhost:8080/manager/html/list Login with admin and password you set when installing Tomcat (using default tomcat installation it's admin with no password – look in conf/tomcat-users.xml to confirm this – ours is Administrator/W3853rv3r) Don't have to stop and restart Tomcat server Bottom of page Assume already have a usable jkmount in extra/httpd-tomcat.conf Following assumes jkmount is named Hello ◦ In tomcat's webapps folder must be a subfolder named Hello (case sensitive) In Hello, at a minimum there should be a subfolder named WEB-INF In WEB-INF there should be: web.xml – with appropriate entries subfolder named classes with package derived subfolders and compiled java class files subfolder named lib With any needed jars (mysql jar for example) Notice these files can get there via .war file or Tomcat manager URL will be: ◦ http://localhost/Hello/Courses ◦ Assumes web.xml has this in it: WEB-INF/web.xml – deployment descriptor ◦ Application specific (<tomcat home>/conf/web.xml is for all web applications) ◦ Possible contents* <context-param> assign application initializing parameters <servlet> configures servlet <servlet-mapping> map servlet to url <session-config> <session-timeout> default is 30 minutes – can change with this <welcome-file-list> pages to display if url doesn't include a filename ◦ *Partial list – there is a lot more that can go into web.xml 14.85% of web sites? Internet Information Services (IIS) Version 7.5 latest version (Server 2008) Out of the box can use: ◦ CGI, ASP, ASP.NET Needs add-ons if plan to use: ◦ PhP, JSP, Servlets, etc. ◦ If use JSP/Servlets Tomcat can be connected to IIS I haven't done this and don't plan to do it… More info: http://tomcat.apache.org/connectors-doc/webserver_howto/iis.html Versions 8.0 and 8.5 released but only for Windows Server 2012 Start IIS Manager ◦ From the Start menu, point to Administrative Tools, and then click Internet Information Services (IIS) Manager ◦ Alternatively: From the Start menu, click Run. In the Open box, type inetmgr, and click OK Expand the local computer, expand the Web Sites or FTP Sites folder, right-click the site or folder within which you want to create the virtual directory, point to New, and then click Virtual Directory. The Virtual Directory Creation Wizard appears. ◦ Click Next ◦ In the Alias box, type a name for the virtual directory. (Choose a short name that is easy to type because the user types this name) ◦ In the Path box, type or browse to the physical directory in which the virtual directory resides, and then click Next ◦ Under Allow the following permissions, select the check boxes for the access permissions you want to assign to your users, and then click Next Create a file named web.config in sites root folder <configuration> <location path="special_directory_name_here"> <system.webServer> <directoryBrowse enabled="true" /> </system.webServer> </location> </configuration> Change location path to the directory to browse To enable it for the entire site, remove the <location> and </location> tags ◦ which tell IIS7 to scope the configuration changes to just the path specified Tip: earlier versions of IIS use a check box in the virtual directory dialog box to allow or disallow directory browsing.