Search code examples
djangoapachedocument-root

Django: Apache DocumentRoot does not exist


I'm trying to run Django 1.3.1 on apache 2.6.6, using mod_wsgi, CentOS 6.

I have change httpd.conf file:

WSGIPythonPath /var/www/vhosts/domain.co.uk
<VirtualHost *:80>
  #ServerName domain.co.uk
  ServerName 46...233

  ##DocumentRoot /var/www/vhosts/domain.co.uk/httpdocs

  LogLevel debug
  ErrorLog /var/www/vhosts/domain.co.uk/logs/error.log
  CustomLog /var/www/vhosts/domain.co.uk/logs/access.log combinedio

  HostnameLookups Off

  UseCanonicalName On

  WSGIScriptAlias / /var/www/vhosts/domain.co.uk/sites/somod/apache/django.wsgi
  WSGIDaemonProcess somod:80 user=somod group=psaserv processes=1 threads=1
  WSGIProcessGroup somod:80
  #WSGIPythonPath /var/www/vhosts/domain.co.uk

  Alias /robots.txt /var/www/vhosts/domain.co.uk/sites/templates/robots.txt
  Alias /favicon.ico /var/www/vhosts/domain.co.uk/sites/media/favicon.ico

  <Directory "/var/www/vhosts/domain.co.uk/httpdocs">
    AllowOverride None
    Options -ExecCGI -Includes -FollowSymLinks -Indexes
    Order allow,deny
    Allow from all
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
  </Directory>

  <Directory "/var/www/vhosts/domain.co.uk/sites">
    AllowOverride None
    Options +ExecCGI -Includes +FollowSymLinks -Indexes
    Order allow,deny
    Allow from all
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
  </Directory>

  Alias /media "/var/www/vhosts/domain.co.uk/media"
  <Location "/media/">
    SetHandler None
  </Location>
</VirtualHost>

So I paste my apache config (only code which I add). This is in /etc/httpd/conf/httpd.conf.

I can restart apache now without any errors, but website isn't visible yet. Unfortunately I couldn't run sudo a2enmod wsgi, I'm using cenos 6 and a2enmod isn't available. But I'm sure it has been install, because I order vps with it, just not sure it's running. I will check it.

My question now is what url should be to view website? Is it value form ServerName, or ip address/ServerName value? Can I use ip address in? Because I want run website and make sure everything is ok before I switch domain, because right now under this domain is website which I'm moving to new server.

Many thanks for help


Solution

  • Don't know what you're doing, but here's a sample config for you brother:

    WSGIPythonPath /var/www/yoursite
    <VirtualHost *:80>
        ServerName yoursite.com
        ServerAlias testing.yoursite.com
    
        Alias /static/ /var/www/yoursite/yourdjangoproject/static/
        # Alias /sitemap.xml /var/www/yoursite/yourdjangoproject/static/sitemap.xml
        WSGIScriptAlias / /var/www/yoursite/yourdjangoproject/wsgi.py
    
        <Directory />
            AllowOverride None
            Options -Indexes
        </Directory>
    
        <Directory /var/www/yoursite/.git/>
            Deny From All 
        </Directory>
    
        LogLevel info
        ErrorLog /var/log/apache2/yoursite-error.log
        CustomLog /var/log/apache2/yoursite-access.log combined
    </VirtualHost>
    

    Create this file and name it yoursite and put it under /etc/apache2/sites-available. Then run sudo a2ensite yoursite and it will be palced un sites-enabled, too.

    This depends on:

    • apache2
    • libapache2-mod-wsgi

    Make sure wsgi is enabled by running sudo a2enmod wsgi.

    I recommend having the file in your version control repo, and then symlinking it from /etc/apache2/sites-available.

    Also note that I've created an alias for /static/ and if you want to use that, make sure you run sudo ./manage.py collectstatic. This will place all static files in /var/www/yoursite/yourproject/static.

    Good luck.