# File lib_ctrl/rucy/control.rb, line 41
    def server_setup(server)
      logging_params = self.logging_params
      logging_params.server_setup(self, server)

      access_log_params = self.access_log_params
      access_log_params.server_setup(self, server)

      @loader.load
      for mod_path, error in @loader.load_errors
        server.err("error: not loaded #{mod_path.inspect}: #{error}")
      end
      doc_factory = @loader.factory
      doc_factory.add_option(:pw_enc, @pw_enc)
      doc_factory.setup

      server_params = self.server_params
      server_params.server_setup(self, server)

      alias_list = self.aliases
      alias_list.server_setup(self, server)

      document_list = self.documents
      for mount_info in document_list
        name = mount_info['document']
        args = mount_info['arguments']
        path = mount_info['mount_path']
        mask = mount_info['mount_mask']
        host = mount_info['virtual_host']
        begin
          document = doc_factory.doc_build(name, args)
          if (host) then
            host += ':' + server_params.port.to_s
            server.virtual_mount(host, document, path, mask)
          else
            server.mount(document, path, mask)
          end
        rescue StandardError, ScriptError
          server.err("error: not mounted #{name.inspect} document: (#{$!.class}) #{$!}")
          @doc_errors.push({ :document => name,
                             :arguments => args,
                             :mount_path => path,
                             :mount_mask => mask,
                             :virtual_host => host,
                             :exception => $!
                           })
        end
      end

      filter_list = self.filters
      for filter_info in filter_list
        name = filter_info['filter']
        args = filter_info['arguments']
        path = filter_info['attach_path']
        mask = filter_info['attach_mask']
        host = filter_info['virtual_host']
        begin
          filter = doc_factory.filter_build(name, args)
          if (host) then
            host += ':' + server_params.port.to_s
            server.virtual_attach(host, filter, path, mask)
          else
            server.attach(filter, path, mask)
          end
        rescue StandardError, ScriptError
          server.err("error: not attached #{name.inspect} filter: (#{$!.class}) #{$!}")
          @filter_errors.push({ :filter => name,
                                :arguments => args,
                                :attach_path => path,
                                :attach_mask => mask,
                                :virtual_host => host,
                                :exception => $!
                              })
        end
      end

      admin_params = self.admin_params
      admin_params.server_setup(self, server, @loader, doc_factory, @pw_enc, @page_path)

      @server = server
      server.close_hook{|s|
        logfiles_close
      }

      nil
    end