1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Update broke my Apache

Discussion in 'Linux / Unix Discussion' started by Fergal1982, Jul 18, 2008.

  1. Fergal1982

    Fergal1982 Petabyte Poster

    4,196
    171
    211
    I'm running on Lenny at the moment, and using Apache2 to run a webserver.

    All was going swimmingly, and I had configured apache with various virtual hosts that were correctly loading from the web. All good.

    I've been regularly running dist-upgrades, to keep my system updated, and only noticed today that, sometime in the last week or so, my sites have stopped working. The webserver itself is still working, as whenever I try to go to my pages, I get the 'It Works' standard apache output.

    I've tried tweaking my VH settings, but no joy. Im not exactly a Linux pro, so I'm willing to concede that maybe I had hacked my VH settings in some manner that allowed them to work, but werent correct, and now the current version has fixed the issue.

    Also, when I try to restart apache, I get

    Below are my settings from apache2.conf, and the virtualhost files (placed in sites-available, and linked into sites-enabled)

    Code:
    #
    # Based upon the NCSA server configuration files originally by Rob McCool.
    #
    # This is the main Apache server configuration file.  It contains the
    # configuration directives that give the server its instructions.
    # See http://httpd.apache.org/docs/2.2/ for detailed information about
    # the directives.
    #
    # Do NOT simply read the instructions in here without understanding
    # what they do.  They're here only as hints or reminders.  If you are unsure
    # consult the online docs. You have been warned.  
    #
    # The configuration directives are grouped into three basic sections:
    #  1. Directives that control the operation of the Apache server process as a
    #     whole (the 'global environment').
    #  2. Directives that define the parameters of the 'main' or 'default' server,
    #     which responds to requests that aren't handled by a virtual host.
    #     These directives also provide default values for the settings
    #     of all virtual hosts.
    #  3. Settings for virtual hosts, which allow Web requests to be sent to
    #     different IP addresses or hostnames and have them handled by the
    #     same Apache server process.
    #
    # Configuration and logfile names: If the filenames you specify for many
    # of the server's control files begin with "/" (or "drive:/" for Win32), the
    # server will use that explicit path.  If the filenames do *not* begin
    # with "/", the value of ServerRoot is prepended -- so "/var/log/apache2/foo.log"
    # with ServerRoot set to "" will be interpreted by the
    # server as "//var/log/apache2/foo.log".
    #
    
    ### Section 1: Global Environment
    #
    # The directives in this section affect the overall operation of Apache,
    # such as the number of concurrent requests it can handle or where it
    # can find its configuration files.
    #
    
    #
    # ServerRoot: The top of the directory tree under which the server's
    # configuration, error, and log files are kept.
    #
    # NOTE!  If you intend to place this on an NFS (or otherwise network)
    # mounted filesystem then please read the LockFile documentation (available
    # at <URL:http://httpd.apache.org/docs-2.1/mod/mpm_common.html#lockfile>);
    # you will save yourself a lot of trouble.
    #
    # Do NOT add a slash at the end of the directory path.
    #
    ServerRoot "/etc/apache2"
    
    #
    # The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
    #
    #<IfModule !mpm_winnt.c>
    #<IfModule !mpm_netware.c>
    LockFile /var/lock/apache2/accept.lock
    #</IfModule>
    #</IfModule>
    
    #
    # PidFile: The file in which the server should record its process
    # identification number when it starts.
    # This needs to be set in /etc/apache2/envvars
    #
    PidFile ${APACHE_PID_FILE}
    
    #
    # Timeout: The number of seconds before receives and sends time out.
    #
    Timeout 300
    
    #
    # KeepAlive: Whether or not to allow persistent connections (more than
    # one request per connection). Set to "Off" to deactivate.
    #
    KeepAlive On
    
    #
    # MaxKeepAliveRequests: The maximum number of requests to allow
    # during a persistent connection. Set to 0 to allow an unlimited amount.
    # We recommend you leave this number high, for maximum performance.
    #
    MaxKeepAliveRequests 100
    
    #
    # KeepAliveTimeout: Number of seconds to wait for the next request from the
    # same client on the same connection.
    #
    KeepAliveTimeout 15
    
    ##
    ## Server-Pool Size Regulation (MPM specific)
    ## 
    
    # prefork MPM
    # StartServers: number of server processes to start
    # MinSpareServers: minimum number of server processes which are kept spare
    # MaxSpareServers: maximum number of server processes which are kept spare
    # MaxClients: maximum number of server processes allowed to start
    # MaxRequestsPerChild: maximum number of requests a server process serves
    <IfModule mpm_prefork_module>
        StartServers          5
        MinSpareServers       5
        MaxSpareServers      10
        MaxClients          150
        MaxRequestsPerChild   0
    </IfModule>
    
    # worker MPM
    # StartServers: initial number of server processes to start
    # MaxClients: maximum number of simultaneous client connections
    # MinSpareThreads: minimum number of worker threads which are kept spare
    # MaxSpareThreads: maximum number of worker threads which are kept spare
    # ThreadsPerChild: constant number of worker threads in each server process
    # MaxRequestsPerChild: maximum number of requests a server process serves
    <IfModule mpm_worker_module>
        StartServers          2
        MaxClients          150
        MinSpareThreads      25
        MaxSpareThreads      75 
        ThreadsPerChild      25
        MaxRequestsPerChild   0
    </IfModule>
    
    # These need to be set in /etc/apache2/envvars
    User ${APACHE_RUN_USER}
    Group ${APACHE_RUN_GROUP}
    
    #
    # AccessFileName: The name of the file to look for in each directory
    # for additional configuration directives.  See also the AllowOverride
    # directive.
    #
    
    AccessFileName .htaccess
    
    #
    # The following lines prevent .htaccess and .htpasswd files from being 
    # viewed by Web clients. 
    #
    <Files ~ "^\.ht">
        Order allow,deny
        Deny from all
    </Files>
    
    #
    # DefaultType is the default MIME type the server will use for a document
    # if it cannot otherwise determine one, such as from filename extensions.
    # If your server contains mostly text or HTML documents, "text/plain" is
    # a good value.  If most of your content is binary, such as applications
    # or images, you may want to use "application/octet-stream" instead to
    # keep browsers from trying to display binary files as though they are
    # text.
    #
    DefaultType text/plain
    
    
    #
    # HostnameLookups: Log the names of clients or just their IP addresses
    # e.g., www.apache.org (on) or 204.62.129.132 (off).
    # The default is off because it'd be overall better for the net if people
    # had to knowingly turn this feature on, since enabling it means that
    # each client request will result in AT LEAST one lookup request to the
    # nameserver.
    #
    HostnameLookups Off
    
    # ErrorLog: The location of the error log file.
    # If you do not specify an ErrorLog directive within a <VirtualHost>
    # container, error messages relating to that virtual host will be
    # logged here.  If you *do* define an error logfile for a <VirtualHost>
    # container, that host's errors will be logged there and not here.
    #
    ErrorLog /var/log/apache2/error.log
    
    #
    # LogLevel: Control the number of messages logged to the error_log.
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    #
    LogLevel warn
    
    # Include module configuration:
    Include /etc/apache2/mods-enabled/*.load
    Include /etc/apache2/mods-enabled/*.conf
    
    # Include all the user configurations:
    Include /etc/apache2/httpd.conf
    
    # Include ports listing
    Include /etc/apache2/ports.conf
    
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    # If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
    #
    LogFormat "%v:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    LogFormat "%{Referer}i -> %U" referer
    LogFormat "%{User-agent}i" agent
    
    #
    # Define an access log for VirtualHosts that don't define their own logfile
    CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
    
    #
    # Customizable error responses come in three flavors:
    # 1) plain text 2) local redirects 3) external redirects
    #
    # Some examples:
    #ErrorDocument 500 "The server made a boo boo."
    #ErrorDocument 404 /missing.html
    #ErrorDocument 404 "/cgi-bin/missing_handler.pl"
    #ErrorDocument 402 http://www.example.com/subscription_info.html
    #
    
    #
    # Putting this all together, we can internationalize error responses.
    #
    # We use Alias to redirect any /error/HTTP_<error>.html.var response to
    # our collection of by-error message multi-language collections.  We use 
    # includes to substitute the appropriate text.
    #
    # You can modify the messages' appearance without changing any of the
    # default HTTP_<error>.html.var files by adding the line:
    #
    #   Alias /error/include/ "/your/include/path/"
    #
    # which allows you to create your own set of files by starting with the
    # /usr/share/apache2/error/include/ files and copying them to /your/include/path/, 
    # even on a per-VirtualHost basis.  The default include files will display
    # your Apache version number and your ServerAdmin email address regardless
    # of the setting of ServerSignature.
    #
    # The internationalized error documents require mod_alias, mod_include
    # and mod_negotiation.  To activate them, uncomment the following 30 lines.
    
    #    Alias /error/ "/usr/share/apache2/error/"
    #
    #    <Directory "/usr/share/apache2/error">
    #        AllowOverride None
    #        Options IncludesNoExec
    #        AddOutputFilter Includes html
    #        AddHandler type-map var
    #        Order allow,deny
    #        Allow from all
    #        LanguagePriority en cs de es fr it nl sv pt-br ro
    #        ForceLanguagePriority Prefer Fallback
    #    </Directory>
    #
    #    ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
    #    ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
    #    ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
    #    ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
    #    ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
    #    ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
    #    ErrorDocument 410 /error/HTTP_GONE.html.var
    #    ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
    #    ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
    #    ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
    #    ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
    #    ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
    #    ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
    #    ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
    #    ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
    #    ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
    #    ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
    
    
    
    # Include of directories ignores editors' and dpkg's backup files,
    # see README.Debian for details.
    
    # Include generic snippets of statements
    Include /etc/apache2/conf.d/
    
    # Include the virtual host configurations:
    Include /etc/apache2/sites-enabled/
    
    #Include phpbb3 settings
    #Include /etc/phpbb3/apache.conf
    
    Code:
    <VirtualHost *:80>
        ServerAdmin xxxx
           ServerName xxxx.selfip.com
        
        DocumentRoot /var/www/
        <Directory />
            Options FollowSymLinks
            AllowOverride None
        </Directory>
        <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
        </Directory>
    
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
        </Directory>
    
        ErrorLog /var/log/apache2/error.log
    
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
    
        CustomLog /var/log/apache2/access.log combined
        ServerSignature On
    
        Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
            Options Indexes MultiViews FollowSymLinks
            AllowOverride None
            Order deny,allow
            Deny from all
            Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>
    
    </VirtualHost>
    
    Code:
    <VirtualHost *>
        ServerAdmin xxxx
        ServerName xx.xxxx.selfip.com
        DocumentRoot /usr/share/wordpress/
    
        <Directory /usr/share/wordpress>
          Options FollowSymLinks
          AllowOverride Limit Options FileInfo
          DirectoryIndex index.php
        </Directory>
    </VirtualHost>
    
    If anyone can offer help, I'd appreciate it.

    Thanks
    Fergal
     
    Certifications: ITIL Foundation; MCTS: Visual Studio Team Foundation Server 2010, Administration
    WIP: None at present
  2. hbroomhall

    hbroomhall Petabyte Poster Gold Member

    6,623
    115
    224
    Not easy - as there are parts missing there! (I know that including them would make the post even bigger!)

    In particular - the Listen and NameVirtualHost definitions are presumably in an un-shown file.

    My guess here is that the middle block is not in fact being included.

    httpd -S is a useful command to see just how the config files are being parsed.

    Harry.
     
    Certifications: ECDL A+ Network+ i-Net+
    WIP: Server+
  3. Fergal1982

    Fergal1982 Petabyte Poster

    4,196
    171
    211
    Yeah, they are elsewhere, in ports.conf:

    Code:
    # If you just change the port or add more ports here, you will likely also
    # have to change the VirtualHost statement in
    # /etc/apache2/sites-enabled/000-default
    
    NameVirtualHost *:80
    Listen 80
    
    <IfModule mod_ssl.c>
        # SSL name based virtual hosts are not yet supported, therefore no
        # NameVirtualHost statement here
        Listen 443
    </IfModule>
    I dont seem to have httpd on this machine, and its not listed as indicated in apt-cache.
     
    Certifications: ITIL Foundation; MCTS: Visual Studio Team Foundation Server 2010, Administration
    WIP: None at present
  4. hbroomhall

    hbroomhall Petabyte Poster Gold Member

    6,623
    115
    224
    Ah - I thought they might have those values - but couldn't be sure.

    I'd definitely suggest that the middle code block is not being included somewhere. Also in the third code block the VH is * not *:80 - any reason?

    And finally - the actual filename of the Apache server binary is httpd! (Unless the distro has done something *really* stupid!)

    Harry.
     
    Certifications: ECDL A+ Network+ i-Net+
    WIP: Server+
  5. Fergal1982

    Fergal1982 Petabyte Poster

    4,196
    171
    211
    I believe thats how i set it up initially, without the :80. Its not an issue though, I can have it in or not, since it should be going through port 80 anyway.

    httpd! didnt work either (its Debian Lenny I'm on, if that helps). Im really not sure what the deal is with this though. None of the VH's are being properly served, but the conf file has a reference to sites-enabled correctly (as far as I can tell)
     
    Certifications: ITIL Foundation; MCTS: Visual Studio Team Foundation Server 2010, Administration
    WIP: None at present
  6. hbroomhall

    hbroomhall Petabyte Poster Gold Member

    6,623
    115
    224
    Unless you are trying to do something special it should match the NameVirtualHost setting.
    In what way didn't httpd work? (And - by the way - the exclaimation mark wasn't part of the filename - it was me being slightly surprised <grin>)

    I'd suggest that some update has mangled some of the file inclusion stuff - perhaps putting them back to 'Debian standard' - so you'll need to check all the Includes carefully.

    Harry.
     
    Certifications: ECDL A+ Network+ i-Net+
    WIP: Server+
  7. hbroomhall

    hbroomhall Petabyte Poster Gold Member

    6,623
    115
    224
    Incidentally - breakages like this will be common on non-stable platforms! :ohmy

    Harry.
     
    Certifications: ECDL A+ Network+ i-Net+
    WIP: Server+
  8. Fergal1982

    Fergal1982 Petabyte Poster

    4,196
    171
    211
    yeah i figured as much, but I did it to try and get a different piece of software working (not that it did mind).

    httpd just gives me a command not found error.
     
    Certifications: ITIL Foundation; MCTS: Visual Studio Team Foundation Server 2010, Administration
    WIP: None at present
  9. hbroomhall

    hbroomhall Petabyte Poster Gold Member

    6,623
    115
    224
    Then it isn't in your path. You will need to include the full path (whatever that is on Lenny). If you aren't sure what that is, either try man httpd or look in the scripts in /etc/init.d/apache2 for some idea.

    Harry.
     
    Certifications: ECDL A+ Network+ i-Net+
    WIP: Server+
  10. Fergal1982

    Fergal1982 Petabyte Poster

    4,196
    171
    211
    nope. its not there. at all. no man file for it, and /etc/init.d/apache2 isnt a directory. httpd just plain isnt there.

    This is pissing me off. there is no apparent reason for this breakdown. None of the VH settings had changed recently. And I've compared the old and current apache2.conf files, both of which look fine. I even swapped them over with no joy.

    Its definately looking at the sites-enabled files, as whenever I set the second vh file to *:80 as well, it starts bitching about duplicates.
     
    Certifications: ITIL Foundation; MCTS: Visual Studio Team Foundation Server 2010, Administration
    WIP: None at present
  11. Mitzs
    Honorary Member

    Mitzs Ducktape Goddess

    3,282
    73
    152
    Certifications: Microcomputers and network specialist.
    WIP: Adobe DW, PS
  12. hbroomhall

    hbroomhall Petabyte Poster Gold Member

    6,623
    115
    224
    Very odd. Looking at your config I see the Serverroot is /etc/apache2 (which is a little unusual!). Are there no bin and/or sbin directories there?
    Alternatively do a 'find' from root for apachectl. That is a script that usually starts the server and will tell you where it is.
    Something is very odd - as your scripts show different ServerName values. What is the exact error message?

    Harry.
     
    Certifications: ECDL A+ Network+ i-Net+
    WIP: Server+
  13. hbroomhall

    hbroomhall Petabyte Poster Gold Member

    6,623
    115
    224
    I've been doing some digging and it appears that on Debian /etc/init.d/apache2 is a control script file. Have a look in that for a clue as to the location and name of the server.

    Harry.
     
    Certifications: ECDL A+ Network+ i-Net+
    WIP: Server+
  14. Fergal1982

    Fergal1982 Petabyte Poster

    4,196
    171
    211
    Ok, I got the output:

    Code:
    VirtualHost configuration:
    wildcard NameVirtualHosts and _default_ servers:
    *:80                   is a NameVirtualHost
             default server obsidianphoenix.selfip.com (/etc/apache2/sites-enabled/000-default:1)
             port 80 namevhost obsidianphoenix.selfip.com (/etc/apache2/sites-enabled/000-default:1)
             port 80 namevhost blog.obsidianphoenix.selfip.com (/etc/apache2/sites-enabled/blog:1)
             port 80 namevhost rpg.obsidianphoenix.selfip.com (/etc/apache2/sites-enabled/rpg:1)
             port 80 namevhost zhongwen.obsidianphoenix.selfip.com (/etc/apache2/sites-enabled/zhongwen:1)
    Syntax OK
    
    I dont know how I managed it, but I think i've got it working again.

    Although if someone fancies going to my blog to check, that would be great.
     
    Certifications: ITIL Foundation; MCTS: Visual Studio Team Foundation Server 2010, Administration
    WIP: None at present
  15. Mitzs
    Honorary Member

    Mitzs Ducktape Goddess

    3,282
    73
    152
    I accessed your blog fergal and it let me leave a reply. Good job fergal!:)
     
    Certifications: Microcomputers and network specialist.
    WIP: Adobe DW, PS
  16. Fergal1982

    Fergal1982 Petabyte Poster

    4,196
    171
    211
    cheers for letting me know Mitz. Good to know its actually working again.
     
    Certifications: ITIL Foundation; MCTS: Visual Studio Team Foundation Server 2010, Administration
    WIP: None at present

Share This Page

Loading...