0

I am trying to set up a server for the "cgit" web-ui for GIT. I have downloaded the source code from the developer's website and correctly compiled it per the instructions.

My default-server.conf looks like this:

#
# Global configuration that will be applicable for all virtual hosts, unless
# deleted here, or overriden elswhere.
# 

DocumentRoot "/srv/www/htdocs/cgit"

#
# Configure the DocumentRoot
#
<Directory "/srv/www/htdocs">
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs-2.2/mod/core.html#options
    # for more information.
    Options None
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    AllowOverride None
    # Controls who can get stuff from this server.
    Order allow,deny
    Allow from all
</Directory>

<Directory "/srv/www/htdocs/cgit/">
    AllowOverride None
    Options FollowSymlinks +ExecCGI
    DirectoryIndex /
    Order allow,deny
    Allow from all
</Directory>

# Aliases: aliases can be added as needed (with no limit). The format is 
# Alias fakename realname
#
# Note that if you include a trailing / on fakename then the server will
# require it to be present in the URL.  So "/icons" isn't aliased in this
# example, only "/icons/".  If the fakename is slash-terminated, then the 
# realname must also be slash terminated, and if the fakename omits the 
# trailing slash, the realname must also omit it.
#
# We include the /icons/ alias for FancyIndexed directory listings.  If you
# do not use FancyIndexing, you may comment this out.
#
Alias /icons/ "/usr/share/apache2/icons/"

<Directory "/usr/share/apache2/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the client.
# The same rules about trailing "/" apply to ScriptAlias directives as to
# Alias.
#
ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"

# "/srv/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/srv/www/cgi-bin">
    AllowOverride None
    Options +ExecCGI -Includes
    Order allow,deny
    Allow from all
</Directory>

# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
# To disable it, simply remove userdir from the list of modules in APACHE_MODULES 
# in /etc/sysconfig/apache2.
#
<IfModule mod_userdir.c>
    # Note that the name of the user directory ("public_html") cannot simply be
    # changed here, since it is a compile time setting. The apache package
    # would have to be rebuilt. You could work around by deleting
    # /usr/sbin/suexec, but then all scripts from the directories would be
    # executed with the UID of the webserver.
    UserDir public_html
    # The actual configuration of the directory is in
    # /etc/apache2/mod_userdir.conf.
    Include /etc/apache2/mod_userdir.conf
    # You can, however, change the ~ if you find it awkward, by mapping e.g.
    # http://www.example.com/users/karl-heinz/ --> /home/karl-heinz/public_html/ 
    #AliasMatch ^/users/([a-zA-Z0-9-_.]*)/?(.*) /home/$1/public_html/$2
</IfModule>


# Include all *.conf files from /etc/apache2/conf.d/.
#
# This is mostly meant as a place for other RPM packages to drop in their
# configuration snippet.
#
# You can comment this out here if you want those bits include only in a
# certain virtual host, but not here.
#
Include /etc/apache2/conf.d/*.conf

# The manual... if it is installed ('?' means it won't complain)
Include /etc/apache2/conf.d/apache2-manual?conf

When I try to access the gui by writing "localhost" in the URL bar in the browser I get a "Server Error - Error 500".

In the error log (/var/log/apache2/error_log) i see this line every time i refresh:

[Mon Apr 23 13:52:39 2012] [error] [client ::1] Request exceeded the limit of 10 subrequest nesting levels due to probable confguration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

I have tried using the LimitInternalRecursion directive, and setting it up to "500" to no end. There is no actual problem with the directive, just some kind of infinite loop of rewrites as far as I can tell.

1
  • Just a tip, you typically want to add your personal configs to /etc/apache2/conf.d/*.conf, not directly to apache2.conf.
    – Andrew M.
    Apr 23, 2012 at 16:25

1 Answer 1

1

The issue you're having is because of this line here:

DirectoryIndex /

Basically, what that says is, when you access http://localhost, display /--which will then display /, etc.. DirectoryIndex should specify a file; when you access a directory, if that file exists, then it displays that. So if you had:

DirectoryIndex cgit.cgi

Then when you access http://localhost, it will display cgit.cgi (if it exists in that directory). Another tip--use virtualhosts in /etc/apache2/conf.d/*.conf. For example, given similar code to what you had above, you could have the following in /etc/apache2/conf.d/cgit.conf:

<Directory "/srv/www/htdocs/cgit">
    AllowOverride None
    Options FollowSymlinks +ExecCGI
    Order allow,deny
    Allow from all
</Directory>

Then, you could use the original DocumentRoot in /etc/apache2/httpd.conf without modifying the original file.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .