2012-05-25 40 views
1

我想在Apache 2.6.6運行的Django 1.3.1,使用mod_wsgi的,CentOS的6Django的:Apache的DocumentRoot的不存在

我有變化httpd.conf文件:

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> 

因此,我粘貼我的Apache配置(只有我添加的代碼)。這是在/etc/httpd/conf/httpd.conf

我現在可以重新啓動Apache而沒有任何錯誤,但網站尚不可見。不幸的是,我無法運行sudo a2enmod wsgi,我正在使用cenos 6和a2enmod不可用。但我確定它已經安裝,因爲我訂購了vps,只是不確定它是否在運行。我會查一下。

我現在的問題是什麼網址應該是查看網站?它是值的形式ServerName,或ip address/ServerName value?我可以使用ip地址嗎?因爲我想運行網站,並確保在切換域之前一切正常,因爲現在在該域下是我正在轉移到新服務器的網站。

非常感謝幫助

+0

你在用'DocumentRoot'做什麼? mod_wsgi不使用它,你不應該把你的代碼放在那裏。 –

+0

我正在使用它,因爲它來自於privies服務器的配置文件。但即使我刪除它,Apache不啓動。我得到'[root @ 575283 /]#/etc/init.d/httpd restart 停止httpd:[失敗] 啓動httpd:[失敗] '。 – miszczu

+0

你可以在'/ var/log/apache2/error.log.'找到更多信息。 –

回答

3

不知道自己在做什麼,但這裏有一個示例配置爲你的兄弟:

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> 

創建這個文件並將其命名爲yoursite並把它/etc/apache2/sites-available下。然後運行sudo a2ensite yoursite,它也會被記錄到sites-enabled

這取決於:

  • apache2
  • libapache2-mod-wsgi

確保WSGI是通過運行sudo a2enmod wsgi啓用。

我建議在您的版本控制倉庫中擁有該文件,然後將其從/etc/apache2/sites-available中解壓縮。

另請注意,我爲/ static /創建了一個別名,如果要使用它,請確保您運行的是sudo ./manage.py collectstatic。這會將所有靜態文件放置在/var/www/yoursite/yourproject/static中。

祝你好運。

+0

刪除'DocumentRoot/var/www/yoursite /',你的網站會更安全。 –

+0

WSGIPythonPath是否足夠?你能詳細說明安全方面嗎? –

+0

註釋掉WSGIScriptAlias和所有源代碼,包括settings.py中的密碼可供下載。通過將DocumentRoot設置爲您的站點代碼與Apache的權限結構在一起的位置,意味着配置中的一個簡單的東西可能會暴露給您。因此從不建議將DocumentRoot設置爲您的代碼所在的位置。 –