Apache web server installation/configuration, Virtual Hosting
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Apache web server installation/configuration, Virtual Hosting

  • 1,867 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,867
On Slideshare
1,866
From Embeds
1
Number of Embeds
1

Actions

Shares
Downloads
53
Comments
0
Likes
0

Embeds 1

http://www.slideshare.net 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Apache Web Server • A PAtCHy server: developed by the Apache group formed 2/95 around a number of people who provided patch files for NCSA httpd 1.3 by Rob McCool. • History-http://www.apache.org/ABOUT_APACHE.html • First official public release (0.6.2) in April 1995 • Add adaptive pre-fork child processes (very important!). • Modular structure and API for extensibility (Bob Thau) • Port to multiple platforms. Add documentation. • Apache 1.0 was released on 12/1/95. Pass NCSA httpd to be #1 server in Internet. 4/2/2010 C. Edward Chow CS401 Page 1
  • 2. Web Server Installation Statistics • http://www.netcraft.co.uk/survey/ 4/2/2010 C. Edward Chow CS401 Page 2
  • 3. Compiling Apache_1.3.12 • Download apache_1.3.12.tar.gz from http://www.apache.org/dist or closer mirror sites • $tar xzvf apache_1.3.12.tar.gz • $ ./configure --prefix=PREFIX • $ make • $ make install • $ PREFIX/bin/apachectl start • Here PREFIX is the prefix of the directory containing the distribution, typically it is /usr/local/apache. 4/2/2010 C. Edward Chow CS401 Page 3
  • 4. CS401 Apache Testbed • bilbo.uccs.edu and frodo.uccs.edu are installed with Apache1.3.12. • /mpc/home/www/sites contains the configuration files of various web sites contained in the CD-ROM of Apache text. • See http://cs.uccs.edu/~cs401/cs401lab.html for more detail on how to carry out the exercise. • Copy /mpc/home/www/sites to your directory. • To avoid conflict, use port # = 8<last 3 digits of SS#> Add “Port 8<last 3 digits of SS#>“ to httpd.conf. 4/2/2010 C. Edward Chow CS401 Page 4
  • 5. Apache Exercise Setup • Replace domain name/IP address on 3rd left Linux PC www.butterhlies.com 192.168.123.2 with bilbo.uccs.edu 128.198.192.182 sales.butterthlies.com 192.168.123.3 with b2b.uccs.edu 128.198.192.172 www.faraway.com 192.168.124.1 with wait.uccs.edu 128.198.192.202 • Replace domain name/IP address on 4th left Linux PC www.butterhlies.com 192.168.123.2 with frodo.uccs.edu 128.198.192.183 sales.butterthlies.com 192.168.123.3 with feline.uccs.edu 128.198.192.173 www.faraway.com 192.168.124.1 with walden.uccs.edu 128.198.192.203 • Replace domain name/IP address on 5th left Linux PC www.butterhlies.com 192.168.123.2 with gandalf.uccs.edu 128.198.192.194 sales.butterthlies.com 192.168.123.3 with gallop.uccs.edu 128.198.192.174 www.faraway.com 192.168.124.1 with wind.uccs.edu 128.198.192.204 4/2/2010 C. Edward Chow CS401 Page 5
  • 6. Apache Testbed: LAN Setup • /usr/www/lan_setup script for bilbo: ifconfig eth0 128.198.192.182 ifconfig eth0:0 128.198.192.172 ifconfig eth0:1 128.198.192.202 • Or on linuxconf for bilbo, select config | networking | IP aliases for virtual hosts | eth0. Type in 128.198.192.172, 128.198.192.202 for IP aliases (I have not succeeded in using the above method.) • Normally we skip lan_setup. We will share the same lan_setup. Run the above lan_setup if you find the computer is configured incorrectly (through ifconfig). 4/2/2010 C. Edward Chow CS401 Page 6
  • 7. Ifconfig command • Interface configuration command. • There is an equivalent command ipconfig on win32. • In Redhat linux, it is in /sbin. I have modified /etc/profile to include that directory in $PATH. • Use ifconfig to show the status • Use ifconfig eth0:1 down to shut down the IP aliase. • Use ifconfig eth0:1 up to bring it up again. 4/2/2010 C. Edward Chow CS401 Page 7
  • 8. Apache Web Site Exercises • Each site.<exercise> directory contains – conf: configuration files, httpd.conf, srm.conf, access.conf, mime.types – htdocs: contains web pages, scripts – logs: access_log, error_log, httpd.pid, (referer_log, agent_log) – go: alias of “httpd -d xxSITESxx/site.<name> -X” -d for the site directory, -X single process execution • Edit the httpd.conf file. Add the following lines Port 8<last 3 digits of your SS#> TransferLog /mpc/home/<login>/sites/site.<name>/logs/access_log • In go shell script file, replace xxSITESxx with /mpc/home/<login>/sites replace <name> with the corresponding site name. • Type go to start the web server 4/2/2010 C. Edward Chow CS401 Page 8
  • 9. Examine httpd Configuration • To enhance the security, webuser is created to run httpd Add “User webuser” and “Group webgroup” to httpd.conf. • “tail -f <site>/logs/error_log” or “ps aux | grep webuser” to see if the server is configured and running. [Sat Feb 7 20:23:57 1998] Server configured -- resuming normal operations or webuser 13013 0.0 2.2 1260 704 ? S 20:23 0:00 httpd -d /home/cs401 • “tail -f <site>/logs/access_log” to see the processing results of client requests usrp16.uccs.edu - - [07/Feb/1998:03:21:16 -0700] "GET / HTTP/1.0" 200 170 • Use a browser (on vinci or other machines) to access the server a few times with url = http://bilbo:8345/ • “kill `cat <site>/logs/httpd.pid`” to terminate web server. note that it is back quote ` and not „ 4/2/2010 C. Edward Chow CS401 Page 9
  • 10. Httpd Configuration File • Apache uses a set of (73) directives to describe to httpd how the web site should be configured. http://www.apache.org/docs/mod/directives.html Each Apache configuration directive is described using a common format that looks like this: Syntax: directive-name some args Default: directive-name default-value Context: context-list Override: override Status: status Module: module-name Compatibility: compatibility notes 4/2/2010 C. Edward Chow CS401 Page 10
  • 11. Block Directives • Directives that limit the application of other directives. • Specify by a group like a tag section in html. • <VirtualHost host[:port]> ... </VirtualHost> • <VirtualHost…><Directory dir>, <Files file>, <Location URL> in ascending order of authority. <Location> can overwrite others. • dir, file, URL can specify using wildcards and full regular expressions preceded by “~” 4/2/2010 C. Edward Chow CS401 Page 11
  • 12. List of Directives • User, Group: specify user and group that httpd runs on. • ServerName: hostname of server (for redirection URL) • ResourceConfig, AccessConfig: for reading additional related directives. Can be disabled by /dev/null as value • Port: specify the port httpd run on • ServerAdmin:email addr. for browser to do automatic replies. • DocumentRoot: • TransferLog, ErrorLog, PidFile: where access,error logs, httpd.pid should be located. Can be file or pipe “|rotatelogs” The file is relative to the server root directory (specified in httpd -d <server root> or /usr/local/etc/httpd) 4/2/2010 C. Edward Chow CS401 Page 12
  • 13. Directives • KeepAlive [on|off](on): keep connection alive for n requests before terminate provided they come in before timeout. n is defined in MaxKeepAliveRequests <n>(100) directive • KeepAliveTimeout <n>(15): wait for the next request for n seconds before terminate the connections. • Timeout <n>(300): max. time in sec for a block data. • HostNameLookups [on|off|double](off): do reverse DNS lookup for logging the domain name of the request. • MaxClients <n>(256): the limit of # of simultaneous requests (hence the # of child processes). • MaxRequestsPerChild <n>(0): Spare(child) server dies after <n> requests, avoid mem leak. 0 mean infinite requests. • Min/MaxSpareServers <n>(5/10): # of Idle child servers • StartServers <n>(5): sets the number of child server processes created on startup. 4/2/2010 C. Edward Chow CS401 Page 13
  • 14. Homework#3 Exercise 1: Site.toddle and Site.simple • “cp -r /mpc/home/www/sites /mpc/home/<login>“ • Edit the httpd.conf in conf directory DocumentRoot /usr/www/site.simple/htdocs  DocumentRoot /mpc/home/<login>/sites/site.simple/htdocs Port 8<last 3 digits of your SS#> TransferLog logs/access_log • Edit go shell script “httpd -d /mpc/home/<login>/sites/site.<name> [-X]“ go in the site.simple does not have –X. • go will start the web server. Control-c will terminate it. • Use browser to visit the site a few times. Remember to specify the port # in url. For IE browser, type http://bilbo.uccs.edu:<portno>/ or http://frodo.uccs.edu:<portno>/ depending which machine • Check the access_log file. Keep them as record 4/2/2010 C. Edward Chow CS401 Page 14
  • 15. Homework#3 Exercise 1 User webuser Group webgroup ServerName bilbo.uccs.edu or frodo.uccs.edu DocumentRoot /mpc/home/<login>/sites/site.toddle/htdocs Port 8<last 3 digits of your SS#> TransferLog logs/access_log 4/2/2010 C. Edward Chow CS401 Page 15
  • 16. Site.twocopy • Create two web servers: one serves customers; one for sales. There are two directories in site.twocopy. • In customers/conf/httpd.conf, replace www.butterthlies.com with bilbo.uccs.edu add Port 8<last 3 digits of SS#> • Here BindAddress is used to specify the reception of request from specific IP address (domain name) by this web server. BindAddress bilbo.uccs.edu • In sales/conf/httpd.conf replace sales.butterthlies.com with b2b.uccs.edu Replace Listen sales.butterthlies.com:80 with Listen b2b.uccs.edu:8<last 3 digits of SS#> • httpd -d /mpc/home/<login>/sites/site.twocopy/customers -X • httpd -d /mpc/home/<login>/sites/site.twocopy/sales -X 4/2/2010 C. Edward Chow CS401 Page 16
  • 17. Web Hosting • Named-based vs. IP-based Virtual Host (VH) HOST: <name> a unique IP address for each VH on metaheader different to support a lot of VHs old browsers not support this • Use <VirtualHost hostname[:port]> block directives • Specify ServerAdmin, DocumentRoot, ServerName, ErrorLog, TransferLog for individual VH • Be aware that UNIX File Limits on # of file descriptors. (default 64)  only support 32 VHs? • You may want to increase # of child servers. 4/2/2010 C. Edward Chow CS401 Page 17
  • 18. Site.Virtual/Name-based • cd /mpc/home/<login>/sites/site.virtual/Name-based • edit the httpd.conf in conf directory: • NameVirtualHost 192.168.123.2  NameVirtualHost 128.198.192.182 Port 8<last 3 digits of SS#> • <VirtualHost www.butterthlies.com>  <VirtualHost bilbo.uccs.edu:portno> Here portno is 8<last 3 digits of your SS#> • ServerAdmin sales@butterthlies.com  ServerAdmin <login>@cs.uccs.edu • /usr/www  /mpc/home/<login>/sites/ • <VirtualHost sales.butterthlies.com>  <VirtualHost sales-bilbo.uccs.edu:portno> • Go to start virtual hositng. 4/2/2010 C. Edward Chow CS401 Page 18
  • 19. Site.Virtual/IP-based • cd /mpc/home/<login>/sites/site.virtual/IP-based • edit the httpd.conf in conf directory: • Add Port 8<last 3 digits of SS#> right after Group webgroup • <VirtualHost 192.168.123.2>  <VirtualHost 128.198.192.182:portno> Here portno is 8<last 3 digits of your SS#> • ServerName bilbo.uccs.edu • ServerAdmin sales@butterthlies.com  ServerAdmin <login>@cs.uccs.edu • /usr/www  /mpc/home/<login>/sites/ • <VirtualHost 192.168.123.3>  <VirtualHost 128.198.192.172:portno> • ServerName b2b.uccs.edu 4/2/2010 C. Edward Chow CS401 Page 19
  • 20. Site.Virtual/Mixed-based • We can mix Name-based with IP-based virtual hosting. • Change “IP-based” to “Mixed-based”. An error in config file. NameVirtualHost 128.198.192.182:8888 Port 8888 <VirtualHost bilbo.csnet.uccs.edu:8888> DocumentRoot /mpc/home/guest/sites/site.virtual/htdocs/customers <VirtualHost salesbilbo.csnet.uccs.edu:8888> DocumentRoot /mpc/home/guest/sites/site.virtual/htdocs/salesmen <VirtualHost 128.198.192.172:8888> DocumentRoot /mpc/home/guest/sites/site.virtual/htdocs/salesmen 4/2/2010 C. Edward Chow CS401 Page 20
  • 21. Port-based Virtual Hosting • Can use one IP address to test many sites. • Change IP-based to Port-based. An error in config file. • Different ports map to different sites. User webuser Group webgroup Listen 7888 Listen 8888 <VirtualHost 128.198.192.182:7888> DocumentRoot /mpc/home/guest/sites/site.virtual/htdocs/customers <VirtualHost 128.198.192.182:8888> DocumentRoot /mpc/home/guest/sites/site.virtual/htdocs/salesmen 4/2/2010 C. Edward Chow CS401 Page 21
  • 22. Bonus Exercise #1 • After copying the site.virtual to the nfs mount dir and executing the httpd, the access_log and error_log files are empty. • When use the directory mounted on local disk, there are no problem. • See the bonus exercise on http://owl/~cs401/bonus.html • Try to explain why this happens. • A good answer gets 1 point count towards final grade. 4/2/2010 C. Edward Chow CS401 Page 22
  • 23. Homework #3 Exercise 2 • Run site.virtual/Name-based, site.virtual/IP-based, and site.twocopy according to the textbook and verify the results. • Keep the access_log and error_log as records. • Send me email when you finish both exercises. 4/2/2010 C. Edward Chow CS401 Page 23
  • 24. Homework #3: Problem 3 • Explain why it is possible not to require a new IP address to host a customer‟s web site, even though it has a unique domain name. 4/2/2010 C. Edward Chow CS401 Page 24