index.txt
上传用户:lampled
上传日期:2007-01-07
资源大小:94k
文件大小:11k
源码类别:

Web服务器

开发平台:

Unix_Linux

  1.                              XS-HTTPD version 2.3
  2.                                        
  3. Contents
  4.      * Overview
  5.      * Installation
  6.      * Running the WWW server
  7.      * Other programs
  8.      * Features
  9.      * Server side includes
  10.      * CGI binaries
  11.      * Local configuration
  12.      * About the author
  13.        
  14.      _________________________________________________________________
  15.                                       
  16. Overview
  17.    What is XS-HTTPD? XS-HTTPD is a WWW server that has the following
  18.    features:
  19.    
  20.     1. It is pronounced as "access-HTTP-daemon"
  21.     2. It is SMALL (very small in fact: a factor two to three smaller
  22.        than normal servers on disk and in memory)
  23.     3. It is FAST (because it is so small and does not do unnecessary
  24.        things)
  25.     4. Uses very little CPU time
  26.     5. Configurable (configuration compiled in to make it small, but
  27.        largely overridable on the command line)
  28.     6. Runs user CGI binaries under their own user ID!
  29.     7. Gets users' pages under their own user ID, allowing them to really
  30.        have protected pages (using the built-in authentication
  31.        mechanism)!
  32.     8. Does not fork for every connection (has a fixed number of
  33.        servers), only to replace a lost server (in case of timeouts).
  34.     9. Comes with some other useful programs
  35.        
  36.      _________________________________________________________________
  37.                                       
  38. Installation
  39.    Installing these programs should be very simple.
  40.    
  41.    Adjust the Makefile. There should not be a lot to adjust, probably
  42.    only the CC, CFLAGS and the LDFLAGS. Instructions on how to set up the
  43.    Makefile are in the file itself. If something goes wrong while you're
  44.    editing the Makefile, the original version is in Makefile.original.
  45.    
  46.    Next, adjust config.h (detailed instructions are in the file itself)
  47.    to contain the necessary information for your system. I have supplied
  48.    a shell script that determines as much of your system's information as
  49.    possible. This script is called autodetect. When you run it, it will
  50.    create a config.h for you. Run it by typing: sh autodetect.
  51.    
  52.    If you need to edit config.h by hand, you will need to copy
  53.    config.h.generic to config.h first.
  54.    
  55.    Then, type make. This should compile the programs without any warnings
  56.    (with Linux though, I've been getting the warnings: `MAP_FILE'
  57.    redefined; it does not matter - it can be fixed, by the way, by
  58.    installing the latest version of the C library and its include files).
  59.    If you are having trouble compiling the package, see the
  60.    troubleshooting help.
  61.    
  62.    If that is successful, type make install to install the programs and
  63.    data files in the correct locations. You might want to type make -n
  64.    install first to see where the programs and the others files are going
  65.    to be stored. If you do not like the directories, edit the Makefile
  66.    and retry.
  67.      _________________________________________________________________
  68.                                       
  69. Running the program
  70.    The manual page that comes with the httpd describes in detail how to
  71.    run the WWW server. Type man httpd on a prompt after installing the
  72.    entire package. Please do not forget to install a cron entry for
  73.    clearxs. See its manual page for the details (type man clearxs on a
  74.    prompt after installing the entire package).
  75.      _________________________________________________________________
  76.                                       
  77. Other programs
  78.    When you compile the server as described above, some other programs
  79.    will be compiled as well. Some of these programs are for the
  80.    authentication part of the WWW server. Others are for accessing the
  81.    counter file. And there are the imagemaper, the graphical counter, the
  82.    daemon controller and the index creator. Manual pages of these
  83.    programs will be installed when the package is installed. Read them!
  84.    
  85.    The programs are: xspasswd, xschpass, imagemap, readxs, clearxs,
  86.    xsindex, httpdc and gfxcount.
  87.      _________________________________________________________________
  88.                                       
  89. Other features
  90.   Automatic decompression
  91.   
  92.    One of the nice features of the WWW server is automatic decompression.
  93.    This feature is dealt with in the file called compress.methods.
  94.    
  95.    This file lists the possible compression types that are understood by
  96.    the WWW server. It works very simply: if somebody asks for (for
  97.    example) index.html, and this file does not exist, but index.html.gz
  98.    does exist, then index.html will be `generated' out of index.html.gz
  99.    using the method specified with .gz. Note that this process does not
  100.    actually create index.html in that same directory. It creates a file
  101.    in the temporary directory, which is removed immediately after usage.
  102.    
  103.    If somebody asks directly for index.html.gz, he will get it in the
  104.    compressed format. This way, nice things like the following can be
  105.    done:
  106.    
  107.    Get <A HREF="xshttpd.tar">the uncompressed tar</A>, or get the <A
  108.    HREF="xshttpd.tar.gz"> the compressed tar</A>.
  109.    
  110.    The user only has to have the compressed version, because if somebody
  111.    asks for the uncompressed version, the server will uncompress it on
  112.    the fly for that user.
  113.    
  114.    Note that only one compression type per file is possible. Of course,
  115.    you can make frontends for types that require multiple filters. In
  116.    that case, it can be helpful to know that the list is traversed from
  117.    top to bottom.
  118.    
  119.   Authentication
  120.   
  121.    This server supports the basic authentication protocol. This means
  122.    that users can protect their pages with a username/password
  123.    combination. Other servers can do this too, but they lack one thing:
  124.    the "protected" files have to be world-readable. Because this server
  125.    retrieves pages under users' own UID, this problem is avoided.
  126.    
  127.    More information about authentication can be found in the manual pages
  128.    of xspasswd and xschpass.
  129.    
  130.   Special files
  131.   
  132.    There are a number of files that this WWW server considers special:
  133.    
  134.    .noxs
  135.           If this file exists in a certain directory, that entire
  136.           directory is considered closed. If somebody attempts to
  137.           retrieve a file from that directory, he will get a Permission
  138.           denied notice. This is useful for users and system
  139.           administrators: users can use it when they are updating the
  140.           directory and system administrators can use it to easily shut
  141.           down a group of pages. Note that only the directory in which
  142.           the .noxs file is present is blocked. Subdirectories are not
  143.           blocked.
  144.           
  145.    .xsuid
  146.           If this file exists in a certain directory, all files in that
  147.           directory will be retrieved as (by default) nobody/nogroup
  148.           instead of under your own UID. This can be useful if you want a
  149.           file permission of say 600 to mean: do not allow retrieval (by
  150.           default, the file is retrieved under your own UID, so the
  151.           daemon could have still read those files).
  152.           
  153.    .redir
  154.           If this file is present in a certain directory, and a file is
  155.           requested from that directory, then a redirection message will
  156.           be sent to the remote user's browser. It works simply by
  157.           substituting the server name and the directory that the remote
  158.           user to get to this file by the contents of the file. This way,
  159.           an entire directory can be automatically be redirected.
  160.           
  161.    *.redir
  162.           If a file is requested and a file exists with the same name but
  163.           with .redir appended to it, the file will not be sent. Instead,
  164.           the server will send a redirection message to the remote user's
  165.           browser. The redirected location is retrieved from the *.redir
  166.           file.
  167.           
  168.    .xsauth
  169.           If this file exists, all files in that directory (NOT the
  170.           subdirectories) are protected by usercode/password
  171.           combinations. Read the manual page of xspasswd for more details
  172.           about this.
  173.           
  174.   Server side includes
  175.   
  176.    There is more information about SSI's in another file.
  177.      _________________________________________________________________
  178.                                       
  179. Custom configuration
  180.    As with every program, the defaults that I've given are probably not
  181.    what your system requires or what you want. Therefore, you might need
  182.    to edit the Makefile and config.h files. Documentation is in those
  183.    files themselves. Just follow the step by step instructions and all
  184.    should be fine.
  185.    
  186.    The WWW server has a provision for supplying your own local ~
  187.    expansion. In other words, you can determine where /~USER/ is
  188.    physically. Normally, you would take that user's home directory from
  189.    the password file and add /.html to it (or /public_html on some
  190.    systems). But you can make much more elaborate constructions.
  191.    
  192.    The file that performs this task (convert /~USER/ to a physical
  193.    directory) is local.c. It contains a function transform_user_dir which
  194.    takes three parameters: a buffer to place the name of the directory
  195.    in, the struct passwd pointer to the user's information, and a flags
  196.    which turns off or on error messages.
  197.    
  198.    You can make your own transform_user_dir if you wish. The routine may
  199.    use the variable localmode, which is set to 1 by default, but can be
  200.    overridden by the -l command line option. For example, the default
  201.    local.c uses it to call one of three routines, depending on the
  202.    variable localmode. See the default file for elaborate examples of
  203.    routines that you may want to adapt for your personal use.
  204.    
  205.    There is not much else that you can configure. If you want to add some
  206.    things to the WWW server, please contact me first to verify that
  207.    nobody else is working on an equal feature.
  208.      _________________________________________________________________
  209.                                       
  210. Troubleshooting help
  211.    If you are having any trouble compiling this server or one of its
  212.    accompanying programs, perhaps you can find an answer here:
  213.      * Problem: The compiler cannot find a .h file
  214.      * Answer: If the file is listed in config.h and there is the word
  215.        #define before it, then change #define to #undef. If it is not
  216.        listed in config.h then try removing the line which includes that
  217.        file. In any case, if you cannot change config.h in such a way
  218.        that the programs can find the include file (or forget about it),
  219.        please mail me.
  220.        
  221.      * Problem: The compiler aborts while compiling
  222.      * Answer: There is not simple way to tell you how to fix this. Try
  223.        changing config.h. If you can not find anything in config.h that
  224.        remedies your problem, please contact me.
  225.        
  226.      * Problem: The linker complains about symbols that cannot be found
  227.      * Answer: Check that you have specified all the necessary libaries
  228.        for your system in the Makefile. Typical libraries that you have
  229.        to add are crypt, intl and resolv. The way to do this is to find
  230.        the line LDFLAGS=something and add -llibraryname to the end of the
  231.        line.
  232.        
  233.    This concludes the troubleshooting help so far. If you have any useful
  234.    tips that others might be able to use, please do not hesitate to
  235.    contact me.
  236.      _________________________________________________________________
  237.                                       
  238. About the author
  239.    The author of this WWW server and its accompanying programs is Sven
  240.    Berkvens (sven@stack.nl). I made all the programs, except the
  241.    imagemapper, which I took from the NCSA distribution and cleaned up.